Offline Conversions

Booked, Showed, WonMatched to the Ad Click
HighLevel NativeAny CRM by Webhook

Offline conversions are the sales that happen after the click: the booked call, the patient who showed up, the deal your team won. DataCops sends them from HighLevel or any CRM back to Meta, Google Ads, TikTok, LinkedIn, Microsoft Ads, Reddit, Pinterest and X, matched to the ad click that started them.

Setup in 5 minutes
No credit card
One lead from a Meta ad
From form fill to won deal in HighLevel
With DataCops
Form fillSent to Meta
Booked callSent to Meta
Showed upSent to Meta
Deal wonSent with its value
Matched to the original ad click by email

Trusted by agencies and brands running paid media

AffilinoBigfishClever DigitalKeetraxLegendListingLogicNumeroStormZealdBurst Digital
Definition

What are offline conversions?

Offline conversions are sales, or steps toward a sale, that happen away from your website and are sent back to the ad platform that brought the customer: a booked appointment, a phone sale, a deal won in your CRM, a paid invoice. Each one is matched to the ad click that started it, so Meta, Google Ads and TikTok count it as a result of that ad and learn to find more people like the ones who bought.

DataCops keeps the ad click on your own domain when the visitor lands. When the lead books, shows up, qualifies or buys in your CRM, DataCops finds that click again and sends the stage to your ads. No CSV exports, no code.

DataCops sends offline conversions from HighLevel or any CRM through the webhook to Meta, Google Ads, TikTok and LinkedIn, matched to the ad click that started each sale.

What your ads learn from

Leads and clinics on HighLevel
What your ads see today Form Booked Showed Won Paid
With DataCops Form Booked Showed Won Paid
B2B on any CRM
What your ads see today Form Qualified
With DataCops Form Qualified
Any CRM by webhook
What your ads see today Form Sale, with value
With DataCops Form Sale, with value
Offline conversion tracking: the complete guide (2026)

What an offline conversion is, in plain words

An offline conversion is a sale, or a step toward one, that happens where your ad platform cannot see it, such as a booked call, a deal won in your CRM or an invoice paid. You report it back with the click that started it, so Meta, Google Ads, TikTok and LinkedIn learn which clicks turn into customers, not just into form fills.

This guide covers what every setup needs, the rules each platform enforces, the nine places a click gets lost, and what to send. New words are explained in the offline conversions glossary.

The five things every setup needs

1. Capture the click ID

When someone clicks your ad, the platform adds an ID to the link (gclid, fbclid, ttclid, li_fat_id). Save it the moment they land, on a cookie that survives.

2. Keep a match key

Store the visitor's email or phone with the lead. It is what lets the sale find its click when the ID is gone.

3. Send each stage when it happens

Booked, showed, won, paid. Send each one as it happens, inside the platform's window. Meta rejects events older than 7 days.

4. Never count twice

Give every sale one ID. Send the same ID twice and it should count once, not twice.

5. Keep a log that shows failures

Every send needs a status and a reason. An upload that says "success" and adds nothing is the most common failure.

If one of the five is missing, the other four cannot save the setup. Most "offline conversions do not work" reports trace back to number 1, 2 or 5.

The rules on each platform

Windows and match methods, as of September 2026. Check each platform's own help page before you rely on a number.

PlatformHow it arrivesTime windowMatches on
MetaConversions API into a dataset. The old Offline Conversions API and offline event sets were shut down in May 2025.Rejects events sent more than 7 days after they happened.fbclid / fbc / fbp, hashed email and phone
Google AdsOffline click import, or enhanced conversions for leads. New API setups since June 2026 are asked to use the Data Manager API.Ignores uploads more than 90 days after the click. Enhanced conversions for leads: 63 days.gclid, gbraid or wbraid; hashed email or phone for leads
LinkedInConversions API.Conversions up to 90 days old.Hashed email, li_fat_id, or name plus company or job title. It does not match on phone.
TikTokEvents API, server-side.Send each stage as it happens.ttclid, hashed email and phone

