Every content team eventually gets the same question from a CFO or a founder: "we publish two posts a week, what did we actually get for it?" And every content team answers with a GA4 screenshot, sessions, average time on page, maybe a keyword ranking. None of that is an answer. It's an activity report dressed up as a results report. The honest answer to "what did content generate" is a dollar figure traced to specific pieces, and almost nobody's analytics setup can produce one, not because it's impossible, but because nobody wired the two systems that would make it possible together.

Why session-based reporting can't answer the revenue question

GA4 measures sessions, not people, and it measures them per device, per browser, with a lookback window that resets constantly. A B2B buyer who reads your attribution post on their phone during a commute, then returns three weeks later on a work laptop to book a call, shows up as two disconnected, anonymous sessions with no link between them. Multiply that by a sales cycle that runs 60-120 days and involves five to nine content touches before a form fill, and you get the real reason content attribution feels impossible: the tool measuring the content and the tool recording the revenue have never been introduced to each other. GA4 knows what was read. The CRM knows what was won. Nothing in a default setup connects the two, so every content report defaults to the only number both sides agree exists, sessions.

The fix starts at the CRM, not the analytics tool

The stitch has to happen where the deal record lives, because that's the only system with a closed-won dollar figure attached to a specific human. The mechanic is simple to describe and genuinely tedious to implement: every meaningful content-to-conversion path, a blog post to a calculator, a calculator to a contact form, an insight to a newsletter signup that later gets sales-qualified, needs to write its origin into a CRM field at the moment of first contact, not get inferred afterward. That means UTM parameters on every internal link from content into a conversion point, a hidden form field that captures the landing page URL or referring content slug, and a CRM property, first-touch content source, that gets set once and never overwritten by whatever channel happens to close the deal. Do this and a form fill six weeks after someone read your GTM audit post arrives in the CRM already tagged with where it started, instead of arriving as an anonymous "direct" lead the way it would in a stock setup.

Building the actual content-to-revenue report

Once first-touch content source is a real CRM field, the report is a straightforward join, not a modeling exercise: pull every closed-won deal, group by first-touch content source, sum the deal values. That single table answers the question nobody's GA4 dashboard can: not "which post got the most traffic" but "which post is sitting upstream of actual closed revenue." In practice this produces uncomfortable, useful surprises almost every time, a post with modest traffic but tight ICP alignment routinely outperforms a high-traffic post that ranks for a broad, low-intent term. I've seen a single calculator page with under 100 monthly visits sit upstream of more closed revenue than an entire content category getting ten times the traffic, because the people who use a niche calculator are further along and more qualified than people skimming a listicle. You cannot see that from Search Console or GA4 alone. You can only see it once the CRM is doing the counting.

The honest caveat: content is assisted, rarely a single cause

Resist the temptation to over-claim credit for the first-touch post, because it's genuinely rare that one piece of content did the whole job. A buyer typically reads three or four pieces across two or three sessions before ever filling out a form, so first-touch tells you what opened the door, not everything that walked them through it. The more complete version of this report tracks every content touch on a deal, not just the first, and looks at which pieces appear most often across won deals as assists rather than sole causes. First-touch alone is still worth building first because it's the simplest version that actually ships, and it already beats "we don't know" by a wide margin, but say so plainly when you present it: this shows what starts the relationship, not the full multi-touch picture, that's a second, harder project.

Where to start this week if you have nothing wired up

Don't try to retrofit every historical post, that's a rabbit hole that delays the fix indefinitely. Pick your five highest-intent content pages, the ones closest to a buying decision, a comparison page, a pricing-adjacent calculator, your strongest bottom-funnel guide, and wire only those into the CRM this week: UTM the internal links pointing at your contact form or booking page, add the hidden first-touch field, confirm it's populating on new submissions. In 90 days you'll have a real, if partial, answer for your five most important pages, which is already more than almost any content team can currently produce. Expand the list once the first five prove the mechanic works. The goal isn't a perfect attribution model on day one, it's replacing "we think it's working" with a number a CFO would actually trust.

Read this article on your favourite platform