Analytics

Measuring ROI on Content That Never Ranks but Gets Cited

·2026-08-31·18 min read
Editorial illustration of valuing content that produces no clicks. A single large document card sits on the left with a price tag hanging from it, and four connector paths fan out to the right. The paths end in four nodes: an outlined chip labelled DIRECT, a solid red speech bubble labelled CITED, a red circular node carrying a quotation mark, and a solid black chip labelled VALUE. The citation nodes are the visual emphasis, showing that the page carries value through being quoted rather than visited.

A client's marketing lead sent us a spreadsheet with nine pages highlighted in red and one line of commentary: "these produced nothing all year, cutting them."

One of the nine was the single most-cited page in their category. It ranked on page four for its head term, pulled about forty organic sessions a month, and had never once been the last touch before a form fill. By every number in the spreadsheet it was dead weight. It was also the page that ChatGPT, Perplexity and Gemini reached for when someone asked the buying question that defined their market, and the page their own sales team quoted back to prospects on discovery calls without knowing where the sentence came from.

The spreadsheet was not wrong. It was answering a different question than the one being asked.

Every guide on the first page of Google for "how to measure content marketing ROI" gives you the same formula. Return minus investment, divided by investment, times one hundred. Sitecore, HubSpot, the Content Marketing Institute, the New York Times licensing blog, all of them, all the same arithmetic. It is correct arithmetic and it has one hard requirement that nobody states out loud: it needs a click. Without a click there is no session, without a session there is no attributed conversion, and without an attributed conversion the numerator is zero.

Zero is the most expensive number in content measurement, because zero triggers deletion.

This post is the model we replaced it with. Four value streams instead of one, only the first of which requires a ranking. It includes the formulas, the eleven inputs and exactly where to pull each one, a full worked example on a page with no rankings, the keep-refresh-kill decision rule we run quarterly, and an honest account of the three places the model is still guessing.

The Short Answer

Measure content ROI across four value streams rather than one. Direct conversion value is conversions attributed last-touch to the page. Assisted pipeline value is deals whose journey touched the page without closing on it, credited at a partial weight. Citation value is the estimated worth of appearing in AI answers and snippets for the questions the page answers, priced by substitution against the cost of buying that visibility and discounted because a citation is an endorsed impression rather than a visit. Structural value is the onward sessions the page forwards to commercial pages, valued at those pages' own session value.

Sum the four, subtract annualised production and maintenance cost, and divide by that cost. Only the first stream requires a ranking, which is why a page can rank nowhere and still be the most valuable asset in a content library. If the distinction between optimising for rankings and optimising for answers is new, SEO vs AEO vs GEO sets out the three layers this model is pricing. A page with genuinely nothing in any of the four streams should be merged or retired, and the model tells you that too.

Why the Standard Formula Breaks

The formula is not flawed. It is under-specified. It assumes that the value a page produces and the value a page can be observed producing are the same quantity, and for roughly a decade that assumption held well enough to be invisible.

It stopped holding for a specific and well-documented reason, and one that answer engine optimisation exists to address. The surfaces that answer questions have multiplied, and most of them do not send a visitor. AI Overviews resolve the query in place. AI assistants synthesise an answer from several sources and cite them without the user ever leaving the chat. Featured snippets, knowledge panels and map packs have been doing a smaller version of this for years. We wrote up the analytics consequences of that shift in detail in what zero-click search did to our reporting, and the short version is that demand does not disappear when the click does. It relocates into branded search, direct traffic, and the first sentence a prospect says on a sales call.

None of those destinations carry the source page's identity with them. So the page keeps working and stops being visible, and a formula built on visibility reports the page as worthless.

There is a second failure that gets less attention. The formula is page-level and last-touch, which means it systematically over-credits bottom-of-funnel pages and under-credits everything that made the bottom-of-funnel page persuasive. A pricing page converts because someone spent three weeks reading the eleven articles that taught them what to ask about. Last-touch hands the pricing page the entire deal. Run that logic across an editorial budget for four quarters and you will have defunded the top of your own funnel while the dashboard congratulated you.

