Offline Conversion Tracking: Send CRM Outcomes Back to Google Ads, Meta, and Microsoft
A form fill is a guess about revenue. When your real outcome happens in a CRM days or weeks later, the ad
platforms never see it unless you send it back. John Williams builds that return path so bidding learns from
qualified pipeline and closed deals, not from whoever typed an email address.
6 h minimum wait after a click before an upload is accepted
2 h wait after creating a Microsoft offline goal
TL;DR
The goal is simple: the conversion Google, Meta, and Microsoft optimize toward should be the one your sales
team gets paid on, or the closest stage that happens often enough to bid on.
Since April 2026 Google Ads accepts user-provided data from tags, Data Manager, and the API at the same
time; in June 2026 enhanced conversions for web and for leads became one on/off setting; and since June 15,
2026 offline and enhanced-conversions-for-leads uploads go through the Data Manager API (Google Ads Help).
We capture click IDs (GCLID, GBRAID, WBRAID, MSCLKID, fbc) and consented first-party data at the form, store
them on the CRM record, and send stage changes back on a daily schedule or faster.
Values matter as much as counts. We pass real or expected deal values, restate them when deals close, and
only add conversion value rules where the CRM proves a segment is worth more.
Consent is carried with the data. Nothing we build sends a user's data to an ad platform that the user
declined.
Who this is for
Lead-gen businesses (legal, home services, insurance, B2B, healthcare, education) where most form fills never
become customers.
Advertisers running Target CPA or Maximize conversions on raw leads and watching lead volume rise while sales
stay flat.
Companies with a sales cycle longer than a few days, where the purchase happens over the phone, in a showroom,
or in a signed contract.
Teams using HubSpot, Salesforce, Zoho, or a custom CRM who already store lead stages but never send them
anywhere.
Anyone whose old Google Ads API upload script needs moving to the Data Manager API.
If you sell online and checkout happens on your site, you probably need enhanced conversions and clean purchase
tags first. Our conversion tracking audit will
tell you which problem you actually have.
What's included
Stage map. Every CRM lead stage, how often it happens, how long after the click, and which
one should drive bidding.
Capture layer. Hidden form fields that store click IDs, landing page, and timestamp on the
CRM lead record.
Google Ads pipeline. Enhanced conversions for leads turned on, an import conversion action
per stage, and uploads through Data Manager (the no-code connectors or the Data Manager API), with consent
fields set.
Meta pipeline. Conversions API events for CRM stages, with hashed customer information and
the correct action_source, deduplicated against the Pixel where both send the same event.
Microsoft pipeline. An offline conversion goal and scheduled uploads keyed on MSCLKID, with
hashed email or phone where available.
Value design. Expected values per stage, adjustments when the real number arrives, and value
rules only where data supports them.
Monitoring and runbook. Weekly checks of upload diagnostics on all three platforms, alerts
when uploads stop, and a document showing how to add a stage without breaking bidding.
How John builds an offline conversion pipeline
Pick the bidding stage
We pull six to twelve months of CRM data and look at each stage: volume, delay from click, and how well it
predicts revenue. The deepest stage that still happens often enough for the campaign to learn from becomes
Primary. A stage that happens twice a month can't steer a bid strategy, however valuable it is.
Capture identifiers at the form
The form has to keep the click ID that auto-tagging adds. We store the GCLID plus GBRAID and WBRAID, which
Google uses for iOS traffic: GBRAID for app events and WBRAID for web events (Data Manager API reference). We also store the MSCLKID and Meta's fbc value, and, with consent, hashed email and phone as a fallback.
Build the Google Ads upload
Uploads go to an import conversion action of type UPLOAD_CLICKS. Each event needs a click
identifier, or session attributes, or user data, plus a timestamp and an event source (Data Manager API: send events). Google only keeps a GCLID for 90 days. Conversion times before the click are rejected, and so are clicks
less than six hours old (Fix offline import errors). We schedule uploads at least daily so deals don't age out.
Add Meta and Microsoft
For Meta, CRM stages go through the Conversions API. Store sales use action_source set to
physical_store, and Meta deduplicates offline events only against other offline events, using
order_id or matching user data (Meta: offline events). For Microsoft, the conversion time has to fall within the last 90 days, after the click, and inside the
goal's conversion window. A request carries up to 1,000 conversions (OfflineConversion,
ApplyOfflineConversions).
Send values, then correct them
A qualified lead carries an expected value. When the deal closes we restate it, and when it's cancelled we
retract it, using Google's conversion adjustments (How to adjust your conversions) and Microsoft's Restate and Retract adjustment types.
Switch bidding gradually
The new conversion runs as Secondary until volume and delay look stable, then becomes Primary, one campaign
group at a time. We judge it on cost per qualified lead, not the platform's CPA.
Monitor every week
Google's offline data diagnostics show successful, failed, and pending uploads for the last seven days, and
pending events can take up to 24 hours (Monitor offline data diagnostics). We check those, Microsoft's upload responses, and Meta's event quality, and alert on silence.
Common offline tracking mistakes John fixes
Click IDs dropped at the form. The GCLID reaches the landing page and is lost on the next
page view or stripped by a redirect.
Uploading after the window. Deals that close at day 120 can't attach to a GCLID Google
stopped keeping at day 90. The fix is an earlier stage that happens inside the window, not a longer wait.
Time zone errors. Conversion times sent in the wrong zone land before the click and are
rejected. Microsoft requires UTC; Google needs the offset.
The same lead counted three ways. A website lead tag, a GA4 import, and an offline import all
set to Primary for the same action.
Unhashed or badly normalized data. Emails with capital letters or spaces, and phone numbers
without a country code, hash to values that never match.
Still on the legacy upload path. Scripts and connectors calling the Google Ads API for
uploads that, from June 15, 2026, are blocked unless the developer token was allowlisted (About offline conversion imports).
Platform rules that shape the design
The three platforms solve the same problem with different identifiers, limits, and correction tools. These are
the rules we design around, from each platform's documentation as checked on 2026-10-11.
Platform
Identifiers
Timing rules
Corrections
Google Ads
GCLID, GBRAID, WBRAID, session attributes, or hashed user data (enhanced conversions for leads)
GCLID kept 90 days; no uploads for clicks under 6 hours old; processing usually under 12 hours, up to 72
hours for GBRAID/WBRAID
Restatements and retractions through conversion adjustments
Microsoft Advertising
MSCLKID, or hashed email or phone
Conversion within the last 90 days and inside the goal window; wait 2 hours after creating the goal; up to
6 hours to report
Restate and Retract adjustment types
Meta
Hashed customer information (email, phone, name, location), external_id, lead_id for Lead Ads
Daily or real-time uploads recommended
Deduplication by order_id or user data for offline events
Enhanced conversions for leads or plain GCLID import? Google now recommends enhanced
conversions for leads for new setups, and says advertisers who added first-party data alongside GCLIDs saw a
median 10% increase in conversions over standard offline imports (Google Ads Help). That's Google's number, not ours. Our practice is to send both: the click ID when we have it, and hashed
user data when the user consented.
Conversion value rules: use them sparingly
Value rules raise or lower conversion values by audience, location, or device, and Smart Bidding uses the
adjusted values in real time for Target ROAS and Maximize conversion value. All rules in an account must share
the same primary (and optional secondary) condition type (About conversion value rules). Google also notes that Smart Bidding already uses those signals, so a rule only helps when the value
difference is real and isn't already showing up in the values you report. We set rules from CRM evidence, never
from hunches.
Hashing rules are the same everywhere: trim and lowercase emails, format phones in E.164, hash with SHA-256 on
your server, and send only what the user agreed to share.
Pricing and engagement
Offline conversion work is quoted as a flat fee once we've seen your CRM, your forms, and your
current conversion setup. The scope depends on how many platforms and CRM stages are involved and whether we use
a no-code connector or a custom API job, so we don't publish one price. You get a written scope before work
starts. As the pricing page explains, we never charge a percentage of ad spend and there
are no long contracts.
Ongoing monitoring can be added monthly, or your team can run it from the runbook we hand over.
Platforms we work in
The pipeline runs between your CRM and the ad platforms. These are the official products we connect.
Which CRM stage should Google Ads optimize toward?
The deepest stage that still happens often enough for the campaign to learn from, usually a qualified lead or
booked appointment rather than a closed deal. Closed deals are uploaded too, with values, but often as
Secondary until there's enough volume.
Do I still need GCLIDs if I use enhanced conversions for leads?
Keep capturing them. Google matches on hashed user data, but a GCLID is a direct link to the click. Sending
both gives Google two ways to attribute the conversion.
What changed on June 15, 2026?
Google moved offline conversion and enhanced-conversions-for-leads uploads to the Data Manager API and blocked
them in the Google Ads API, apart from developer tokens allowlisted for legacy access. Scripts built on the
old upload methods need migrating.
How long does it take for uploaded conversions to show up?
In Google Ads, processing usually takes under 12 hours and up to 72 hours for GBRAID and WBRAID conversions.
Microsoft says up to six hours. Bidding starts reacting once the conversions appear, so a daily upload
schedule is the minimum.
Can you send offline conversions to Meta without the Pixel?
Yes. CRM events go to Meta through the Conversions API with hashed customer information. If the Pixel also
sends the same event, we deduplicate them so nothing is counted twice.
Is it legal to send customer emails to ad platforms?
Only with the right consent and disclosures for your jurisdiction, and only hashed. We build the pipeline to
respect each user's consent state, but whether your notices and consent flow are adequate is a question for
your legal counsel.
Talk to John about offline conversion tracking
Tell John which CRM you use, what your lead stages are, and which ad platforms you run. You'll get a written
scope.
John, Kristy, or Sandeep will reply.One of the three of us will respond personally within 1 business day. No SDR queue.
Message received.
One of us will reply directly within one business day. While you wait, run a free
Buddy audit on your account.
Top 25 references
The primary sources, standards, research, and tools we rely on for this work. Every link was checked on
2026-10-11. We aren't affiliated with these publishers unless noted.
Official documentation
About offline conversion imports— Google Ads Help The June 15, 2026 Data Manager cutover, plus multi-source user data from April 2026 and the single enhanced
conversions setting from June 2026.
AI disclosure: This page was drafted with AI assistance and edited by a human. Platform limits
and dates are cited to official documentation as checked on 2026-10-11; Google, Microsoft, and Meta change these
often, so confirm against the linked source before acting. Nothing here is legal advice.
Check your tracking before you wire up the CRM.
The free Marketing Analytics Auditor scans tags, pixels, the data layer, and consent mode. No sign-up.