Skip to main content
The end-to-end procedure for the monthly SEO review: gather the data, separate real earned traffic from branded noise, fill the review with attribution proof, and co-create next month. Every review follows the same arc: overview first, then credibility, then next steps.
🎥 Video: Prepare a good client review
Companion page: this SOP is what you do; 3.7 Preparing client-review material is how you write the doc you present. Gather here, write there, present.
Plan next month before you start. Clients become emotionally invested once they’ve co-created the plan. Moving keywords to the following month signals what they’d lose by not continuing, and that’s the retention mechanism. See Part 1 §1.10 Attribution.

Inputs checklist (before you start)

  • GSC access to the client property (log in as sam@synscribe); see connect: 2.1.3
  • The Synscribe keyword planner for this account (for rank cross-referencing)
  • PostHog / analytics access if attribution is set up; see connect: 2.1.4
  • Last month’s review doc (to compare against)
  • The full list of pages you’ve delivered this cycle (to check indexing against)
  • A Notion page for this month’s review (screenshots land here)

Step 1 — Pull the GSC overview, separate branded from earned

  • Log into the client’s GSC as sam@synscribe; set the date range to compare last 28 days vs. previous period
  • Screenshot the top-level metrics (clicks, impressions, CTR, avg. position)
  • Identify branded terms in the query report (brand name, product name, domain name)
  • Subtract branded clicks/impressions from the totals, and record the adjusted non-branded count as the SEO baseline
  • Note whether the trend is up / flat / down vs. the previous period
Report the real number. Branded searches inflate the totals and must be separated out before you claim anything.
Rently example (Mar ‘26): overview showed 3.81k clicks / 50.4k impressions (up from 1.78k / 23.2k). But of the ~2,030 non-branded clicks noted, at least 1.5k came from branded queries like “Rently” / “Rently UAE”, leaving roughly 530 clicks actually attributable to SEO discovery terms. That 530 is the number you report.

Step 2 — Drill into blog performance

  • Filter GSC pages by URL containing /blog
  • Screenshot the blog-level summary (clicks, impressions, CTR, avg. position)
  • List each post with current clicks, previous clicks, and the difference
  • Cross-reference ranks in the Synscribe app to confirm which rankings are your content
  • Flag posts that went from 0 to measurable clicks; that’s the strongest proof new content is indexing and ranking
  • If the client ever questioned content quality, spotlight the highest-ranking posts as counter-evidence
  • Screenshot the live SERP for the top 2–3 posts
Rently example: /blog showed 495 clicks (up from 132) and 49.2k impressions (up from 12k). Seven of the top nine posts went from zero clicks to measurable traffic, direct evidence that newly published content is working.

Step 3 — Drill into every other page category

  • List every URL segment the client has (/uses, /features, /solutions, landing pages…)
  • Filter GSC by each category; record clicks / impressions / CTR / avg. position vs. previous
  • Screenshot each category for the review deck
  • Note any category with 0 / near-0 data and investigate why (indexing, thin content…); this feeds Step 4
Rently example: /uses showed 17 clicks / 1.07k impressions (up from 0/0), early traction. But only 2 use-case pages were indexed of the full published set; pages like /uses/12-cheque-rent and /uses/rent-loan-alternative-dubai weren’t yet in Google’s index, which explained the low numbers.

Step 4 — Verify indexing status (the process checkpoint)

  • Run site:domain.com/category on Google for each URL category to see what’s indexed
  • Cross-reference indexed pages against the full list you’ve delivered
  • For anything missing, find the root cause (trailing slashes, sitemap gaps, noindex…)
  • Check the client’s sitemap.xml; confirm all target pages are actually in it
  • Manually request indexing for missing pages via GSC’s URL Inspection tool; see how-to: 2.5.3 (forward ref)
  • Set a follow-up date to re-check (typically 2–3 days)
Shortfalls in your deliverables are a chance to surface client-side blockers. Don’t bury them; raise them clearly.
Rently example: the /uses section had a trailing-slash issue blocking indexing, and the sitemap at rently-uae.com/sitemap.xml contained only 2 URLs (homepage plus apply page), so no use-case or blog pages were included. Root cause was client-side: the web team hadn’t given SEO access outside the /uses package to update the sitemap. Action: manually request indexing for the affected pages, then re-check in 2 days.

Step 5 — Build attribution evidence

The goal is to fill the review with proof that your content ranks for the target terms.
  • Export the keyword list from Synscribe and sort by current rank; refresh ranks first so the data is current
  • Cross-reference each keyword’s rank in GSC’s Performance › Queries tab
  • Search the top 10–15 keywords directly on Google; screenshot each SERP
  • Highlight in every screenshot which result is the client’s content
  • Be transparent: if a ranking page is the client’s homepage or an older page you didn’t create, say so and do not attribute it
  • Compile all screenshots into a “SERP Evidence” section of the deck
