Every marketer has had this meeting. Meta says the campaign drove 80 conversions. The CRM shows 31 leads from "paid social" and a suspicious pile labeled "Direct." Somebody asks which number is real, the room goes quiet, and the budget decision gets made on a gut feeling.
Here's the part almost nobody checks first: that gap usually isn't your ad account's fault. It's your own website quietly dropping the campaign data before it ever reaches your CRM. The click arrives carrying everything you need, utm_source, utm_campaign, a gclid, and then your form throws it away on submit. The lead lands with a name, an email, and no memory of where it came from.
You can run this marketing attribution audit yourself in an afternoon. Or you can paste your URL below and have it checked in about ten seconds.
Is your site losing the campaign behind every lead?
Paste your URL and we'll scan your public page for the signals that decide whether your leads are traceable from ad click to CRM.
**scanning…**Fetching your page… 0/ 100
🔒 Your attribution score is ready
Enter your email to reveal your full score and breakdown, we'll send the fix checklist too.
Trakt fixes the red ones automatically
One script adds source capture, UTM persistence, and click-ID tracking to your forms, then syncs it to your CRM.
← Audit another site
Either way, the six things that decide whether your leads are traceable are the same. Here's what each one is, how to check it by hand, and what it costs you when it fails.
1. Source capture on your forms (the one that matters most)
This is where most attribution dies. A tracking URL hits your landing page carrying the full campaign context. Then someone fills out your form, and unless that form has hidden fields that read the UTMs off the URL and write them onto the submission, all of it vanishes. The CRM gets the contact. It does not get the campaign.
Check it yourself: open your main lead form, right-click, Inspect, and look inside the
What it costs: this is the leak that makes your ad dashboard and your CRM disagree. You can't prove ROI on a single campaign if the campaign name never makes it onto the record.
2. UTM persistence across pages
Real buyers don't convert on the landing page. They click your Google ad, read the page, click to your pricing, poke around, leave, and come back two days later to fill out the form. By then the UTMs are long gone from the URL, and if your site didn't remember them, that lead converts as "Direct."
Check it yourself: visit your own site with ?utm_source=audittest on the end of the URL, click through to another page, then open the form and inspect whether the source field still holds audittest. If it's empty, you're only capturing people who convert in a single, uninterrupted session, a small and unrepresentative slice of your pipeline.
The fix: persist the UTMs in a first-party cookie (a 90-day window is the common standard) so the source survives the gap between first touch and form fill.
3. A lead form actually exists
It sounds obvious, but plenty of pages send paid traffic to a destination with no clear conversion point: a homepage, a blog post, a feature page with the CTA three scrolls down. If there's nothing to submit, there's nothing to attribute, and you're paying for clicks you can't convert or measure.
Check it yourself: look at the page your ads actually point to (not your homepage, the real destination). Is there a form, a demo request, or a booking widget above the fold? If the answer is "people are supposed to find their way to the contact page," that's a conversion problem sitting on top of an attribution problem.
4. Analytics or a pixel is firing
This is table stakes, and most sites pass it, but it's worth confirming the pixel is actually present and firing, not just pasted into a tag manager that never published. Without GA4, a Meta Pixel, or a LinkedIn Insight Tag, you have no view of traffic at all, attributed or not.
Check it yourself: install Meta's Pixel Helper or use your browser's network tab to confirm gtag, fbq, or the LinkedIn tag fires on page load. A pixel that's installed but misconfigured is one of the most common quiet failures.
5. The form submits somewhere that can store the source
Capturing source data on the form is pointless if the form posts into a void. The campaign fields need a destination: a CRM or marketing platform that has somewhere to put them on the contact record.
Check it yourself: submit a test lead and find it in your CRM. Open the contact. Is there a source or campaign field populated, or is it blank? If your forms email you a notification but never create a structured record with source attached, your "CRM" is a inbox, and attribution isn't possible downstream.
6. Ad click-IDs are captured (gclid, fbclid)
The most advanced check, worth 5 points but high leverage: capturing the click IDs that Google (gclid) and Meta (fbclid) append to ad clicks. These are what let you push closed-won revenue back to the ad platforms later, so their bidding learns from real deals instead of raw form fills, and what lets you reconcile platform-reported conversions against what actually closed.
Check it yourself: same as check 1: look for hidden gclid / fbclid fields on the form, or a cookie storing them. Missing this is why your ad platform's numbers and your CRM's numbers never fully line up, even when everything else is wired correctly.
What to do with a bad score
If you ran the tool and landed on a C, D, or F, don't panic. It's the most common result, and it's the most fixable problem in marketing. The order to fix it in is the same order as the checks: get source capture onto your forms first (it's worth the most and unlocks everything else), then add UTM persistence so multi-day journeys survive, then close the loop with click-ID capture.
You can do all of this by hand. It's a developer ticket per form, a cookie script, and a UTM schema your whole team agrees to never break, which, in practice, is the part that quietly falls apart the first time someone shares a link without the parameters. Standardizing it across a team is exactly the boring, technical work that gets skipped, and it's why the gap is so widespread.
That skipped work is the reason Trakt exists. Its founder spent ten years running attribution for clients at Produktiv, somewhere north of 200 site installs, and watched the same leak show up nearly every time: good campaigns, real leads, and a form that forgot where they came from. Trakt fixes checks 1, 2, and 6 automatically on a single script install: it scans your site, injects the hidden source fields into your existing forms, persists the UTMs in a first-party cookie, and writes the campaign onto the contact when it syncs to your CRM. No per-form developer tickets, no schema drift.
Run the audit on your site above. If it comes back leaking, scan your site with Traktand close the gap. It's free while we're in early access.
FAQ
What is a marketing attribution audit?
It's a check of whether your website actually captures and keeps the campaign data behind each lead, from the ad click, through your forms, into your CRM. Most "attribution" problems are really data-capture problems on the site itself, which is what an audit surfaces.
Why do my ad platform and CRM numbers never match?
Two reasons, usually: the ad platform counts conversions it thinks it influenced (including view-throughs and cross-device guesses), and your site is losing source data so the CRM under-counts attributed leads. Closing the site-side leak narrows the gap and tells you which number to trust.
Can I fix this without new software?
Yes. Hidden form fields, a UTM-persistence cookie, and a tracking schema your team sticks to will get you most of the way. The hard part is keeping it consistent across every form and every link as the team grows, which is the part tools like Trakt automate.


