Most attribution reports overstate impact. Here's the boring, honest way to tie ad_id to closed deals — including where NULLs are correct.
Attribution is where CRMs lie. Every dashboard shows "great ROI" — until you dig in and find the joins are broken.
This guide walks through what honest attribution from Meta lead ads to closed revenue looks like, and how to read the numbers without fooling yourself.
Start with the join, not the dashboard
Every useful attribution report depends on one thing: each lead record carries the identifiers of the ad that produced it — campaign, ad set and ad_id. If those fields are missing or overwritten, no dashboard can fix it.
Before you look at any ROI chart, check three things:
- Coverage. What share of leads from Meta actually have an ad_id stored?
- Stability. Does the ad_id stay on the lead when it's edited, merged or converted?
- Deal linkage. When a lead becomes a deal, does the deal inherit the source?
Honest attribution shows its gaps
Leads that arrived before ad-level tracking was switched on don't have an ad_id. The honest answer for those leads is NULL — not a best guess. Guessing would make the report look complete and make every decision based on it worse.
A good report shows the gap instead of hiding it: "1,240 leads attributed, 310 unattributed." You can work with that. You can't work with a number that silently blends real data and estimates.
What the funnel should show
Track the funnel from ad spend through to revenue, using real events at each step:
- Spend — what you paid, per campaign and ad.
- Cost per lead (CPL) — spend divided by leads captured.
- Qualified rate — share of leads your team marked as sales-qualified.
- Win rate — share of qualified leads that became closed-won deals.
- Revenue and lifetime value — what those won deals are actually worth.
If a step isn't measurable yet, say so on the report. Modeled probabilities have their place, but they shouldn't be mixed into the same column as observed outcomes.
Reading the numbers without fooling yourself
Cheap leads aren't always good leads. A campaign with a low CPL and a near-zero win rate is expensive. Judge campaigns on cost per won deal, not cost per lead.
Give deals time to close. If your sales cycle is 45 days, last week's campaign hasn't had a chance to produce revenue. Compare cohorts of leads by the month they arrived.
Break results down before you reallocate. Compare by region, audience and creative. Very often one segment is carrying the results while another quietly burns budget at a higher CPL.
Watch sample sizes. Ten leads is an anecdote. Wait for enough volume before you make a big budget move.
What to do with it
Run the review on a fixed rhythm — weekly for spend and CPL, monthly for win rate and revenue. Shift budget toward the segments that produce won deals, cut the ones that only produce form fills, and keep the unattributed count visible so everyone knows how much of the picture is real.
Try it on your own pipeline
Book a 20-minute walkthrough with our team.



