Measurement and attribution
How to tell whether any of this worked. Query segmentation by page tier, distinguishing an indexation problem from a ranking problem, and what to look at weekly versus quarterly.
5 min read · updated 2026-07-26· last reviewed 2026-07-26
A single impressions line for the whole site is the least useful chart in Search Console, because a site is not one thing. A programmatic tier can be collapsing while the total looks flat, because the blog grew by the same amount in the same period.
Segment by page tier and look at each separately. That one change turns Search Console from a vanity dashboard into a diagnostic tool.
The rest of "Measurement and attribution"
950 words covering 7 sections, with the implementation code for 7 checks. The table of contents below is the full outline, so you can see exactly what is behind this.
Already bought it? Read it in your library.
What this chapter covers
- Sitewide numbers hide everything
- The principle
- The implementation
- Indexation problem or ranking problem
- The principle
- The implementation
- Revenue events fire server-side
- The principle
- The implementation
- Event names come from one place
- The principle
- The implementation
- Web vitals with attribution
- The principle
- The implementation
- Reverse-proxy the analytics
- The principle
- The implementation
- What to look at, and how often
Checks this chapter covers
Each one has a command you can run against your own site.
- →A monthly citation check against a fixed set of seed queriesaeo-citation-monitoring
- →Search Console queries are segmented by page tier, not read in aggregatemeasure-gsc-by-tier
- →You can distinguish an indexation problem from a ranking problemmeasure-indexation-vs-ranking
- →Revenue events fire server-side from the webhook, never from a client success pagemeasure-server-side-revenue
- →Event names come from one const object, imported everywheremeasure-event-taxonomy
- →Web vitals are captured with element attribution, not just a numbermeasure-web-vitals-attribution
- →Analytics is reverse-proxied through your own originmeasure-analytics-proxied