Rently example: SERP screenshots confirmed blog content ranking best rent app uae #1, rent installment plan uae #1, no security deposit rent uae #1 & #3, employer housing advance uae #1, and both keyper vs ezy / keyper vs rently at #1 (a Reddit thread the only non-Rently result on page 1). The rent app uae query gave Rently three of the top three positions (homepage #1, Play listing #2, “3 Best Rent Apps” blog #3).
Real prompt, validate impact in the analytics tool:
find out from [client]'s [analytics tool] what growth looks like over the last couple of
months, and whether it can be attributed to the blogs and /uses pages. do a full exploration
of events and flows first to build a picture of the funnel. then illustrate how much conversion
is attributed to /uses or blog per month vs other channels (split it) — show funnel input,
output (converts), and contribution. i'm validating whether these two things had significant
impact on the org.
Pi builds the funnel picture first, then splits conversion contribution by content type. (See prompt library §5.4.)

Step 6 — Surface opportunities and gaps

Call out what could be better: incomplete deliverables, missing infrastructure, untapped potential. Frame each as an opportunity rather than a failure, with a clear next action and owner.
  • List every incomplete deliverable and why it’s blocked
  • Identify client-side blockers (sitemap access, CMS limits, tracking setup) and document them
  • Note pillars attempted vs. planned; for live pillars, confirm they’re ranking (proof of concept)
  • Recommend an attribution setup if none exists (PostHog / UTM) to close the loop on what content drives signups
Rently example, three opportunities: (1) most LP pillars not yet created (2 of 2 attempted ranked, but the web team hadn’t granted access outside /uses for full deployment); (2) sitemap fix (only 2 URLs, all new pages needed adding, client-side); (3) no attribution layer, so no way to tell if SEO-driven leads convert; setting up PostHog would close the feedback loop.

Step 7 — Establish next steps (co-create the plan)

  • List next month’s content pieces (topic + target keyword + URL slug)
  • Confirm the cycle’s output capacity covers the plan; anything that doesn’t fit gets pushed to next cycle intentionally (this is the FOMO lever)
  • Explicitly move deprioritized keywords to the following month so the client sees what’s queued
  • Flag head terms that would need link building (out of scope for content) so the client is aware; see 3.9 Link building (forward ref) and 3.10 Press release
  • Schedule a check-in with the client’s product/founder to surface upcoming features; new features become anchors for next month’s keyword clusters
  • Set follow-up dates for any indexing/technical fixes; confirm the attribution setup has an owner
Capacity framing: a cycle covers a set number of pages, split between landing pages and blogs. ❓ [needs Raymond / [DECIDE]: standard-tier output per cycle — pricing rework in progress]
Rently example, April ‘26 next steps: re-check indexing for the 3 manually-submitted use-case pages; follow up with the web team on sitemap access; plan 4 new pieces from planner keywords not yet targeted; discuss new product features with the founder for fresh anchors; set up an attribution layer for the May review.

Acceptance checks

  • Branded traffic subtracted: the number you report is earned, non-branded clicks
  • Every published category checked for indexing; missing pages have a root cause + follow-up date
  • Attribution: top 10–15 keywords have SERP screenshots with the client’s result highlighted
  • Nothing attributed that isn’t ours (homepage / old pages flagged honestly)
  • Each gap is framed as an opportunity with a next action and an owner (you vs. client)
  • Next month is co-created: content pieces listed, deprioritized keywords explicitly moved forward
  • The written deck follows 3.7 (clusters not pages, no numbers in commentary)

Edge cases — quick lookup

ScenarioWhat to do
Growth looks huge but it’s mostly brandedSubtract branded queries; report only the earned delta (Step 1)
A page category shows near-zero dataIt’s likely an indexing problem; go straight to Step 4 and find the root cause
Deliverables are missing / blockedSurface as a client-side blocker with a clear owner; don’t bury it (Steps 4, 6)
A ranking page isn’t yoursSay so; do not attribute it (Step 5). Transparency protects credibility
Head term needs link buildingFlag as out-of-content-scope; route to 3.9 / 3.10
Everything planned won’t fit the cyclePush the overflow to next month explicitly; that’s the retention lever, not a failure

Appendix — strategy for mature sites

Once a site has accumulated enough first-party GSC data, shift the keyword strategy toward its own “golden” keywords:
  • In GSC Performance, sort queries by impressions (descending)
  • Filter by average position 4–20, where the site is visible but not capturing clicks yet
  • Identify the top ~20 by impression volume in that range
  • For each, decide: does an existing page target it, or is a new page needed?
  • Prioritize where a small position gain yields the largest click gain (e.g. position 5 to 3)
  • Add these to next month’s content plan
First-party GSC data beats third-party tools (Ahrefs) for this. The progression is to spread out and collect first-party data first, then deepen where the data says. It’s the same signal logic as the SERP cliff §1.4, applied to your own footprint.

See also