How to join your ad platforms, GA4 and CRM so your reports show what each channel costs per sale, in figures the person signing off the budget will trust.
Most marketing reports describe activity: clicks, impressions, cost per form fill. Owners want to know something simpler, which is how much of that spend turned into sales. When Google Ads claims 60 conversions, Meta claims 45 and your CRM (customer relationship management system) shows 70 new enquiries in total, nobody knows which figure to believe. Budget then drifts towards whichever channel reports most confidently, not the one that brings customers.
A revenue-connected reporting stack solves this by joining three sources: what the ad platforms report, what your CRM records about every enquiry, and what was actually sold. Consistent tracking tags on every ad, plus a source field saved on each enquiry the moment it arrives, link the three together. The result is one report that shows cost per qualified enquiry and cost per new customer for each channel, rather than clicks.
This article sets out the three layers, the job Google Analytics 4 (GA4) should and should not do, the tracking habits that keep the data usable, and what the report itself should contain. You do not need a data team to start: a spreadsheet or a free dashboard tool will carry you a long way.
A report convinces whoever holds the budget when its figures can be traced to real enquiries and real invoices. Click-through rate (CTR), the share of people who click an ad after seeing it, and cost per lead are useful to the person running the campaigns. They say nothing about whether the business made money.
The second problem is double counting. Each ad platform counts the conversions it can link to its own ads, using its own rules about clicks and views. A customer who clicked a Google ad and later saw a Meta ad can be claimed in full by both. Add the platform figures together and you can easily end up with more conversions than you had customers, as in the example above.
So apply one test to every figure in the monthly report. If it cannot be traced back to a named enquiry or order, it belongs in the campaign manager's working notes, not at the top of the page. The figures that pass are few: qualified enquiries, new customers, revenue, and what each of those cost per channel.
A reporting stack is simply the set of data sources and tools behind your reports. One that connects to revenue has three layers, and each answers a different question:
The value lies in joining the layers. Once each enquiry carries its channel and campaign, you can add up qualified enquiries, won deals and revenue per channel and set them against the spend from the first layer. That gives you cost per qualified enquiry, cost per new customer and revenue per euro spent, the three figures most budget decisions need.
The tools matter less than the joins. Looker Studio, Google's free dashboard tool, connects directly to Google Ads, GA4 and Google Sheets; data from Meta and LinkedIn needs a partner connector, usually paid, or a regular export into a spreadsheet. Running the whole thing from a shared spreadsheet for the first few months is perfectly workable.
One more join is worth making early: sending outcomes back to the ad platforms. Google Ads can import offline conversions from your CRM, and Meta's Conversions API can receive the same events from your server. The platforms' automated bidding then learns from qualified enquiries and sales instead of from every form fill.
GA4 is good at recording what people do on your website: which pages they read, whether they start a form, add to basket or play a video. Those signals are worth having, because they show where a page loses people and which campaigns bring engaged visitors rather than accidental clicks.
As a basis for budget decisions it has three weaknesses. It cannot see what happens after the form is sent: the phone call, the quote, the meeting, the signed contract. It misses visitors who decline cookies or use blockers, and can only fill part of that gap with modelled estimates. And it applies its own attribution rules, which differ from every ad platform's, so its channel figures will never match theirs.
So treat your CRM, or your shop system if you sell online, as the system of record: the one place whose figures count when money is discussed. When GA4 and the CRM disagree about enquiries or revenue, the CRM wins, and GA4 explains what happened on the website before the enquiry.
In the European Economic Area (EEA), Google requires Consent Mode v2 for ads measurement; it passes each visitor's cookie choice to Google's tags. Set it up properly with your cookie banner, because without it your measurement and remarketing for EEA visitors will be limited, and both GA4 and Google Ads will see even less.
Chrome still allows third-party cookies, but Safari and Firefox block them, many visitors decline tracking on cookie banners, and ad blockers stop some tracking altogether. The records you collect yourself (the enquiry form, the order, the CRM entry) are the ones that do not shrink as these limits grow. That makes the quality of your own first-party data the foundation of the whole stack.
Most of the work is unglamorous. UTM parameters, the short tags added to the end of a link to say which source, medium and campaign a click came from, are the thread that ties an enquiry to an ad. If one person writes 'facebook', another 'Facebook' and a third 'meta', your report splits one channel into three.
None of this needs special software, only a few rules that everyone who launches a campaign follows. These five prevent most of the damage:
There is no universal benchmark for how many enquiries arrive without a source. Whatever your share is today, aim to bring it down month by month, and treat a sudden jump as a fault to fix that week rather than a quirk of the data.
The report itself should fit on one page. At the top: new customers, revenue, total marketing spend and cost per new customer for the month. Below that, one row per channel with spend, qualified enquiries, cost per qualified enquiry, deals won, revenue and revenue per euro spent. Close with three or four sentences on what changed and what you will do about it.
The channel rows are where opinions change. Take an illustrative month: Google Ads costs €4,000 and brings 80 enquiries, of which 10 are qualified and 2 become customers worth €16,000 between them. LinkedIn costs €6,000 and brings only 20 enquiries, but 12 are qualified and 4 become customers worth €40,000 between them.
Judged on cost per enquiry, LinkedIn looks six times as expensive: €300 against €50. Judged on cost per new customer it is cheaper, €1,500 against €2,000, and it returns about €6.70 in revenue per euro spent against €4. A report that stopped at enquiries would have moved money in the wrong direction.
For bigger purchases that buyers think over, deals close weeks or months after the enquiry. Report those deals against the month the enquiry arrived, not the month the contract was signed, and accept that the latest months will look weak until their deals have had time to close.
Finally, write the rules down: what counts as a qualified enquiry, which source gets the credit, and how long you wait before judging a month. Sales, marketing and whoever keeps the books will argue far less about the figures if they agreed the rules before seeing them.
The best attribution model is the one your sales team and whoever signs off the budget both agree to use, even if it is imperfect.