“Our campaigns are for brand, not leads.”
Then this method does not apply, and the page says so. Measuring the other channels over months is the honest alternative.
For X Ads
Where your campaigns produce contact details, match them against closed sales. Where they do not, this page tells you plainly that they cannot be measured this way.
No API key Nothing to install in X AdsNothing to install No card requiredNo card
X Ads sits on the lead side in CloseRev: where its campaigns produce leads with contact details, export them and match them against closed sales from whichever system holds them. Where they do not — which is common on this platform, because much of the spend is awareness rather than direct response — the honest position is that there is nothing to match, and the page says that rather than inventing a method. Revenue with no traceable lead is reported as Direct / Unknown.
Last checked against X Ads's own documentation on September 24, 2026.
The gap
The campaign produced impressions, replies and reposts, and the finance director asked what it sold.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
On the lead form export, or your own landing-page record carrying the campaign. Without one of these there is no lead file and nothing to match.
The decision level. Follower-lookalike and keyword audiences behave differently here.
When the lead arrived, which anchors the window.
Which objective the campaign ran under. Awareness objectives should not be ranked beside lead objectives on the same measure.
Step by step
Written for somebody with X Ads open in the next tab. Report names vary by edition, so each step says what to look for.
If the campaigns produce no contact details and no tracked landing page, stop here: there is nothing honest to match, and knowing that is the useful outcome.
Lead form downloads or your own form records stamped with the campaign.
A contact detail, the amount and the date, exported from whatever your business invoices out of.
Ranking both on revenue per lead compares a campaign that was never asked for leads against one that was.
The join runs on the phone and the email, normalised, with unmatched rows kept visible.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the B2B SaaS page — not from a X Ads account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 18 | $720,000 | |
| LinkedIn Ads | 21 | $930,000 | |
| Email marketing | 12 | $420,000 | |
| Direct / Unknown | 24 | $930,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A large share of spend on this platform runs against awareness and engagement objectives, producing impressions and replies rather than contact details.
No amount of matching will turn that into revenue attribution, because the file that would connect a person to a sale never existed.
A tool that produced a number anyway would be guessing, and a guess in an attribution report is worse than a gap because nothing warns you when it is wrong.
So the honest sequence is: check whether a lead file exists, and if it does not, either change what the campaign collects or accept the channel is being bought on a different basis.
Lead generation cards and tracked landing pages both produce rows with contact details, a campaign and a date, which is all the match needs.
Those leads rank on closed revenue beside every other channel in the file, on the same window and the same rules, which is the comparison the channel is usually denied.
In practice this often reveals a small number of campaigns doing real work inside an account where the aggregate looked like nothing.
It can also confirm the opposite. Both are better than an engagement rate.
A brand campaign's effect shows up as more people arriving through channels that were already working — more direct traffic, more branded search, more referrals.
That is a real effect and it is not attributable to an individual customer, because the individual never touched the campaign in a way anything recorded.
The defensible reading is to measure the other channels accurately over months and watch what happens to their volume, rather than to assign brand spend a per-customer number.
This report will do the first half honestly. It will not do the second half at all, and no honest tool should offer to.
Platform audience insights describe the people the platform showed adverts to, using its own model of who they are.
Your customer file describes people who paid you. Where the two disagree, the second one is the evidence.
Matching leads to invoices builds the second view from rows you can open, and it is the one that survives a question from somebody sceptical.
It is also the only one that can tell you which campaign produced revenue rather than which campaign reached an audience that resembled your buyers.
Fair questions
Then this method does not apply, and the page says so. Measuring the other channels over months is the honest alternative.
On events fired on your site, within its window. If the sale closes offline, it never saw it.
Those become a lead file the moment somebody records a contact detail and a date against the campaign.
No. Nothing is installed and nothing is written back — the report is built from files you already have.
Then there is nothing to match, and the honest answer is that this method does not apply to those campaigns.
For campaigns that produce them: the lead export with contact details and campaigns, plus your closed sales with amounts and dates.
Not per customer, by anyone. The defensible reading is what happens to your other channels over months.
No. One was never asked to produce leads, and ranking it on revenue per lead is a comparison of objectives.
One that fits your purchase, applied to every channel in the file.
Yes, once somebody records a contact detail and a date against the campaign. Until then they are not in any file.
They describe who was shown adverts. Your customer file describes who paid, and it is the better evidence.
Yes, and the overlap is reported rather than assigned.
The report shows the count behind each figure and declines to print a ratio too small to mean anything.
A contact detail, a campaign and a date on one side; a contact detail, an amount and a date on the other. No audiences, no engagement data, no posts. Encrypted in transit and at rest and deleted with the import.
Closed revenue per campaign where a lead file exists, a plain statement where none does, and everything unmatched kept visible.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
X Ads and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
Start today
Nothing to install in X Ads, no API key, and no need to have been tracking anything until now. Last year works as well as this month.