- Offline conversion tracking sends outcomes from your CRM (qualified leads, sales and their value) back to the ad platform that bought the click, so bidding learns from customers who pay rather than from form fills.
- In Google Ads, use enhanced conversions for leads: the tag captures hashed contact details on the form, and you upload qualified leads and sales daily through Data Manager, with the GCLID where you have it.
- In Meta, send the same events through the Conversions API alongside the Pixel with a shared event ID; leads from Meta lead ads can use the Conversions API for CRM.
- Browser tracking misses conversions because of offline sales, cookie limits, declined consent, ad blockers, device switching and broken tags.
- Check it weekly: Google's diagnostics report, Meta's Event Match Quality, and a count of platform-reported conversions against the sales your CRM recorded.
Offline conversion tracking means sending the outcomes your CRM records (a qualified lead, a won deal, a sale and its value) back to Google Ads and Meta, matched to the ad click that started them. In Google Ads the current method is enhanced conversions for leads, the upgraded form of offline conversion imports; in Meta it is the Conversions API. Done properly, each platform's bidding learns from the customers who pay, not from every form that gets filled in.
What is offline conversion tracking?
Businesses that sell through enquiries have a gap between the ad and the money. Someone clicks, fills in a form or calls, and the sale happens days or weeks later, on a sales call, in a showroom or when a contract is signed. The ad platform's tag sees the form, never the sale.
That matters because ad platforms optimise towards whatever you tell them is a conversion. If every form counts the same, bidding hunts for cheap forms, time-wasters included. Tell it which leads qualified and what each sale was worth, and it hunts for buyers. Google's own figure: advertisers bidding on conversion value who add enhanced conversions see, on average, an 8% incremental gain in return on ad spend on Search campaigns, across 99 conversion lift studies run between April 2024 and April 2025 (Google). It is a platform's figure about its own product, but the direction is clear.
A worked example shows why. Say a services group with several branches spends £12,000 a month across two Google campaigns:
| Example | Campaign A | Campaign B |
|---|---|---|
| Spend | £6,000 | £6,000 |
| Form fills | 150 | 80 |
| Cost per lead | £40 | £75 |
| Sales recorded in the CRM | 5 | 12 |
| Cost per sale | £1,200 | £500 |
Judged on form fills, Campaign A wins and bidding pushes money towards it. Judged on sales (assuming similar sale values), Campaign B is more than twice as efficient. The platform only sees the second view if you send it the sales. That takes three moves:
- Capture identifiers when the lead arrives: the ad's click ID and the contact details the person typed in.
- Store both with the lead in your CRM, with each stage it reaches and its value.
- Send those stages to Google and Meta daily, so each can match them to its own clicks.
Why browser tracking loses conversions
Even website conversions are under-counted when the only tracking is a tag in the browser. The usual causes:
- Sales that happen off the site. Phone orders, sales calls, quotes accepted by email and in-person sales are invisible to a pixel.
- Cookie limits. Safari deletes cookies set by scripts after seven days without a visit, and cuts that to 24 hours on pages reached through tracking-decorated links from sites it classes as trackers (WebKit). A buyer who returns after ten days looks like a stranger.
- Declined consent. Visitors who reject marketing cookies are not tracked by the tag in the usual way.
- Ad blockers and privacy tools that stop tags loading at all.
- Switching devices. A click on a phone at lunchtime, an enquiry from a laptop that evening.
- Broken tags. A new form, a redesign or a consent banner update quietly stops a tag firing. In WordStream's analysis of 15,666 Google Ads accounts (2025 data), about 29% recorded zero conversions over 90 days, and the study names missing conversion tracking as one obvious reason (WordStream).
Server-side tracking (server-side Google Tag Manager, or Google tag gateway serving the tag from your own domain) gets more browser events through, but still only sees the website. Sending CRM outcomes is what closes the gap between form and sale.
Before you start: what your CRM needs to hold
Platforms match uploads to their clicks using identifiers. If the CRM does not store them when the lead arrives, nothing can be matched later.
| Field | How you capture it | Used by |
|---|---|---|
| Google click ID (GCLID) | Auto-tagging on in Google Ads; a hidden form field reads gclid from the landing page address | Google Ads |
| Email and phone | Form fields, normalised and hashed with SHA-256 before upload (most connectors do this for you) | Google and Meta |
| Meta click ID (fbc) and browser ID (fbp) | fbclid from the landing page address and the _fbp cookie, stored with the lead | Meta |
| Meta lead ID | Synced from Meta lead ads (Instant Forms) | Meta's Conversions API for CRM |
| Stage and stage date | Your CRM pipeline: lead, qualified, won, lost | Both |
| Value | Sale value, ideally gross profit from finance | Both |
| Deal or order ID | The CRM record ID | Deduplication in both |
Settle two more things first. Agree the stages you will send, each with one written definition. And check your privacy notice and consent set-up: Google asks advertisers to "get consent where required by law or any applicable Google policies", and sharing even hashed contact details needs a lawful basis under UK GDPR. Your data protection lead should sign this off.
Google Ads offline conversion tracking, step by step
Offline conversion import (uploading sales matched by GCLID) still exists, but Google now describes enhanced conversions for leads as "an upgraded version of offline conversion import that uses user-provided data, such as email addresses, to supplement imported offline conversion data" (Google Ads Help). Google reports that advertisers who sent first-party data such as email addresses and phone numbers alongside GCLIDs saw a median 10% increase in conversions compared with standard offline imports.
Two 2026 changes matter. Since April, Google Ads accepts contact data from the tag, Data Manager and API connections together, as enhanced conversions for web and for leads merge into one setting. Since 15 June, API uploads go through the Data Manager API rather than the Google Ads API (About offline conversion imports). If someone built your upload on the old API, check it was moved.
- Prepare the account. Accept the Customer Data Terms and turn on auto-tagging, so every ad click carries a GCLID.
- Create one conversion action per stage, for example "Qualified lead" and "Won sale", with the source set to import from clicks. Keep your existing form-fill action for now.
- Turn on user-provided data in the Google tag on every page with a lead form (through gtag.js, Google Tag Manager or Google tag gateway), so the hashed email or phone is captured at the moment of enquiry.
- Store the GCLID with the lead. Google says to include it "whenever possible", and it is required if you are not using the tag to collect contact data.
- Prepare the data. Lowercase and trim emails, put phone numbers in international E.164 format (+447700900123), and hash with SHA-256 if your tool does not. Use the time each stage was actually reached, with its time zone, and include a value.
- Upload daily. Data Manager connects to HubSpot, Salesforce, Google Sheets, BigQuery and other sources; the Data Manager API and Zapier are the other routes. Google's implementation checklist strongly recommends daily uploads, and says to upload every conversion for the action, including those not driven by Google Ads.
- Run the new actions as secondary first. The same checklist suggests two to three weeks as secondary while you check the data. Then make the qualified or won action primary and move bidding towards value once volume allows.
Mind the clock. A conversion matched by GCLID can be uploaded up to 90 days after the click; one matched on contact data alone, up to 63 days (Offline conversion imports FAQs). Google drops duplicates with the same GCLID, conversion name and time, and lets you adjust a conversion for up to 55 days. If your sales cycle runs longer, make an earlier stage such as "qualified" the main signal. Send gross profit as the value where you can; what a good ROAS is explains why.
Offline conversion tracking in Google Analytics
GA4 can also take offline events, through event data import or the Measurement Protocol, matched on client ID or user ID. That helps reporting. For bidding, send the outcome to Google Ads directly through enhanced conversions for leads.
Meta Conversions API, step by step
Meta's Conversions API (often called Facebook CAPI) is a server-to-server connection between "an advertiser's server, website platform, mobile app, or CRM" and the Meta systems that "optimize ad targeting, decrease cost per result and measure outcomes" (Meta for Developers). In April 2026 Meta reported that advertisers with a Conversions API set-up for web events saw an average 17.8% lower cost per result than those without, as reported by PPC Land. That compares two groups of advertisers; it is not a controlled test. Meta lists its old Offline Conversions API as legacy; offline events now use the Conversions API.
- Pick an integration route. Many CRMs, ecommerce platforms and tag managers have a built-in Meta connection; Meta also offers the Conversions API Gateway, or a developer can send events straight from your server. Choose the simplest route that can send CRM stages, not just website events.
- Run it alongside the Pixel. Meta's advice is to "Use the Conversions API in addition to the Meta Pixel, and share the same events using both tools" (Meta best practices). Give each event the same event_name and event_id in both, so Meta counts it once.
- Send customer information. Include hashed email and phone, plus fbc, fbp, IP address and browser user agent where you have them, and your CRM ID as external_id. More matching keys generally means more events matched.
- Send each CRM stage as an event. When a lead qualifies or a sale closes, send an event with the time it happened, its value and currency, and an action_source that says where it happened (for example phone_call, physical_store or system_generated). The event time can be no more than seven days before you send it (Meta), so this has to run daily, not monthly.
- For Meta lead ads, use the Conversions API for CRM. Store the 15 to 17 digit Meta lead ID, send every stage as the lead moves through your pipeline, and optimise with the Conversion Leads performance goal. Meta's fit criteria: at least 200 leads a month, uploads at least daily, the target stage reached within 28 days, and a conversion rate between 1% and 40% (Meta for Developers).
How to check the Conversions API and Google imports are working
Feeds break silently, so check at three levels.
At set-up. Use Meta's Test Events tool to watch server events arrive, and Google Tag Assistant to confirm the tag passes contact data on a test form.
Weekly, in the platforms. In Google Ads, open the enhanced conversions for leads diagnostics report, which grades the set-up as Excellent, Good, Needs attention or Urgent, and segment campaigns by the new action using the "All conv. (by conv. time)" column. In Meta Events Manager, check the deduplication rate, event freshness and Event Match Quality, which is scored from 1 to 10; Meta suggests aiming for 6.0 or higher (Meta for Developers).
Weekly, against the CRM. This is the check most set-ups skip. Count the qualified leads and sales your CRM attributes to Google and to Meta, and compare them with what each platform reports. They will never match exactly: match rates are never 100% and each platform uses its own attribution window (see cross-channel attribution). What you are looking for is a sudden change in the gap. Marketers rarely take platform figures at face value: in Affinity Solutions' 2026 survey of about 200 senior marketers, mostly in the US, 91% said they believe platform results are overstated (Affinity Solutions).
An example from Orion's demo, on sample data: one site's new booking form stopped Meta's Conversions API Lead event firing. Meta kept spending but optimised blind, and cost per booking rose. The fault surfaced because the view compared what Meta reported with what the CRM recorded, site by site.
Offline conversion tracking checklist
| Check | Google Ads | Meta |
|---|---|---|
| Click ID stored with every lead | GCLID in a hidden field, auto-tagging on | fbc and fbp stored; lead ID for lead ads |
| Contact data hashed correctly | SHA-256; lowercase email; E.164 phone | SHA-256 on personal fields, per Meta's parameter rules |
| Value sent | Gross profit or revenue per conversion | value and currency on every event |
| Upload timing | Daily; within 90 days of the click (63 on contact data alone) | Real time or daily; event time no more than 7 days old |
| Deduplication | Order or deal ID; unique GCLID, name and time | Same event_name and event_id from Pixel and server |
| Data quality | Diagnostics report at Good or Excellent | Event Match Quality of 6.0 or higher |
| Reconciled with the CRM | Imported conversions vs CRM sales from Google, weekly | Meta-reported results vs CRM sales from Meta, weekly |
| Consent and terms | Customer Data Terms accepted; consent where required | Privacy notice covers sharing; consent where required |
Build it yourself or have it built?
- Native CRM connectors (HubSpot, Salesforce and most ecommerce platforms) are enough for one brand, one CRM and one ad account per platform. Start there.
- Zapier-style automations work at low volume, but watch for silent failures and Meta's seven-day limit.
- Server-side tagging improves web event capture but does not send CRM outcomes.
- A built feed earns its cost when you run several brands, ad accounts or CRMs, want to send gross profit rather than revenue, and need someone to notice when the numbers drift apart.
Orion's Intelligence build includes conversion feeds that send sales and gross profit back to Google and Meta, with a daily self-check that flags mismatches. On Growth, keeping tracking accurate and outcomes fed back is part of the monthly fee; prices are on the Investment page. Once sales flow back, the same CRM data shows which channels bring customers, including AI search, which our guide to ranking in ChatGPT covers.
See it on a sample business
Orion joins every channel, brand and account into one live view, judged on profit. Open the platform on sample data, or book a 30-minute call about your own numbers.
Questions people ask
What is offline conversion tracking?
Offline conversion tracking sends outcomes recorded outside the website, such as qualified leads, signed contracts, phone orders and in-person sales, back to the ad platform that bought the click. The platform matches each outcome to its own click using a click ID or hashed contact details. Bidding can then learn which ads bring customers who buy, rather than treating every form fill as equally valuable.
How does the Conversions API work?
Meta's Conversions API sends events from your server, CRM or ecommerce platform straight to Meta, instead of relying only on the Pixel in the visitor's browser. Each event carries a name, a time, a value and hashed customer details such as email and phone, which Meta matches to its accounts. Sent alongside the Pixel with a shared event ID, it fills gaps the browser misses and Meta counts each conversion once.
How do you connect a CRM with Meta's Conversions API?
Use your CRM's built-in Meta connection if it has one, or Meta's Conversions API Gateway, or a direct server integration. Store the click and browser IDs (fbc, fbp) or the Meta lead ID with each lead, then send an event each time a lead changes stage, with hashed contact details, value and the time it happened. Events must be sent within seven days of happening, so sync at least daily.
How do you check if the Conversions API is working?
At set-up, use the Test Events tool in Meta Events Manager to see server events arrive. Each week, check the deduplication rate, event freshness and Event Match Quality, where Meta suggests 6.0 or higher. Most importantly, compare the conversions Meta reports with the sales your CRM attributes to Meta. A sudden widening gap usually means a form, tag or feed has stopped sending events.
How do you integrate offline conversion tracking into Google Ads?
Turn on auto-tagging, create a conversion action for each stage you want to count, and enable user-provided data in the Google tag on your lead forms. Store the GCLID with each lead in your CRM. Then upload qualified leads and sales daily through Data Manager, which connects to HubSpot, Salesforce, Google Sheets and BigQuery, or through the Data Manager API, within 90 days of the click.
How do you track offline conversions?
Capture identifiers when the lead arrives (the ad click ID and the contact details typed into the form), store them with the lead in your CRM, and record each stage and its value. Then send those stages to each ad platform every day: Google Ads through enhanced conversions for leads, Meta through the Conversions API. Check weekly that platform figures and CRM records still line up.