Here is the comparison that matters, because it is the reason the four-stream model exists at all:

QuestionStandard formulaFour-stream model
Does the page need a click to register value?Yes, alwaysOnly for stream one
What does a cited but unranked page score?ZeroPriced via substitution cost
Are mid-funnel touches credited?No, last touch takes allYes, at a stated partial weight
Can it tell you which pages to cut?It tells you to cut anything without conversionsIt tells you to cut pages empty on all four streams
Is any input a judgment call?Hidden ones, yesTwo, both stated and adjustable
Can a reader disagree and rerun it?Not reallyYes, every parameter is exposed

That last row is the one we care most about. A model that hides its assumptions produces arguments. A model that exposes them produces decisions.

The Four Value Streams

The four value streams of a content pageOnly stream 1 requires the page to rank. The standard ROI formula can see stream 1 and part of stream 4.THE PAGEone assetfour payouts1 · DIRECT CONVERSIONLast-touch conversions on the page. Needs a ranking and a click.MEASURED2 · ASSISTED PIPELINEDeals that touched the page but closed elsewhere. Needs a click, not a ranking.MEASURED3 · CITATION SURFACEAppearing in AI answers and snippets. Needs neither a ranking nor a click.ESTIMATED4 · STRUCTURALOnward sessions forwarded to commercial pages. Pays out on the destination.MEASUREDA page with zero rankings can still pay out on streams 2, 3 and 4

The total is a straight sum. No weighting between streams, no composite index, no score out of a hundred. Every stream resolves to a currency figure so that the four can be added and the result handed to somebody who does not care about marketing.

V = Vdirect + Vassisted + Vcitation + Vstructural

And the return figure itself:

ROI = (V − Cannual) ÷ Cannual

where Cannual is the fully loaded production cost amortised over the page's expected useful life, plus that year's maintenance cost. We use a three-year life for evergreen explainers and one year for anything with a date in the title, which is one of several reasons we have mostly stopped putting dates in titles. If you do not have a fully loaded cost figure to amortise, we broke ours down in the cost of producing AEO content at scale.

Stream 1: Direct conversion value

The stream everyone already has.

Vdirect = conversionslast-touch × lead-to-customer rate × average contract value

Pull the conversions from a landing-page-scoped conversion report in GA4. Pull lead-to-customer rate and average contract value from the CRM, not from a marketing dashboard, and use a trailing twelve-month figure so that one unusual deal does not distort a whole content library's ranking.

For a page that never ranks, this stream is usually zero or close to it. That is the correct answer for this stream. The mistake is stopping here.

Stream 2: Assisted pipeline value

Vassisted = dealstouched × lead-to-customer rate × average contract value × w

deals_touched counts closed-won deals whose pre-conversion journey included the page. w is a credit weight, and it is the first of the model's two judgment parameters. We use 0.25 for a page that appears once in a journey and 0.4 for a page that appears in more than half of all converting journeys in its cluster, on the reasoning that a page most buyers pass through is doing more than incidental work.

You can disagree with those numbers. State whichever ones you use, in the report, every time.

The practical obstacle is not the arithmetic, it is getting deals_touched at all. GA4's path exploration will get you part of the way, but it degrades badly across sessions and devices and it cannot see what happened after the form. The setup that actually works is a first-party one: fire a lightweight event when a visitor reads a content page, hold the last few content paths in a first-party cookie, and stamp them into a hidden field on the enquiry form so they land on the CRM record. Now the question "which articles did our closed-won deals read" is a CRM query rather than an analytics guess. It takes about a day to build and it is the single highest-leverage measurement change most content teams have available to them. We covered the wider attribution stack in content metrics that predict revenue.

Stream 3: Citation value

This is the stream that makes the model worth building, and the one where we are estimating rather than measuring. We say so on every slide it appears on.