Microsoft Ads is not a DataCops destination. Safari also shortens what you can keep: cookies set by a browser script last 7 days, or 24 hours after a tracker link, and iOS 17 Link Tracking Protection can strip gclid and fbclid. Per-platform detail: Meta, Google Ads, LinkedIn, TikTok.

Why your ads miss the sale

Why your ads optimize for form fills

Meta and Google learn from what they are told. Today that is usually the form, and nothing after it.

Events Meta received
Lead Received
Booked call Never seen
Deal won Never seen
The pixel stops at the form

The pixel stops at the form

A browser pixel sees the form fill and the thank-you page. The booked call, the show-up and the won deal happen somewhere it cannot follow.

Opportunity in your CRM
StageWon
ClosedOn a sales call
Came fromA Meta ad
Meta never hears about it

The sale happens in your CRM

Deals close in HighLevel, your CRM or Salesforce, on the phone or in the clinic. Nothing tells the ad platform that the lead became a customer.

The ad click, in the browser
Day 1Ad click saved
Day 8Safari clears the cookie
Day 23Deal won
No click left to match

The click is gone when the deal closes

Safari clears cookies set by a browser script after 7 days. A deal that closes three weeks later has no ad click left to match.

Leads sent to your ads
Real lead Counted
Bot lead Counted
Real lead Counted
Your ads now look for more bots

Fake leads teach your ads

Bot form fills count as leads too. Every one tells Meta and Google to find more people like it.

How DataCops sends offline conversions

Four steps from the ad click to the won deal, with nothing to wire in HighLevel.

  1. Step 01
    Saved on yourdomain.com
    fbclid from Meta Kept
    gclid from Google Ads Kept
    ttclid from TikTok Kept
    Kept for up to 90 days

    The visitor clicks your ad. DataCops keeps the click ID on your own domain for up to 90 days.

  2. Step 02
    Stages your CRM reports
    Booked call Reported
    Showed up Reported
    Won, with value Reported

    The lead books, shows up, qualifies or buys, and your CRM reports it.

  3. Step 03
    Finding the ad click again
    Won dealby email or phone
    Ad click, 23 days earlierMatched

    DataCops matches the lead by email or phone and finds the original ad click.

  4. Step 04
    Won deal sent
    Meta Sent once
    Google Ads Sent once
    TikTok Sent once
    LinkedIn Sent once

    The stage goes to every platform you connected. A won deal and its invoice count as one sale.

Each stage goes out as your CRM reports it: HighLevel stages right away.

How DataCops sends every offline sale

Capture Background

One first-party script, served from your own domain

  • Runs first-party from datacops.yourdomain, not a blockable third-party host
  • One script, one CNAME, live in about 5 minutes, no container to host
  • Server-side collection on Cloudflare's edge, close to every visitor
  • Captures click IDs at the network level, so fbclid and gclid still reach your CAPI feed after browsers strip them
  • Recovers 15 to 25% of the sessions other setups lose

Traffic Visibility

10%
20%
30%
40%
50%
60%
70%
80%
90%
100%

First-Party Script

~78%

Blockers and ITP cut your sessions

Andrew Forsyth

“15 minutes to get server-side tracking live. After 3 days failing with another app and a DIY server-side Google Tag Manager, that alone sold me. Then support jumped on a Google Meet with me on a Sunday afternoon to finish the job. Nothing else comes close.”

Andrew Forsyth
Chief Executive Officer, Zeald
Where the sale comes from

Offline conversions from your CRM

Connect the place where your sales happen. DataCops listens for the stages that matter and sends each one to your ads.

HighLevel

Install once for your agency and pick the sub-accounts to connect. Each stage is sent as HighLevel reports it. Cancellations, no-shows and lost deals are never sent, and you can switch any stage off.

Sends Form leadBookedShowedWon, with valuePaid invoice
Offline conversions for agencies

Salesforce, Pipedrive and any other CRM

Post the sale to your private DataCops webhook with the customer's email or phone, the value and the order ID. Your CRM can send it directly, or through Zapier, Make or n8n.

Sends Any stage you postValue and currencyOrder ID

