Which ad brought the customer? How do I attribute CRM sales to Facebook and Google ads?
Short answer
Capture the click ID and source at the first visit, store them on the CRM contact so nothing overwrites them, report on original source, and send the later stages back to the ad platform within its window.
The ad gets lost between the form and the deal, and the fix is plumbing.
A visitor clicks an ad, browses, and fills in a form two days later. If the form does not carry the click ID and source, the CRM shows no ad. If an embedded form sits on another domain, the click ID dropped at the redirect. If the CRM overwrites the source each time the person returns, the first ad is replaced by the last touch. By the time the deal closes, the record has no memory of what brought it in.
The method is seven steps. Capture the click ID and UTM tags at the first visit, on your own domain and on the server. Add hidden fields to every form. Store them on the CRM contact in fields nothing overwrites. Submit test leads and see which fields arrive, on mobile and in Safari too. Report closed deals by the original source field. Send the later stages back to the ad platform. Watch the delivery.
Mind the clock. Google accepts a click ID import within 90 days of the click, and 63 days for enhanced conversions for leads. Meta rejects events older than 7 days. If your deals take longer, send an earlier stage such as booked as a checkpoint.
And report on two dates: the lead date to find the ad click, and the close date for revenue. Closed deals can lag the lead by months.
Where does the source get lost in your setup?
DataCops in short
For this question: DataCops keeps the click on your own domain for up to 90 days, matches the sale, sends it once to Meta, Google Ads, TikTok and LinkedIn with a delivery log, and sends CRM stages like booked, won and paid. It is not a reporting dashboard. Every visit also gets a bot verdict against 360+ billion IPs, with a Real people only switch per ad platform (off by default).
DataCops is a tool that does the ad-conversion job without a container, warehouse or plugin: one script and one DNS record on your own domain, a bot verdict on every visit with a Real people only switch per ad platform, the real sale from your CRM or Shopify sent back to your ads, new campaigns warmed up with the customers you already have, and a log of every send.
How DataCops does it
- First-party collection, no extra tool. One script and one DNS record put collection on your own subdomain; with DNS on Cloudflare, the free Worker reads the click at the edge before the page loads. A signed server-set cookie lasts up to 400 days where enabled.
- Real people only. Every visit gets a bot verdict, with a Real people only switch per ad platform, off by default. Every form email is checked for disposable providers, domains with no mail server and an email risk score.
- Every ad platform. Conversions go server-side to Meta, Google Ads, TikTok and LinkedIn, counted once against the pixel by event ID.
- The sale after the form. HighLevel natively, any CRM by webhook, Shopify through the DataCops Shopify app.
- A log you can read. A delivery log row per conversion, with the reason when it did not go. A TCF 2.2 consent banner and first-party analytics (a GA4 alternative) come from the same script.
Best for: teams who want better ad conversions without building or maintaining the pipe: lead gen, ecommerce, clinics, home services, B2B and agencies.
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 | One script, a bot verdict, CRM sales and a delivery log |
| Hosted server GTM (such as Stape) | A team that already owns a GTM container |
| The platform's own pixel | Basic browser tracking on one platform |
| Self-hosted server GTM | Engineering teams who want full control |
When not to use DataCops
- You need custom tag logic or non-ad destinations. DataCops sends to ad platforms and is not a Google Tag Manager container.
- You want a reporting dashboard. DataCops fixes what goes into your ads. It does not replace the reports you already read.
Sources and further reading
More on this: Which ad brought the closed deal, and the complete guide to offline conversion tracking.
Do a test: click your own ad, submit a form, and see what the CRM contact holds.