The method is substitution cost. Ask what it would cost to buy comparable visibility on the same question, then discount heavily because a citation is an endorsed impression and not a visit.

Vcitation = Σ (volumeq × CPCq × shareq × d) × 12

taken across each question q the page answers, where:

  • volumeq is monthly search volume for the question, from any keyword tool. It understates true demand because assistant prompts are longer and more varied than search queries, which makes the whole estimate conservative. We are comfortable with that direction of error.
  • CPCq is the cost per click of the closest paid term. This is the price the market has already agreed on for one unit of attention on this question, which is why substitution cost is defensible in a way that most "value of a mention" arithmetic is not.
  • shareq is your citation share: across a repeated sample of answers to that question, the proportion in which your page is cited.
  • d is the no-click discount, the model's second judgment parameter. We use 0.15 to 0.25.

Two things about that discount, because it carries a lot of weight.

First, why it is not 1.0. A click is a visitor on your property, in your funnel, retargetable and measurable. A citation is a third party telling a buyer your answer is the right one, then keeping the buyer. The endorsement is worth something real, arguably more per unit than a cold click, but you capture far less of it. We settled on the 0.15 to 0.25 band by back-solving from the branded-search and direct-traffic lift we could actually observe in periods where citation share moved sharply. It is a calibrated guess, not a measurement, and a reader who prefers 0.1 or 0.35 should rerun the model with their number.

Second, and this matters more: share_q from a single query is worthless. In our own 90-day AI citation study we ran 62 buyer questions across ChatGPT, Gemini and Perplexity three times each for 14 brands, just over 7,200 recorded answers. A single check disagreed with itself 39 percent of the time. The three engines named the same brand across all three only 18 percent of the time. If you sample once you are not measuring citation share, you are sampling noise and then multiplying it by a CPC.

So sample repeatedly. Three runs per question per engine is our minimum, monthly, and we use the mean. The mechanics of building that sample are in AI citation tracking, including the free manual version if you have no tooling budget.

One finding from that study changes how you should read this stream: 63 percent of the citations pointing at the brands we tracked went to domains the brand does not own. Review sites, directories, Reddit threads, press coverage. If your citation share is low, the problem may not be your page. It may be that the surface is being answered by somebody else's page about you, which is a digital PR and community problem rather than a content problem, and no amount of rewriting the article will fix it.

Stream 4: Structural value

The page's job may be to forward a reader, not to convert one.

Vstructural = sessionsforwarded × session valuedestination

sessions_forwarded is the count of sessions that landed on the content page and subsequently reached a commercial page. In GA4 this is a path exploration with the content page as the starting node and your service or product pages as the endpoint. session value_destination is that commercial page's own revenue-per-session, which you already need for other reasons.

This stream is small for most pages and occasionally enormous for a few. Comparison articles, buyer's guides and glossary pages tend to over-index here. It is also the one stream the standard formula partially captures, since a forwarded session that converts on the destination page does show up somewhere in your reporting, just credited to the wrong page.

Resist the temptation to inflate this stream with internal-link equity arithmetic. You will find people online pricing internal links against the market rate for a paid backlink. Internal links do not have a market and that number is fiction. Forwarded sessions are real, countable and defensible. Stop there.

A Worked Example: One Page, Zero Rankings

The related searches under this query are all asking for a template and an example, and nobody on page one supplies either. So here is the full arithmetic on a page of exactly the type the opening spreadsheet wanted to delete.

The page. A B2B services explainer answering a category-defining buying question. Live 14 months. Ranks position 31 for its head term. 40 organic sessions a month. Never once the last touch before an enquiry.

The inputs. These are representative figures for a mid-market B2B services firm, chosen to show the mechanics on a realistic shape of business. Swap your own in; every number below is an input, not a finding.