Google Sheets and CSV

On a paid plan, upload up to 20,000 past customers or sales from a CSV and pick the platforms to send them to. Rows go out with the date you send them, so use it to warm up an ad account. For sales you add to a sheet every day, send each row through Zapier or Make to your webhook.

Sends LeadPurchaseSchedule
See Ads Warmup

Phone calls and sales

When a call ends in a booking or a sale, record it in your CRM, or post it to your webhook with the caller's phone number. DataCops matches the phone number to the ad click and sends the conversion.

Sends Matched by phone

Shopify orders

The DataCops Shopify app sends each paid order as a server-side purchase, so orders the browser missed still reach your ads.

Sends Purchase, with value
Where the sale goes

Offline conversions by ad platform

You can upload a file to each ad platform by hand, which is an offline conversion import, or send each sale through the platform's server API as it happens. DataCops does the second, so nothing waits for a weekly upload and no ad blocker or cookie limit is in the way.

Meta

Sent through the Meta Conversions API with hashed email and phone, and the click ID when there is one. Meta shut down its separate Offline Conversions API in May 2025, so this is now how offline sales reach Meta.

Meta Conversions API

Meta rejects events more than 7 days old. DataCops sends each stage as your CRM reports it.

Google Ads

Uploaded as click conversions with the GCLID, GBRAID or WBRAID, or with hashed email and phone when there is no click ID, the way enhanced conversions for leads works. Leads and sales go to their own conversion actions; booked and showed go to a conversion action you map for them.

Google Ads conversions

Google ignores offline conversions uploaded more than 90 days after the click. DataCops keeps each click for up to 90 days.

TikTok

Sent through the TikTok Events API as server-side events, so a blocked browser pixel does not stop them.

TikTok Events API

LinkedIn

Sent through the LinkedIn Conversions API. You map each stage to one of your LinkedIn conversion rules.

LinkedIn accepts conversions up to 90 days old.

Microsoft Ads

Sent through the Microsoft UET Conversions API, with msclkid and hashed email and phone.

Microsoft accepts an event within 7 days of when it happened, so each stage is sent the day it happens.

Real people only

Filter fake leads before you send

A bot that fills in your form becomes a lead your ads try to find more of. DataCops checks every visit for bots and datacenter traffic, and for VPNs and proxies if you choose. Switch on Real people only for a platform and flagged visits never reach it.

Sales that come from your CRM are sent as your CRM reports them, with no bot check, so qualify them there before you send.

How DataCops spots bots
Meta, delivery
Real people only
Bots and datacenter traffic never reach Meta. VPNs and proxies too, if you choose.
Send everything
Meta gets every visitor, bots included.
Lead from a bot Skipped
Delivery log
every event, every platform, with a reason
Live
Won deal to Meta
fbclid + hashed email
Delivered
Won deal to Google Ads
gclid, as a purchase
Delivered
Booked to TikTok
ttclid + hashed phone
Delivered
Lead to Meta
bot, Real people only is on
Skipped
Qualified to LinkedIn
waiting for the CRM stage
Held
Delivery log

Why offline conversion uploads fail

Most failed uploads report success and add nothing. DataCops logs every send, per platform, with its status and the reason, so you can see what happened to each sale.

  1. 1
    The click is too old
    Google ignores clicks older than 90 days. DataCops sends each stage when it happens, while the click is still in range.
  2. 2
    Nothing to match on
    A sale with no click ID and no email or phone cannot be matched. DataCops attaches the click it kept and hashed contact details.
  3. 3
    The same sale sent twice
    A won deal and its invoice count as one sale, and an order ID reaches each platform once.
  4. 4
    Nobody saw it fail
    Each send shows as sent, held, skipped or failed, with the reason next to it.

DataCops vs HubSpot, HighLevel and Zapier

What each one can send to your ads as offline conversions. Checked September 2026 against each tool's own help pages.

