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.

90 days Google keeps a GCLID for offline uploads
6 h minimum wait after a click before an upload is accepted
2 h wait after creating a Microsoft offline goal

TL;DR

Who this is for

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

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

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.

Google Ads logoGoogle Ads Google Data Manager API Microsoft logoMicrosoft Advertising Meta logoMeta Pixel and Conversions API HubSpot logoHubSpot Salesforce logoSalesforce Google Tag Manager logoGoogle Tag Manager Google BigQuery logoBigQuery Zapier logoZapier

Logos via the Simple Icons project. Trademarks belong to their owners; no endorsement implied.

Proof you can check before you call

John's published thinking on conversion data, plus a free tool that checks your tags before we touch the CRM side.

Free tool
Marketing Analytics Auditor: checks tags, pixels, consent, and the data layer
Article
Conversion tracking is your competitive moat
Q&A
Infrequent, high-value offline conversions hindering bidding
Q&A
Are Google Ads enhanced conversions worth setting up?
Q&A
How delayed is conversion tracking in Google Ads?
Video
How to fix conversion tracking (for beginners)

Frequently asked questions

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.
We respond within 1 business day. No spam, ever. Read our privacy notice.

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

  1. 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.
  2. Fix discrepancies and errors in offline conversion imports — Google Ads Help
    The 90-day GCLID limit, the six-hour rule, and processing delays by identifier.
  3. Set up offline conversions using Google Click ID (GCLID) — Google Ads Help
    Capturing the GCLID at the form and storing it with the lead.
  4. Configure the Google tag for enhanced conversions for leads — Google Ads Help
    Collecting hashed form data on the website so CRM uploads can match.
  5. About enhanced conversions — Google Ads Help
    How Google matches hashed first-party data to signed-in users.
  6. How to adjust your conversions — Google Ads Help
    Restating values and retracting cancelled conversions after upload.
  7. About conversion value rules — Google Ads Help
    Conditions, campaign types, and how Smart Bidding uses adjusted values.
  8. About primary and secondary conversion actions — Google Ads Help
    Which conversions feed bidding and which are reporting only.
  9. Data Manager API: events overview — Google for Developers
    The event types the Data Manager API accepts for Google Ads.
  10. Data Manager API: events.ingest reference — Google for Developers
    Field reference for GCLID, GBRAID, WBRAID, user data, and consent.
  11. Data Manager API: field mappings from the Google Ads API — Google for Developers
    Field-by-field guide for migrating legacy upload scripts.
  12. Monitor offline data diagnostics — Google for Developers
    Seven-day success, failure, and pending counts for imports.
  13. OfflineConversion data object — Microsoft Learn
    MSCLKID, UTC timestamps, the 90-day limit, and hashed identifiers.
  14. ApplyOfflineConversions service operation — Microsoft Learn
    The two-hour wait, 1,000-per-request limit, and reporting delay.
  15. Offline Conversion record (Bulk) — Microsoft Learn
    Restate and Retract adjustments for Microsoft offline conversions.
  16. OfflineConversionGoal data object — Microsoft Learn
    Conversion windows, count types, and external attribution settings.

Standards & policy

  1. Event and Conversion API (ECAPI) — IAB Tech Lab
    The industry standard for server-to-server conversion events.
  2. EU user consent policy — Google
    The consent Google requires before you share EEA and UK user data.
  3. FIPS 180-4: Secure Hash Standard — NIST
    The SHA-256 specification every platform uses for hashed matching.
  4. E.164: The international public telecommunication numbering plan — ITU-T
    The phone number format to normalize to before hashing.

Leading tools

  1. Conversions API Tag for Google Tag Manager — Meta (GitHub)
    Meta's official server-side GTM tag for Conversions API events.
  2. Conversions API parameter builder — Meta (GitHub)
    Meta's library for building fbc, fbp, and customer parameters correctly.
  3. Meta Business SDK for Python — Meta (GitHub)
    Official SDK for sending CRM events to the Conversions API.
  4. Google Tag Assistant — Google
    Confirms click IDs and consent states reach Google before upload.

Expert guides

  1. Server-side tagging in Google Tag Manager — Simo Ahava
    The standard guide to the server container that often hosts CAPI.
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.

Launch the auditor Talk to John