InputValueSource
Last-touch conversions, trailing 12 months0GA4, landing-page-scoped conversions
Closed-won deals whose journey touched the page3CRM, content-touched field
Lead-to-customer rate12%CRM, trailing 12 months
Average contract value₹4,50,000CRM, trailing 12 months
Assist credit weight, w0.25Model parameter, stated
Questions the page answers4Content brief plus PAA data
Combined monthly volume across the 4 questions1,900Keyword tool
Blended CPC across the 4 questions₹95Keyword tool
Citation share, mean of 3 runs × 3 engines, monthly22%Repeated citation sample
No-click discount, d0.20Model parameter, stated
Sessions forwarded to commercial pages, 12 months310GA4 path exploration
Session value on destination pages₹340GA4, revenue per session
Fully loaded production cost₹68,000Finance, one-time
Annual maintenance cost₹14,000Finance, recurring

The arithmetic.

Stream 1, direct conversion. Zero conversions, so 0 × 0.12 × 4,50,000 = ₹0. This is the entire number the spreadsheet had.

Stream 2, assisted pipeline. The three touched deals are already closed-won, so the lead-to-customer rate does not apply a second time; we credit contract value directly at the assist weight. 3 × 4,50,000 × 0.25 = ₹3,37,500.

Stream 3, citation. 1,900 × 95 × 0.22 × 0.20 = ₹7,942 per month, × 12 = ₹95,304.

Stream 4, structural. 310 × 340 = ₹1,05,400.

Total modelled value: ₹5,38,204.

Annualised cost. Production amortised over a three-year evergreen life is 68,000 ÷ 3 = ₹22,667, plus ₹14,000 maintenance = ₹36,667.

ROI = (5,38,204 − 36,667) ÷ 36,667 = 1,368%.

Where the value came from on a page ranking position 31Worked example, representative mid-market B2B inputs. All figures in rupees, trailing 12 months.01.5L3.0L4.5L₹01 · DIRECTthe only streamthe old formula saw₹3,37,5002 · ASSISTED3 deals × 0.25₹95,3043 · CITATIONestimated, 22% share₹1,05,4004 · STRUCTURAL310 onward sessions₹5,38,204TOTALcost ₹36,667 in red

The number to take from that is not 1,368 percent. Sensitivity analysis will move it a long way: halve the assist weight and drop the no-click discount to 0.1 and you land nearer 600 percent. The number to take is the shape. Every rupee of the value sits in three streams that the report which flagged this page for deletion could not see, and the one stream it could see was correctly reporting zero.

Where Each Input Actually Comes From

Eleven inputs. Most organisations already hold nine of them.

#InputWhere to get itDifficulty
1Last-touch conversions per pageGA4, landing-page-scoped conversion reportHave it
2Deals touchedCRM content-touched field, backed by GA4 path explorationBuild it
3Lead-to-customer rateCRM, trailing 12 monthsHave it
4Average contract valueCRM, trailing 12 monthsHave it
5Assist weight, wModel parameter you choose and stateDecide it
6Question volumeAny keyword tool, plus PAA and related searchesHave it
7Question CPCSame tool, or Google Ads keyword plannerHave it
8Citation shareRepeated prompt sample, 3 runs per question per engineBuild it
9No-click discount, dModel parameter you choose and stateDecide it
10Forwarded sessionsGA4 path exploration, content page to commercial pageHave it
11Production and maintenance costFinance, fully loaded including freelancer and review timeHave it

The two you have to build are inputs 2 and 8, and neither requires buying anything.

Input 2, the content-touched field. Fire an event on content page views. Keep the last three to five content paths in a first-party cookie. Write them into a hidden field on every enquiry form so they arrive on the CRM record. Now assisted value is a CRM report rather than an analytics inference, and it survives the cross-device breaks that make path explorations unreliable.

Input 8, the citation sample. Write down the questions your buyers actually ask, not the keywords you rank for. Run each one three times per engine, monthly, and record whether your domain is cited and in what position. Three runs is the minimum that survives the 39 percent self-disagreement rate we measured. A spreadsheet is a perfectly good starting instrument; the tooling only becomes worth it past a few hundred prompts.