DataCops
HubSpot built-in
HighLevel built-in
Zapier
Sends CRM stages to Meta
HighLevel stages, any CRM by webhook
Lifecycle stages
Facebook lead form contacts, or with a stored fbclid
If you build the Zap
Sends CRM stages to Google Ads
Leads, won and paid; booked and showed once mapped
Lifecycle stages
Form, order, call, survey or chat triggers, needs a click ID
Needs a GCLID you stored
Sends won deals with their value
HighLevel won and paid, any CRM by webhook
Lifecycle stages, not deals
Facebook lead form contacts, or with a stored fbclid
If you build the Zap
Checks leads for bots before sending
Real people only, per platform
What it takes
One install, about 5 minutes per site
Marketing Hub Starter or higher
A workflow action per trigger
A paid plan, one task per send
Good to know

Good to know before you start

So nothing surprises you later.

Salesforce and Pipedrive through the webhook

Post each sale to your DataCops webhook, directly or through Zapier, Make or n8n.

Stripe and Paddle payments come later

Paid invoices from HighLevel, Shopify orders and webhook sales are sent today.

CSV rows are dated when you send them

An upload warms up your ads with past buyers. It does not rewrite past reports.

Refunds corrected on Google Ads

A full refund removes the Google Ads conversion, a partial one lowers its value. Meta and TikTok offer no way to correct a sent sale.

The nine places a click gets lost

Walk a lead from the ad to the sale. It can slip away at any of these steps, and each one has a different fix.

  1. 1

    Landing page

    The click ID is in the address bar for one page view. If a redirect, a slow script or a page change drops it, it is gone before anything saves it.

  2. 2

    Form

    The form submits the name and email but not the click ID, so the lead in your CRM has nothing to match on later.

  3. 3

    Browser and Safari

    Safari caps cookies set by a browser script at 7 days, and iOS 17 can strip gclid and fbclid from links. A deal closing in week three has no ID left.

  4. 4

    Contact

    The lead gives a different email or phone from the one on the ad click, or one that is mistyped. The match key no longer points to the click.

  5. 5

    Trigger

    The CRM stage changes but nothing fires, or it fires for the wrong stage. The sale happened and nobody told the ads.

  6. 6

    Timing

    The stage goes out too late. Meta drops anything older than 7 days; Google ignores clicks older than 90.

  7. 7

    Match

    The platform gets the event but cannot tie it to a click, so it counts nothing.

  8. 8

    Duplicate

    The same sale arrives twice, from the pixel and the server, or from a deal and its invoice, and is counted twice. Use one event ID.

  9. 9

    Meaning

    The event is counted, but as the wrong thing: a booking treated as a purchase, or a value in the wrong currency.

Choosing what to send

You can send several stages. The earlier the stage, the more volume and the more noise. The later, the cleaner and the slower.

Lead

Fast feedback, lots of volume. Also the easiest to fake, so check for bots first.

Qualified

A person on your team said this is a real opportunity. Best for longer B2B cycles.

Booked

A call or visit is on the calendar. Good when few leads reach a sale.

Showed

They turned up. Filters out no-shows.

Paid

Money arrived, with a value. The strongest signal, and the slowest.

A workable pattern: send qualified or booked as the goal your ads optimize for, and paid with its value as the record of revenue. On Google Ads, conversion actions start as secondary, so map booked and showed to an action you choose.

Refunds and cancellations, honestly

Some sales do not stick. DataCops never sends cancelled, no-show or lost stages, and a refund is not reversed on Meta or TikTok: the sale stays counted there. Plan for that in your reports, and treat platform revenue as an upper bound if you refund often. More in offline conversions and refunds.

Which page is for you

Ready to try it? Read the setup docs, see pricing, or start free.

Set up offline conversions

About 5 minutes per site. Agencies: about 15 minutes per client.

  1. Step 1
    code

    Add the DataCops script
    One script and one DNS record, so every ad click is kept on your own domain.

  2. Step 2
    ads_click

    Connect your ad accounts
    One-click sign-in for Meta, Google Ads, TikTok, LinkedIn and X, an API key for Microsoft Ads, Reddit and Pinterest.

  3. Step 3
    hub

    Connect where your sales happen
    HighLevel, your webhook or a CSV. Pick the stages to send.

