Open Tracked/Integrations/How to send offline conversions from your CRM to Meta and Google Ads

How to send offline conversions from your CRM to Meta and Google Ads

A lead is not the sale. Capture the click ID and the contact data at the form, store them in the CRM, and send each stage back to the ad platforms.

5 min read · Updated October 26, 2026

LLead formCCRM stage changesMeta and Google Ads
In this guide
Key takeaways
  • Offline conversions send what happened after the lead, such as qualified or won, back to the ad platform that brought the lead.
  • You need two things at the form: the click identifiers (gclid, fbc, fbp) and the contact data (hashed e-mail, phone).
  • Without them the platform cannot link the stage to the ad, so capture them first and send later.

Ad platforms optimise for the conversion you tell them about. If that conversion is a form fill, they find more people who fill forms, including those who never buy. If you tell them which leads became customers, they learn to find more of those. That is the idea behind offline conversions. The flow is the same for most businesses, from lead-generation to B2B: capture, store, stage, send. See also Facebook offline conversions using server GTM and Google Ads offline conversions.

Step 1: capture at the form

When a visitor submits a lead form, save these along with the lead:

FieldUsed forWhere it comes from
gclid (and wbraid, gbraid)Google Ads matchingThe landing page URL or a first-party cookie
fbc and fbpMeta matchingMeta's cookies, or built from fbclid
E-mail and phoneMatching on both platformsThe form, hashed with SHA-256 before sending
Timestamp of the form fillEvent timeYour server
Lead IDDedupe and later updatesYour CRM

Capturing the click ID is the hard part. Safari may strip it (see Safari removes click IDs), and a multi-page journey can lose it before the form. A server container can read the parameters on the first request and store them against a first-party cookie. With Open Tracked, Click ID Restorer and Cookie Keeper (both on every plan) help keep the identifiers alive until the form is sent.

For online stores

Orders from your store, back to the ad that earned them

Your store sends the order once. Open Tracked passes it on to each ad platform, cleaned and deduplicated.

Step 2: store in the CRM

Add hidden fields to the form, or send the data to the CRM in the same request, so each lead record has the identifiers and hashed contact data. Keep the original timestamp. Do not store plain e-mail in a place where hashing will be forgotten.

Step 3: define the stages

Pick two to four stages that predict revenue. For example: qualified, meeting held, proposal sent, won. Too many stages dilute the signal. Each platform needs a conversion name for each stage.

Ask AI

Ask Ari instead of digging through reports

Ari reads your tracking and ad data and answers in plain words.

Step 4: send each change

01

Meta

Send a Conversions API event for each stage with the customer data, fbc, fbp, event_time and a custom event name such as QualifiedLead. Use action_source that fits, and the lead ID as event ID. Meta limits how old an event can be, generally about 7 days, with longer allowances for some sources, so send promptly and check Meta's current limits.

02

Google Ads

Upload offline conversions with the gclid (or enhanced conversions for leads with hashed e-mail) and the conversion action name and time. Google allows imports within a window after the click, commonly up to 90 days, so check the current rule.

03

From a server container

Your CRM calls a webhook on your tagging server. The server container turns it into the Meta and Google Ads events. See CRM to Facebook Conversions API using webhooks.

How Open Tracked does it

Open Tracked includes a CRM pipeline, so leads and their stages live next to the tracking. When a lead moves from one stage to the next, the stage is sent back to Meta and Google Ads as an offline conversion, with the identifiers saved at the form. If you already use another CRM, you can send stage changes by webhook to your tagging server instead. The Request Delay power-up (Business plan) can hold a request for 1 to 2,000 minutes, which helps when you need to adjust timing.

Step 5: check that it arrives

  1. Move a test lead through each stage.
  2. Open Meta Events Manager, Test Events, and see the custom event with its match keys.
  3. Check Google Ads conversions for the uploaded action after a few hours.
  4. Compare the number of "won" events with the sales in your CRM each week.

Mistakes that lose data

SymptomStages arrive but never match
Likely causeThe click ID or the hashed contact data was not stored on the lead.
FixAdd them to the form and test with one lead end to end.
SymptomDuplicate conversions
Likely causeThe same stage is sent twice, for example on every CRM save.
FixSend only when the stage changes and use the lead ID as an event ID.
SymptomEvents rejected as too old
Likely causeYou send stages in a nightly batch weeks late.
FixSend at the time of the change, or at least within the platform's window.
SymptomHashing errors
Likely causeE-mail is not trimmed or lower-cased before hashing.
FixNormalise, then hash with SHA-256. See Meta event match quality.
SymptomConsent not recorded
Likely causeYou send personal data with no record of consent.
FixStore the consent with the lead and send only when it allows it.
0 of 6 done
The short version

3 things to remember

Scroll and the points stack up.

01

Offline conversions send what happened after the lead, such as qualified or won, back to the ad platform that brought the lead.

02

You need two things at the form: the click identifiers (gclid, fbc, fbp) and the contact data (hashed e-mail, phone).

03

Without them the platform cannot link the stage to the ad, so capture them first and send later.

Frequently asked questions

What is an offline conversion?

A conversion that happens outside the website, such as a deal won in a CRM, reported back to an ad platform.

Do I need the click ID?

It helps matching a lot, especially for Google Ads. Hashed e-mail and phone also work for both platforms.

How soon should I send a stage?

As soon as it changes. Platforms limit how old an event may be.

Can I use any CRM?

Yes, if it can call a webhook or an API when a stage changes. Open Tracked also has its own CRM pipeline.

Does this need consent?

You are sending personal data to ad platforms, so you need a lawful basis, usually consent for advertising.

Do I need spreadsheets to read my results?

No. Once tracking is live, the Open Tracked analytics shows spend, revenue, ROAS and profit, and you can ask Ari, the built-in AI assistant, questions about your own numbers in plain words. Ari's allowance depends on your analytics plan.

Is Open Tracked different from Open Track or Open Space Track?

No. Open Tracked is the official name of our server-side tracking platform, and the website is opentracked.io. Many people search for it as Open Track, OpenTrack or Open Space Track. All of them lead to the same product: server-side Google Tag Manager hosting, first-party analytics and a CRM pipeline.

Fix your tracking at the source

Open Tracked hosts your server-side Tag Manager, keeps first-party cookies alive and shows what each ad is really worth.

Open Tracked
Written by

The Open Tracked team

We build Open Tracked: server-side tracking hosting, analytics and the tools around them, for stores that spend on ads. Questions about this guide, or an idea for the next one?

Write to us Read the docs

Was this article helpful?

Comments

Loading comments...

Turn better tracking into better marketing performance

Start free