One thing to watch while you set this up: GA4's default reporting will undercount your AI referral traffic substantially. When we ran the numbers on our own property in what AI search optimisation did to our traffic, the default AI Assistant channel group was hiding 61 percent of it. Match sessionSource against an explicit engine list instead of trusting the default channel grouping, or streams 2 and 4 will both come out low.

The Decision Rule

The model exists to produce one artefact: an ordered list that tells the editorial team what to do next quarter. Run every page through the same six checks.

  1. Total modelled value exceeds annualised cost. If not, it is a candidate regardless of how good the article is.
  2. At least one stream is non-trivial. A page scraping a small amount from all four is usually a page with no clear job.
  3. Citation share is above zero on at least one core question. A zero here on a page written to answer a buying question is a strong refresh signal, not a kill signal.
  4. The page has had a fair run. Under six months live, exclude it. Citation lag alone can run several months.
  5. No cannibalisation with a stronger page. Two pages splitting one intent will both underperform this model, and merging them is the fix rather than deleting either.
  6. Cost trajectory is flat or falling. A page needing a rewrite every quarter to hold its position is more expensive than its cost line suggests.

The outcomes:

PatternAction
Passes 1 and 2, healthy citation shareKeep. Leave it alone, resample quarterly.
Fails 1, but citation share is non-zeroRefresh. The demand is real, the page is not capturing it.
Fails 1, zero citations, forwards traffic wellKeep as a router. It is a navigation asset, judge it on stream 4.
Fails 1, fails 5Merge into the stronger page and redirect.
Fails everything, over six months liveRetire. Redirect to the nearest relevant page.
Passes 1 on stream 3 aloneKeep and defend. This is your most fragile and most valuable class.

That last row deserves a note. A page carried entirely by citation value is genuinely valuable and genuinely precarious, because the citation surface is volatile and you do not control it. Those pages get schema attention, entity reinforcement and freshness maintenance ahead of anything else in the library, which is the bulk of what an AI SEO engagement actually does day to day. The mechanics of holding that position are in entity SEO and the knowledge graph and the content formats LLMs actually cite.

What This Model Gets Wrong

Three things, and we would rather say them than have you discover them in front of a CFO.

The citation stream is an estimate wearing the clothes of a measurement. It resolves to a currency figure, which makes it look like the other three. It is not the same kind of number. Two of its four terms, citation share and the no-click discount, carry real uncertainty, and search volume is a poor proxy for assistant prompt volume in both directions. We present it in reports with the discount value written on the same line, and we run a low case and a high case rather than a point estimate whenever the decision is close.

The assist weight is arbitrary. 0.25 is a convention we chose and stuck to. Its virtue is consistency across a library, not correctness. If you have enough closed-won volume to fit a real multi-touch model, do that instead and use this only as the fallback for thin data.

It cannot see the pages that were never written. The model values what exists. The most expensive content decision in most programmes is the article nobody commissioned because it had no obvious keyword, and no page-level ROI model will ever surface that cost. That gap is why we still run a separate topical coverage audit against the questions buyers ask, which is a different exercise entirely and one we described in how we rebuilt a blog to answer the questions LLMs ask.

There is also a failure mode worth naming: the model can be gamed. Any parameter you control and report on will drift in the flattering direction unless somebody is checking. Fix the discount and the assist weight at the start of the year, write them in the report template, and change them only with a stated reason.

The Mistakes We Made Building It

We started with a score out of one hundred. Composite index, weighted streams, colour-coded. It was useless within two months. Nobody outside the content team could interpret it, and worse, it let us hide a weak stream behind a strong one. Forcing every stream to resolve to currency was the change that made the model survive a conversation with finance.

We sampled citations weekly at first, which produced enough volatility that the ordering of the keep-refresh-kill list changed almost every time we looked. Monthly, with three runs averaged, is stable enough to act on. Weekly was measuring the engines' variance rather than our position.

