Skip to content
Fenn

All posts

How to Report Shipped Work Separately from Ranking Outcomes

Updated 29 September 20265 min readAEOAgenciesMeasurement

Keep two ledgers and never merge them: the work ledger records what shipped (change, URLs, date, approver — fully in your control, complete by construction), and the outcomes ledger records what was observed (rankings, citations, traffic, with dates and measurement method — influenced by you, controlled by nobody). Reports show both, adjacent, bridged only by dates: 'refreshed the comparison cluster Sept 16; the cluster's AI citations moved Sept 24' is a fact pattern the reader can weigh, while 'our refresh drove the citation gain' is a claim you can't prove and will eventually be caught overclaiming. The two-ledger posture costs you weak-sounding reports in good months and buys you the only thing an agency actually sells: being believed in bad ones.

Search attribution is correlational all the way down — engines don't publish why rankings moved, AI answers resample stochastically, and competitors ship changes on their own schedule. Every reporting posture is a choice about how to handle that uncertainty: claim causation and look strong until you're wrong, or separate the ledgers and compound trust slowly. This guide operationalizes the second choice.

The two ledgers, defined

Work ledgerOutcomes ledger
Containschanges shipped: diff, URLs, date, approverobservations: rankings, citations, traffic, with method + date
Controlled byyou — complete by constructionnobody — engines, competitors, seasonality all write to it
Failure modegaps (unlogged changes)false precision (one rank check treated as truth)
Sourceapproval log / audit trailGSC, prompt-set checks, analytics — method named per row

The bridge: dates, not verbs

The report's synthesis section places both ledgers on one timeline and lets proximity speak: shipped rows and moved rows, dated, adjacent. Over a quarter, a client staring at twelve weeks of 'shipped Tuesday, moved the week after' draws the causal inference themselves — and an inference the client drew is durable in exactly the way your claim isn't. The discipline is verbal: 'after' is always safe, 'because' never is. Rewrite every 'drove', 'delivered' and 'resulted in' as a dated sequence and the report gets stronger, not weaker.

The bad-quarter test

The posture proves itself the quarter outcomes go backwards despite real work: the two-ledger report shows a full work ledger, an honest outcomes dip, and whatever context the outcomes ledger's method rows support (algorithm update dated, competitor launch noted). An agency that spent good quarters claiming causation has no vocabulary for this moment — if your work drove the gains, your work drove the losses. The two-ledger agency has been saying 'we control the work, we observe the outcomes' all along, and the bad quarter is the week that sentence pays for every report it weakened.

Implementation, honestly

The work ledger is the hard one culturally — it requires logging every change at ship time, which informal workflows skip. Tooling helps only partly here. In Fenn you mark each fix done when it ships and the activity log records the work, which is the start of a work ledger; the diff and deploy timestamp still come from your own deploy record, and keeping the two ledgers separate is a template you enforce. Manually, the approval workflow's log serves the same role at the cost of discipline. Either way the outcomes ledger needs method rows: a citation count without its prompt set and date is a vibe, not an observation.

FAQ

Doesn't this make it harder to sell results? — It changes what you sell: from claimed causation (which sophisticated clients discount anyway) to a legible fact pattern plus judgment. Agencies report losing exactly one kind of prospect to this posture — the kind that churns in two quarters when the causal story breaks.

What about clients who demand ROI attribution? — Give them the timeline plus honest bounds: 'the refreshed cluster's citations rose the following week; we can't isolate our change from the engine's resampling; here's the pattern across nine shipped changes.' Pattern-across-N is the honest version of ROI, and it gets stronger every month the ledgers stay separate.

Put this to work on your own website.

Fenn finds what your customers ask, drafts the articles and site fixes, and measures what ChatGPT, Claude, Gemini, Perplexity and Grok say about you — with every change waiting for your approval.