All articles
AnalyticsOct 20268 min read

Building a revenue-connected reporting stack

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.

Why most marketing reports fail to convince the person paying

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.

The three layers of a stack that connects to revenue

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:

  • Platform data shows what you spent and what each platform says it delivered. Pull spend, clicks and reported conversions from Google Ads, Meta, LinkedIn and any other channel into one table with the same columns: date, channel, campaign, spend, clicks and conversions.
  • CRM data shows which enquiries arrived and where they came from. Every lead and deal needs its source stored at the moment it is created, so it can be traced back to a channel and a campaign.
  • Revenue data shows what was actually sold. Deal values and close dates (or, for a webshop, order values net of VAT and returns) come from your CRM, invoicing or shop system, never from the ad platforms.

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.

Use GA4 to understand behaviour, not to set budgets

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.

Clean tracking is the foundation, not an afterthought

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:

  • Keep one naming convention for UTM tags in a shared sheet that builds the links, with fixed lowercase values for source and medium.
  • Add hidden fields to every form so the UTM tags and the landing page are saved on the contact record when the enquiry arrives.
  • Store two source fields in the CRM: the first source, which is never overwritten, and the latest source before the enquiry.
  • Ask 'How did you hear about us?' on the form as well, because it catches word of mouth, podcasts and events that no tag can see.
  • Check once a month what share of new enquiries arrived without a usable source, and trace any sudden rise to a broken form or an untagged campaign.

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.

A one-page report that owners actually read

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.

Where to start

  1. Agree in writing what counts as a qualified enquiry and a new customer, and which source gets the credit, with whoever runs sales and whoever approves the budget.
  2. Audit the links in your live campaigns and move every new link onto one shared UTM naming sheet.
  3. Add hidden source fields to every enquiry form and map them to first-source and latest-source fields in your CRM.
  4. Build one table, in a spreadsheet or Looker Studio, that joins monthly spend per channel with qualified enquiries, won deals and revenue from the CRM.
  5. Send qualified enquiries and won deals back to Google Ads and Meta so their bidding learns from sales rather than form fills.
  6. Put a monthly check in the calendar for enquiries without a source, and fix any leak in the same week you find it.
VP
Valentin Plósz
CEO, scealy
Ready to build a revenue system?
Book a free strategy call and let's scope what's possible for your business.
Let's talk →
Previous
Why most performance marketing fails before it starts
Next
The 4-pillar acquisition system that scales without breaking