Explore offline conversions

Every guide on this site about sending sales back to your ads, by platform, by CRM, by business and by problem.

By ad platform

  • Meta (Facebook and Instagram)

    Send CRM sales through the Conversions API. The old offline upload is gone.

  • Google Ads

    GCLID, enhanced conversions for leads and the 90-day window.

  • LinkedIn

    Closed deals and qualified leads, matched on hashed email.

  • TikTok

    Server-side events matched by ttclid or hashed email and phone.

By CRM or source

By business

By problem

Comparing tools? See Zapier, HighLevel's built-in action and all comparisons. Questions? See the community threads.

In short

Offline conversions with DataCops, in short

DataCops is a tool that sends offline conversions from HighLevel, HubSpot or any CRM to Meta, Google Ads, TikTok and LinkedIn, matched to the ad click that started each sale, with a bot verdict on every visit and a log of every send.

How DataCops does it

1

Capture the click first

One script and one DNS record collect on your own domain. With your DNS on Cloudflare, the free Worker reads the click ID at the edge before the page loads. The click is kept on the server for up to 90 days after the visitor was last seen, and a signed server-set cookie on your domain lasts up to 400 days where enabled.

2

Send each stage when it happens

HighLevel natively: form lead, booked, showed, won with its value, paid. Cancelled, no-show and lost send nothing. HubSpot sends one stage. Any other CRM posts the sale to a private webhook with email or phone, value, currency, order ID and click IDs.

3

Real people only

Every visit gets a bot verdict against 360+ billion IPs and 350+ monitoring points, and Real people only keeps flagged visits out of each platform you choose. Every form email is checked: disposable providers, domains with no mail server and an email risk score. LeadCops can hold a lead until your CRM confirms it. On the Organization plan, the fraud refund report exports bot-flagged Google Ads clicks in the format Google's Click Quality form asks for; you attach it and Google decides.

4

Ads Warmup for past customers

Upload a CSV of up to 20,000 customers, see a 0 to 10 match score for each, and send them as Lead, Purchase, Complete registration, Add to cart or Schedule to the platforms you pick. Rows are dated when sent. Sending needs a paid plan.

5

Counted once

A purchase with an order ID reaches each platform once, and a HighLevel won deal and its invoice count as one sale.

6

See every send

A delivery log row for every conversion: sent, held, skipped or failed, with the reason. For HighLevel the result is also written back onto the contact. Shopify orders come through the DataCops Shopify app.

Best for: lead gen, clinics, home services, B2B and agencies whose sales close in a CRM or on a call, and anyone whose ads keep learning from form fills.

Free to start. See pricing.

When not to use DataCops

One ad account, mostly Facebook lead forms

If almost every lead comes from a Facebook lead form and you only advertise on Meta, your CRM's own Meta action may be enough.

Microsoft Ads is a pilot

DataCops sends to Microsoft Ads through its UET Conversions API, which Microsoft runs as a pilot. Ask your Microsoft account manager to switch it on for your UET tag. Events must be within 7 days.

You need refunds sent as negative conversions

Refunds and cancellations do not reach Meta or TikTok. See what happens to a refunded sale.

You need call recording or number swapping

DataCops does not track calls. It counts a call when it becomes a booking or sale in your CRM.

FAQ

Offline conversions are sales, or steps toward a sale, that happen away from your website and are reported back to the ad platform: a booked appointment, a phone sale, a deal won in your CRM, a paid invoice. Each one is matched to the ad click that started it, so the platform can optimize for people who buy, not just people who fill in a form.

Let your ads learn from real sales

Send HighLevel and CRM sales back to the ad click that started them, logged per send.

Setup in 5 minutes. No credit card.

Live traffic quality

Updated just now

Visits · last 24h

487
Real users
35873.5%
Bots · auto-filtered
12926.5%

Without filtering, 26.5% of your reported traffic is bot noise inflating dashboards and draining ad spend.

Don't trust your analytics!

Make confident, data-driven decisions withactionable ad spend insights.

Setup in 2 minutes
No credit card