We also spent an embarrassing amount of time trying to price internal links before accepting that forwarded sessions were the honest version of that stream. The internal-link valuation numbers circulating online are, as far as we can tell, borrowed from paid-backlink pricing and applied to something that has no market. We dropped it.

And we ran the whole thing on a full library the first time. Do not. Take the twenty pages you argue about most and run those, because the model's value shows up in the ordering, and twenty pages is enough to see whether the ordering matches your instincts or usefully contradicts them.

How to Run This on Your Own Content

A four-week rollout that does not require new tooling.

Week 1: fix the inputs you already have. Pull lead-to-customer rate and average contract value from the CRM on a trailing twelve-month basis. Get the fully loaded content cost from finance, including review and freelancer time, not just the writing invoice. Set your assist weight and no-click discount, write them down, and do not change them mid-audit.

Week 2: build the two missing inputs. Ship the content-touched cookie and hidden form field. Write your question list, twenty to sixty buyer questions in the words a buyer would use, and run the first citation sample at three runs per question per engine.

Week 3: score twenty pages. Choose the twenty you argue about, not the twenty that perform best. Run all four streams. Put the results in one table sorted by total modelled value.

Week 4: run the decision rule and act. Apply the six checks, assign each page a keep, refresh, merge, route or retire outcome, and put the refresh candidates into the editorial calendar ahead of anything new. Refreshing a page that already has citation share is consistently cheaper than earning it from scratch, and the refresh mechanics are the same ones in our content decay audit.

Then resample citations monthly and rerun the full model quarterly.

If you would rather not build this yourself, it is close to what we run inside a content and SEO audit, and the reporting structure it feeds is the one described in the metrics we stopped reporting to clients.

Frequently Asked Questions

Does this replace multi-touch attribution? No. If you have the deal volume to fit a real multi-touch model, use it for streams 1 and 2 and keep streams 3 and 4 from this model. Multi-touch attribution has nothing to say about a surface that never produced a session, which is precisely the gap this model was built to close.

What if we have no CRM? Substitute enquiry value for contract value and use a conservative close rate. The absolute numbers get softer but the ordering of the list, which is what you actually act on, holds up well.

Is this only for B2B? No, but the parameters shift. Ecommerce should use contribution margin per order rather than contract value, shorten the amortisation life, and expect stream 4 to be much larger and stream 2 much smaller than the worked example above. Stream 3 also matters far more in some categories than others, which we worked through in which clients are worth a GEO strategy.

How do we present the citation stream to a sceptical CFO? Lead with the substitution logic rather than the output. "This is what it would cost to buy this visibility, discounted by 80 percent because we do not get the visit" is a sentence a finance audience accepts. A number that appears without its method is one they correctly reject.

What if citation share is zero everywhere? Then either the page is not citable in its current form, or somebody else's page is answering the question about you. Check which before rewriting. Our own study found 63 percent of citations pointed at domains the brand did not own, and no rewrite fixes that.

Where to Start

Pick the page you have argued about most. Not your best performer and not your worst, the one where the traffic number and your instinct disagree. Run the four streams on it this week.

Either the model confirms the traffic report, in which case you can retire the page without the argument, or it does not, in which case you have just found out what your reporting has been hiding across the rest of the library.

If you want that run across a full content library rather than one page, talk to us about an audit, or see how the model feeds the editorial plan in our content marketing services. We will run the model, show every parameter, and hand you the ordered list. Whether you agree with our discount rate is entirely up to you, which is rather the point of publishing it.

Aditya Kathotia

Aditya Kathotia

Founder & CEO

CEO of Nico Digital and founder of Digital Polo, Aditya Kathotia is a trailblazer in digital marketing. He's powered 500+ brands through transformative strategies, enabling clients worldwide to grow revenue exponentially. Aditya's work has been featured on Entrepreneur, Economic Times, Hubspot, Business.com, Clutch, and more.

Want to explore working together?

Let's talk about how we can grow your digital presence and increase inbound business.

WhatsApp