SEO Revenue Attribution in 2026: Tracing a $745 Sale Back to One Blog Post
Almost every SEO report ends where the money starts. Impressions, clicks, average position, maybe a traffic-value estimate — and then a shrug about what any of it was worth. The honest answer for most teams is that they cannot connect a single page to a single sale.
So here is the opposite: one customer, one payment of $745.20, traced backwards through every page they touched to the blog post that brought them in. All of it is on screen in an 8-minute walkthrough published on 31 August 2026, and the method behind it is something you can copy this week.
Start at the receipt, not the ranking
Attribution arguments go in circles because they start with the traffic and try to reason forwards. Reverse it. Open the billing system, pick a real payment, and work backwards until you run out of events.
The payment in question is a single charge in Stripe: US$745.20, marked Succeeded, described as Subscription creation. Invoice WKVTTDZP-0001 is marked Paid. The subscription is Active, on automatic collection, against the Business product.
That is the fixed point. It is not modelled, not estimated, not a "traffic value" figure from a rank tracker. It is money that cleared. Everything that follows is the work of connecting it to a URL.
The page that actually did the work
Following the customer record back into product analytics turns up a person timeline with 370 events on it. The earliest one that matters is a page view on a blog post: The Best Framer SEO Plugin.
Two details are worth pausing on. It is a narrow, unglamorous post about one integration — not a broad head-term page. And it was four months old at the time of the visit. The compounding is the point: the article was written once and kept working long after anyone stopped thinking about it.
Nine page views before the login screen
What happens between "read a blog post" and "pay" is the part that traffic dashboards throw away. Here it is, one row per event, reading from the bottom up:
Nine page views across seven distinct URLs, all in one dated block. The visitor landed on the blog post, went to the homepage, then worked through the feature pages — /autoblog, /build-backlinks, /features, /framer — and hit /pricing twice, once early and once right before converting.
That second pricing visit is the tell. A session that touches pricing, leaves to check features, and comes back to pricing is someone building a case, not someone browsing. If you only ever look at landing-page reports, this entire sequence collapses into a single row that says "blog post: 1 session" and tells you nothing.
Signup, survey, subscribe, paid
The tail of the same timeline covers the conversion itself, and it is where server-side events start interleaving with page views:
The chain runs: signed up, logged in, hit the welcome screen, answered the onboarding survey, opened /subscribe, went back out to the public pricing page, returned, opened the account subscription screen — and then three server-side events fire in a row: subscription updated, paid invoice, subscription updated, followed by a page view on /thank-you.
Those posthog-node rows are the ones that make attribution real. A browser-only setup sees someone reach a checkout page and then go quiet. Sending the billing webhook back into the same analytics tool, keyed to the same person, is what closes the loop between a URL and an invoice.
How to wire this up on your own site
Nothing here needs enterprise tooling. The pieces are:
- Anonymous page views from day one. The trail only exists because the blog post was already being tracked before anyone knew who the visitor was. Retrofitting this after a sale is impossible — the events are simply not there.
- Identify on signup, and alias. In the timeline above there is an explicit Alias event sitting between the anonymous browsing and the logged-in session. That single step is what stitches the pre-signup page views onto the customer record. Skip it and you get two unrelated people.
- Pipe billing events server-side. Forward your Stripe (or equivalent) webhooks — subscription created, invoice paid — into the same analytics project, tagged with the same user identifier. This is the difference between "reached checkout" and "$745.20 cleared".
- Query from the money backwards. Once all three exist, attribution is not a model. It is a lookup: find the customer, open the person, scroll to the bottom of their timeline, read the first URL.
If you want the traffic-side version of this story — how the sessions get there in the first place — that is covered separately in our AI SEO case study and the Claude Code SEO case study. This piece is deliberately about the last mile those two stop short of.
The number that traffic reports never show: month two
A one-off sale is a nice screenshot. The reason SEO attribution matters more than it looks is that the same customer keeps paying, and none of the renewals get credited to the page that earned them.
Two charges of US$129.00 — one Subscription creation, one Subscription update — both succeeded. The acquisition cost was paid once, in the form of an article that was already written. The second payment cost nothing to acquire, and a third will cost nothing either.
This is the part that makes SEO look bad in month one and unreasonable in month twelve. Judged on the first invoice alone, plenty of content looks marginal. Judged on the subscription it opened, the same page looks very different — which is the same arithmetic behind enterprise SEO ROI models, just at a scale you can see in a single screenshot.
"But AI killed search"
The standing objection to all of this is that organic search is going away, so measuring it carefully is polishing a corpse. The walkthrough answers that by simply running a query and looking at what comes back.
The generated answer sits on top, and directly beside and beneath it are the sources: a publisher card, a video, and a conventional organic listing. The AI layer did not remove the pages. It reads them, summarises them, and cites them. A page that is not indexed, not structured, and not saying anything specific cannot be summarised or cited — which makes the underlying work more or less identical to what it has always been.
The measurable consequence is that the destination changed more than the mechanism did. Someone can meet your brand in a generated answer, click a citation, and land on a blog post — and that visit shows up in your timeline exactly like the one above.
What to measure instead
| Common metric | What it misses | Ask this instead |
|---|---|---|
| Sessions per landing page | Whether any session ever became money | Which URLs appear first on paying customers' timelines? |
| Keyword rankings | That non-ranking pages still assist conversions | Which pages get read between landing and checkout? |
| Traffic value estimates | Actual invoices | What cleared in billing, and from which entry page? |
| First-touch conversion rate | Renewals | What is this entry page worth across the whole subscription? |
| Bounce rate on blog posts | Multi-visit research behaviour | How many pricing visits precede a signup? |
None of these require a new vendor. They require that page views, identity, and billing all land in one place, keyed to one person.
The honest caveat
A single traced sale is an existence proof, not a forecast. It shows that the chain from post to payment is real and legible; it does not tell you your conversion rate, and one customer is not a sample. What it does do is remove the excuse. "We cannot tell what SEO is worth" is a tooling decision, not a law of nature — and the tooling in this walkthrough is a page-view script, an alias call, and a billing webhook.
The other honest note: the entry page was four months old. If you set this up today, the first traced sale will not be next week. It will be whenever a post you have already published finally gets found.
Want the content side of this loop running on its own? Arvow writes, publishes and updates SEO articles automatically, builds backlinks, and tracks whether AI search engines are citing you — so the pages that produce timelines like the one above keep getting made. See plans and pricing.
Frequently asked questions
Do I need PostHog specifically to do this?
No. The walkthrough uses it, but the requirement is generic: an analytics tool that stores anonymous page views, supports identify/alias so pre-signup activity attaches to the eventual account, and accepts server-side events from your billing provider. Several tools do all three.
What if someone converts across several sessions and devices?
Aliasing handles same-browser-to-account stitching, which covers the common case shown here. Cross-device journeys still break unless the person logs in on both. Treat the traced entry page as the earliest known touch rather than an absolute first touch.
Is this last-click attribution with extra steps?
The opposite. Last-click would credit /pricing, because that is what the visitor saw immediately before subscribing. Reading the full timeline credits the blog post that started the session and shows the feature pages that did the convincing in between.
Does AI-written content actually rank well enough for this to matter?
The page in this example ranks and converts, which settles the narrow question. The broader version — what separates content that earns citations from content that gets ignored — is covered in AI content for SEO.
How long should I wait before judging a page?
Longer than most reporting cycles allow. The entry page here was published four months before it produced this sale, and the customer's value keeps accruing after it. Judging a post at 30 days measures your patience, not the post.
Generate, publish, syndicate and update articles automatically
The AI SEO Writer that Auto-Publishes to your Blog
- Cancel anytime
- Articles in 30 secs
- Plagiarism Free