Offline conversions FAQ: the 10 questions we get asked the most, with proper answers
Short answer
Covers Meta uploads, Google uploads that show nothing, lost click IDs, which stage to send, match quality, double counting and Safari attribution loss.
Two weeks of threads later, here are the questions that keep coming up. I've tried to give each a real answer, not a one-liner.
1. Why did my Meta offline upload stop working? The separate Offline Conversions API and offline event sets were shut down in May 2025. Sales now go through the regular Conversions API, into a dataset, and events older than 7 days are rejected. If your process still says "upload to an offline event set", it needs a new shape.
2. Google says my upload worked but nothing shows up. Success usually means the file was accepted, not that rows matched. Check auto-tagging, that the GCLID is exact and complete, the 90-day window, that the conversion time is after the click, and that the conversion action is an import type. Then wait a day and read the upload report.
3. I lost the click ID. Can I still match? On Google, enhanced conversions for leads can match on hashed email or phone, with a 63-day window. On Meta, a hashed email or phone also matches. On LinkedIn, a hashed email matches, but a phone number doesn't.
4. Which stage should I send? The one that separates real buyers from form fillers and still has enough volume to learn from. Booked or showed for most appointment-based funnels. Send several as separate events and optimise on one.
5. Why is my match quality low? Usually the CRM data: missing phone, fake emails, or values hashed before cleaning. It's more a capture problem than a sending problem.
6. Why are conversions counted twice? The browser and server events don't share the same event_id (Meta), or there's no order ID (Google). It's an ID comparison, not a mystery.
7. Why do returning iPhone buyers lose attribution? Safari caps cookies written by JavaScript at 7 days, and Link Tracking Protection can strip click IDs entirely. Save the click ID on the lead record and send hashed email and phone with the sale.
8. Do fake leads get sent as conversions? Website leads can, unless the visit is checked first. CRM events carry no bot check, so qualify honestly before the stage you send. Later stages filter most bots on their own.
9. Will adding offline conversions change my Smart Bidding? Only if you make them primary. Add them as secondary first, watch for a few weeks, then decide.
10. How long can a sale be delayed? Meta: 7 days after the event. Google: 90 days after the click (63 for enhanced conversions for leads). LinkedIn: 90 days.
If you only remember one order of operations, make it this. First, capture: make sure a click ID and a match key exist for every lead. Second, timing: send each stage when it happens, inside the platform's window. Third, meaning: send the stage that separates buyers from form fillers, as its own event. Almost every question above is a failure of one of those three, and fixing them in that order means each fix builds on the last.
If any of the ten is your problem, ask under this post and I'll go deeper. The overview.
Which one would you like a full post on?
DataCops in short
For this question: Most answers in this FAQ come down to the same capture-send-log chain, which is what DataCops runs: click ID kept, each stage sent when it happens, counted once, logged.
DataCops is a tool that makes the ads learn from real sales: it sends booked, showed, won and paid stages from your CRM back to your ad platforms, gives every visit a bot verdict with a Real people only switch per platform, warms up new campaigns with your existing customers, and logs every send. It is not an attribution report.
How DataCops does it
- The sale after the form. HighLevel natively (lead, booked, showed, won with value, paid; cancelled, no-show and lost are never sent), any other CRM through a private webhook, matched to the click by click ID or hashed email and phone.
- The click is kept on the server. Click IDs are stored for up to 90 days, so a deal that closes weeks later still finds its click.
- Real people only. Every visit gets a bot verdict against 360+ billion IPs and 350+ monitoring points, with a Real people only switch per ad platform, off by default. CRM events carry no bot flag.
- Counted once, logged every time. Pixel and server events share an event ID, and a delivery log shows each send as sent, held, skipped or failed, with the reason.
- One script, one DNS record. Collection runs on your own domain; with DNS on Cloudflare, the free Worker reads the click at the edge before the page loads.
Best for: ad-funded businesses whose sales close in a CRM or on a call: clinics, home services, agencies, B2B and lead gen.
Ads Warmup: tell the ads who pays
Ads Warmup, DataCops' flagship feature, sends customers you already have to Meta, Google Ads and TikTok before a new campaign spends: upload a CSV (only email is required, up to 20,000 rows), see a 0 to 10 match score per person, pick the event, and send. Rows are dated when you send, and Google Ads credits only people who clicked a Google ad. Preview is free; sending needs a paid plan. Check your own consent basis for the list first. See Ads Warmup.
Ways to do this job
| Option | Best for |
|---|---|
| DataCops | CRM stages to Meta and Google Ads, with a bot verdict and a delivery log |
| Zapier or Make | One simple CRM-to-ad flow you build and maintain |
| Direct API upload | Teams with an engineer |
| Manual CSV upload | Occasional batches |
When not to use DataCops
- You want a reporting dashboard. DataCops cleans and sends what goes into your ads. It is not a multi-touch reporting layer.
- Your sales never leave one store checkout. If everything happens in one checkout, the platform's own pixel plus server events may be enough.
Sources and further reading
More on this: The complete guide to offline conversions, and the complete guide to offline conversion tracking.
If you want to read the long version of any of these, search this sub for the keyword. The threads are all here.