How to Send Offline Conversions From Your CRM to Google Ads and Meta
On this page
- What an Offline Conversion Is
- How Offline Conversion Tracking Works, Step by Step
- What Google Ads and Meta Accept
- Which CRM Events to Send
- Five Lead Paths, and What Each Platform Can Receive
- The No-Code Way With AnyTrack
- Which CRM Do You Use?
- What If the Lead Calls Instead of Filling In a Form?
- Send Each Event From One Place
- Running This for Clients
- How to Verify Your Offline Conversions
Our sales close on the phone. How do we send offline conversions from the CRM back to Google Ads and Meta?
Send each CRM stage that matters (booked call, qualified lead, closed deal) to both platforms as a conversion tied to the ad click that started it. Google Ads takes offline conversions up to 90 days after the click. Meta’s Conversions API takes an event up to 7 days after it happens.
The upload is the easy part. The work is keeping the ad click and the lead’s details attached to the CRM record until the deal closes, then sending each event from one place only.
Why bother? Your ad platforms bid on the context you give them. If the only conversion they see is a form fill, they find more people who fill in forms, including the ones who never answer the phone. Show them the booked call and the closed deal, and they learn what a customer looks like.
What an Offline Conversion Is
An offline conversion is a result that happens away from your website: the sales call, the signed contract, the paid invoice. Your CRM records it. Your ad platforms never see it unless you send it.
To count it against an ad, two records have to meet:
- The ad session. The click, its UTMs, the click ID the platform added to the URL, and the details the lead typed into your form.
- The CRM event. The stage, the date it happened, and the deal value.
How Offline Conversion Tracking Works, Step by Step
This is the vendor-neutral chain. You can build it with native tools, a developer, or a no-code tool. Each link has to hold.
From ad click to closed deal
-
1. Keep the click
The ad URL carries a click ID: gclid (or gbraid, wbraid) from Google Ads, fbclid from Meta. Store it with the UTMs when the visitor lands.
-
2. Pass it into the form
A hidden form field writes the click ID onto the lead, next to the email and phone number the lead types in.
-
3. Keep it on the CRM record
The contact keeps the click ID and contact details through every stage, from new lead to closed deal.
-
4. Send the stage change
When the deal moves, a workflow, a file upload, or an integration sends the event with the click ID, hashed email and phone, the event time, and the value.
-
5. Let the platform match
Google Ads and Meta match the event to the ad click, credit the campaign, and feed the result into bidding.
What Google Ads and Meta Accept
Both platforms take CRM events, on different terms. These are the rules from Google’s and Meta’s own documentation, checked on October 27, 2026.
| Rule | Google Ads | Meta |
|---|---|---|
| Upload route | Enhanced conversions for leads (recommended) or offline conversion import (legacy), by file, Data Manager, or API | Conversions API. The Offline Conversions API is deprecated |
| Match keys | GCLID, GBRAID, WBRAID; hashed email and phone for enhanced conversions for leads | Click ID (fbc) and hashed email, phone, and name; lead ID for Instant Form leads |
| Time limit | ✓ 90 days after the click; 63 days for enhanced conversions for leads | ⚠ 7 days after the event; an older event fails the whole request |
| Counting | ”One” per click for leads, “Every” for sales | One event per stage, deduplicated by event ID within 48 hours |
| Bidding use | Primary actions drive bidding; secondary actions are for observation | Conversion events; “Maximize number of qualified leads” for Instant Form leads |
| Where to check | Offline data diagnostics; up to 12 hours to process, 72 hours for GBRAID and WBRAID | Events Manager, Test Events |
Sources: Google upload guidelines, enhanced conversions for leads, primary and secondary actions, counting, processing times. Meta server event parameters, deduplication, Conversions API for CRM, qualified leads goal.
Which CRM Events to Send
Send the stages that separate good leads from bad ones. Then bid on the deepest stage that still happens often enough for the platform to learn.
| Stage | Example event | Value | Google Ads | Meta |
|---|---|---|---|---|
| New lead | Lead | Optional | Secondary once deeper stages have volume | Required first stage for Instant Form leads |
| Booked call | Schedule | Optional | Secondary, or primary for low-volume accounts | Conversion event |
| Qualified lead | Custom, such as DealQualified | Estimated deal value | Primary when wins are rare | Common optimization stage |
| Closed deal | Purchase | Deal amount | Primary, counted “Every” | Conversion event with value |
Volume decides how deep you can go. Google tells lead-gen advertisers to pick “a single stage of your lead-to-sale funnel” with at least 15 conversions a month (Google). Meta’s learning phase usually ends “after about 50 results in the week” after a significant edit (Meta).
Five Lead Paths, and What Each Platform Can Receive
Your funnel decides what your CRM holds, and that decides what each platform can match. Find your row.
| Lead path | What the CRM holds | Google Ads can receive | Meta can receive | What AnyTrack does |
|---|---|---|---|---|
| Website form, call, deal won 10 days later | Contact with click ID, deal amount | ✓ Closed deal, matched to the click | ✓ Closed deal, sent the day it closes | Matches the deal to the ad session and sends Purchase with the deal amount to both |
| Meta Instant Form, call, deal won | Meta lead ID, stage history | ✗ No Google click | ✓ Each stage through Conversions API for CRM | Records the lead from Meta Lead Ads and sends each mapped stage with the lead ID |
| Inbound phone call, no form | Caller number, call time | ⚠ Call conversion import, with a Google forwarding number | ⚠ Hashed phone only, no click to match | Retreaver passes the AnyTrack Click ID through a custom integration |
| Calendly booking, call, deal won | Booking with click ID, then the deal | ✓ Booking and deal | ✓ Booking and deal | AutoTag adds the Click ID to Calendly links; the booking arrives as Lead |
| Deal won 45 days after the click | Close date 45 days after the click | ⚠ Only if the conversion window is 60 or 90 days | ⚠ Received if sent within 7 days of the close, but not credited to a 45-day-old click | Sends the close when the CRM reports it. AnyTrack’s default maximum window credits the original ad click |
Two rows need a closer look.
- The 45-day close in Google Ads. Google Ads conversion actions count conversions inside their click-through window, which defaults to 30 days and goes up to 90 (Google). Raise it if your sales cycle runs past a month.
- The 45-day close in Meta. Meta receives it, but standard attribution credits an ad only within 7 days of a link click (Meta). So bid on an earlier stage, such as the booked call. For Instant Form leads, that stage must come within 28 days.
- The phone-first lead. Google imports calls from ads and calls to the number on your website, both through Google forwarding numbers (Google). Without a click ID, Meta can only try to match the hashed phone number.
The No-Code Way With AnyTrack
AnyTrack keeps the session and the CRM event together for you. The Tracking Tag records the ad session, and your CRM integration sends each stage to AnyTrack.
AnyTrack then sends the mapped events server-side: to Meta through the Conversion API, and to Google Ads with the Google click ID and hashed customer data.
In Google Ads, AnyTrack creates a conversion action for each standard event, or maps your existing actions of type Website with Manual Setup. In Meta, the events arrive in the dataset you connect.
- Install the Tracking Tag on every landing page and form page.
- Connect your CRM from the Integration Catalog.
- Get the Click ID into the CRM. Use the “AnyTrack Click ID” property in HubSpot, the hidden
_atidfield in GoHighLevel, orc3in LeadByte. - Map each CRM event to an AnyTrack event. In GoHighLevel, every pipeline stage gets its own mapping entry, and each one starts unmapped.
- Connect Google Ads and Facebook Ads, turn on the Conversion API, and map each AnyTrack event to a platform conversion.
- Turn off any other tool that sends the same event. One sender per event.
Each mapped event reaches the platform with its value. In GoHighLevel, the opportunity’s monetary value becomes the conversion value. In HubSpot, the deal amount does.
Plans: the Free plan tracks activity from one conversion source. Sending conversions to ad platforms through the Conversion API starts on Starter. Custom integrations (Webhook, Postback URL, Collect API) start on Personal. See the plan comparison.
Which CRM Do You Use?
AnyTrack connects these CRMs and lead platforms from the Integration Catalog. Each link opens the setup guide.
- HubSpot.
Contact createdmaps toLead,Meeting bookedtoSchedule, and deal stages to deal events with the deal amount as the value. It installs on every plan, Free included. - GoHighLevel. Contacts, appointments, opportunities, orders, and invoices, plus one mapping entry per pipeline stage. See the playbook Send GoHighLevel phone closes to Facebook Ads.
- Systeme.io, ClickFunnels, and ClickFunnels 2.0. Opt-ins, orders, and upsells.
- LeadByte, Phonexa, and ZeroParallel. Lead distribution statuses, from valid lead to sold lead.
- Any other CRM. Send its webhook or postback to a custom integration, directly or through Zapier. The playbook Feed offline lead status to Google Ads with webhooks walks through it.
What If the Lead Calls Instead of Filling In a Form?
A phone call carries no URL, so the click ID has to ride on the phone number. Call-tracking tools do this with a dynamic number per visitor.
- Native route. Google Ads imports call conversions with the caller’s number and the call start time. It covers calls from a call asset or a call-only ad, and calls to your website’s number through a phone snippet. Both use Google forwarding numbers (Google).
- AnyTrack route. The Retreaver guide attaches the AnyTrack Click ID (
atclid) to the dynamic number, passes it to Retreaver, and returns the call result through a custom integration.
Send Each Event From One Place
The fastest way to wreck bidding is to send the same stage twice. These setups double count:
- A GoHighLevel workflow with the Meta Conversion API action, plus AnyTrack sending the same stage.
- Calendly’s Meta Pixel integration, plus AnyTrack sending the booking.
- A GA4 conversion imported into Google Ads, plus a direct Google Ads conversion for the same lead.
- A Zapier zap that uploads conversions, plus a native integration doing the same.
Each tool creates its own event ID, so the platforms can’t tell the copies apart. Meta deduplicates only when the event ID and event name match within 48 hours (Meta).
Running This for Clients
Agencies inherit stacks. Before you add a sender, find the ones already running on the account.
- Audit the senders first. Run the list above on every account you take over. Inherited workflows and old Zapier zaps are the usual double counts.
- Give each client a Property. Connect each client’s CRM to that client’s Property, so data never mixes.
- Give clients their own view. Add the client as an Account Member limited to their Property, with read-only access (team management).
- Report one number. The 7-day reconciliation below is the number you defend in the client meeting.
How to Verify Your Offline Conversions
Check from upstream to downstream. If a step fails, the steps after it can’t pass. The full routine is in Verify and validate your AnyTrack setup.
- Tracking Tag live. The AnyTrack Pixel Helper icon turns blue on each landing page, and
PageViewshows in the Conversions Report. - Event reaches AnyTrack. The integration’s Events Log shows the CRM event with status OK.
- Event reaches Meta. Server events show in Events Manager. Use Conversion API test mode and allow 10 to 20 minutes.
- Event reaches Google Ads. Google has no live test mode. Check the conversion action after a few hours: up to 3 hours for last-click, 15 hours for other models, and up to 72 hours for GBRAID and WBRAID (attribution delays).
- Reports agree. The Campaign Report credits the campaign that drove the lead.
Then run one test lead through the whole funnel: click your own ad, fill in the form, move the deal to each stage, and watch each event arrive.
| Stage, last 7 days | CRM | AnyTrack | Google Ads | Meta |
|---|---|---|---|---|
| New leads | ||||
| Booked calls | ||||
| Qualified leads | ||||
| Closed deals and revenue |
Frequently Asked Questions
What is offline conversion tracking?
Offline conversion tracking sends results that happen away from your website, such as a sales call or a signed contract, back to your ad platforms. Each result is matched to the ad click that started it, so Google Ads and Meta can credit the campaign and bid on real outcomes.
How long after the click can I upload offline conversions to Google Ads?
Google imports offline conversions up to 90 days after the last click, and enhanced conversions for leads up to 63 days. The conversion action's click-through window also applies: it defaults to 30 days and goes up to 90.
How late can I send a CRM event to Meta?
Meta's Conversions API rejects events whose event time is more than 7 days in the past. The limit counts from the event, not the click, so a deal that closes 45 days after the click still reaches Meta if you send it within 7 days of the close. Ads Manager credits the ad only inside the ad set's attribution setting, which ends 7 days after a link click at most.
Do I need the gclid to send offline conversions to Google Ads?
Offline conversion import needs a click ID: GCLID, GBRAID, or WBRAID. Enhanced conversions for leads can match on hashed email and phone instead, when a Google tag collects that data on your site. Keeping the click ID on the CRM record gives you the best match either way.
Can I send offline conversions to Meta without Lead Ads?
Yes. Leads from your own website forms go to Meta through the Conversions API with the click ID and hashed contact details. Conversions API for CRM is the separate route for leads that came from Meta Instant Forms.
Will sending CRM conversions double count my pixel or CRM workflow?
It will if two tools send the same event. Different tools create different event IDs, so the platforms count both. Keep one sender per event and turn off the others.
Which CRM stage should I optimize for?
Bid on the deepest stage that still gives the platform enough volume. Google suggests one funnel stage with at least 15 conversions a month. Meta's learning phase usually needs about 50 results a week per ad set.
Laurent Malka is the Co-Founder of Anytrack. He was born and raised in Switzerland, and now lives and works in Israel. He is a serial entrepreneur with over 15 years of experience in marketing and business development. Laurent has been a panelist and speaker at numerous digital marketing events including SEMrush and IG Affiliates. He prides himself on his ability to connect the dots across disciplines, industries, and technologies to solve unique challenges.