How to Tell If SEO Changes Worked: 6 Predictions Graded
By Ugur Saritepe · October 28, 2026
How to tell if SEO changes worked: write the number down before the change, with a date, and grade it on the date. I have done that six times on game-scout.app since 18 August 2026, through an assistant and a log. Four came due. One cleared by nine times, two missed, one cleared and I cannot claim it. In all four, the fact that decided the grade was one the prediction never named.
Where this came from
game-scout.app is a site I run with over a hundred curated game lists. Every change I want to read later goes into a log through the assistant: the page, what changed, one metric, its baseline, the number I expect, and a check date. On the date the row is graded kept, missed or inconclusive. The question that started the log was mine, typed on 30 August about a page that had fallen: "I am trying to understand if we changed anything that caused the downgrade or google was just trying out." A log with dates is the only way I have found to answer that without guessing. On 8 October I pulled the whole ledger.
sc-domain:game-scout.app, due_only false
id page metric baseline expected check date grade
12 vehicle-sim-games clicks 0 5 2026-09-15 missed
13 best-flight-games clicks 22 40 2026-09-15 kept
16 best-open-world-games clicks 0 5 2026-10-03 missed
15 best-vampire-games clicks 0 2 2026-10-04 pending
(17 and 18, both due 2026-10-27, below)Four rows are past their check date. Two are graded missed, one kept, and one is still pending four days after its date.
Then I pulled the daily Search Console series for each page, the crawl date from URL Inspection, and the commit that made each change. What follows is one section per row, ending on what actually decided the grade.
12, missed: Google first showed the page three days before the check date
On 18 August a new hub page, vehicle-sim-games, went live with three in-context links from member lists that already ranked, and I predicted it would be indexed and earn 5 clicks within four weeks. The day after, my own words to the assistant were "I would like to prepare perfect cluster before waiting for results." I did not wait. I built five more hubs in the window.
vehicle-sim-games, daily impressions 2026-08-18 to 09-11 0 on every day 2026-09-12 3 first impression, 25 days after launch 2026-09-15 0 check date: 9 impressions so far, 0 clicks 2026-09-22 2 first click 2026-09-12 to 10-05 90 impressions, 1 click, position 7.5
Missed, and the window measured crawl latency, not the change. Google showed the page for the first time 25 days into a 28-day window. Whatever the hub was going to earn, four weeks could not contain it. The number was wrong too: 90 impressions a month at position 7.5 is one click, which is what do hub pages help SEO found about every hub I built. A prediction on a brand-new URL needs its clock to start at the first crawl, not at the deploy.
13, kept: cleared by three times, and I cannot credit it
The same day I logged the one I was most interested in. best-flight-games had 2,203 impressions and no inbound internal links at all. It got sibling links and a breadcrumb, no content change and no title change. If structure was what held it back, clicks should rise from a 22 per 90 days baseline to 40 with no writing.
best-flight-games, clicks / impressions 28 days to 08-17 (before links) 37 / 3,507 28 days from 08-18 (after links) 121 / 11,747 31 days to 08-07 19 / 1,930 <- flat 10 days 08-08 to 08-17 22 / 1,993 <- climb starts, before the links daily impressions: 08-07 87, 08-08 171, 08-09 191, 08-16 283, 08-18 230
The number cleared and the trend predates the change by ten days. Impressions doubled on 8 August and the links shipped on the 18th. The whole site was climbing in the same weeks, and the three clusters I had set aside as controls held 0, 0 and 11 clicks between them, so they could not show what the page would have done alone. The product row says kept. The honest grade is inconclusive, and that is what I wrote when I graded it in September. One more thing the ledger cannot see: the baseline I logged on 18 August read 22 clicks per 90 days. The same window today reads 41. Search Console filled in late data after the row was written, so the baseline I graded against no longer exists.
16, missed: the page Google never re-read
best-open-world-games had shipped on 5 July and Google's last crawl of it was 26 June, from before the curated version shipped. On 3 September I rewrote it to the current template and announced it to IndexNow, and logged a test with one condition in the text: whether a confirmed recrawl moves the generic open-world queries onto this page. Expected 5 clicks by 3 October.
best-open-world-games 2026-08-01 to 09-02 (before rewrite) 32 impressions, 0 clicks 2026-09-03 to 10-03 (the window) 180 impressions, 1 click 2026-09-24 to 09-30 127 impressions at positions 3.5 to 6.8, 0 clicks URL Inspection 2026-10-08: Submitted and indexed, last crawl 2026-06-26
Missed, and the condition in the text never happened. Google has not fetched the page since 26 June, 69 days before the rewrite and 104 days before I checked. The 127 impressions at position 4 in the last week of September are real, but they landed on a page Google has not read since June, so the rewrite cannot have caused them. The grade says the rewrite did not work. The data says Google has not seen it. Those are different findings, and a prediction about a page edit should carry "fetched after the change" as a precondition, so the grade is inconclusive instead of missed until it is met. One day after the check date, on 4 October, my weekly refresh routine edited the page again, so when a crawl finally comes it will carry both edits. This was the row I logged in two pages ranking for the same keyword; that post promised the grade in a later one, and this is it.
15, pending: nine times the number
best-vampire-games had sat at "Discovered, currently not indexed" for 38 days. On 1 and 2 September it got a hub and derived in-cluster links, no content change and no Request Indexing. I predicted that structure alone would get it crawled, indexed and to 2 clicks by 4 October.
best-vampire-games, daily 2026-09-02 to 09-14 0 impressions 2026-09-15 1 first impression, 13 days after the links 2026-09-18 2 clicks on 33 impressions 2026-09-03 to 10-04 19 clicks, 965 impressions (expected 2) 2026-09-03 to 10-05 21 clicks, 1,016 impressions; indexed, crawled 2026-10-05
Cleared by nine times, which means the forecast was wrong too. A target of 2 was a guess at "more than nothing", and anything from 2 to 40 would have cleared it, so the number did no work. The useful part of this row is the lag, 13 days from links to first impression, and the fact that the links were the only change, which is why I wrote it up in Google stopped indexing my new pages. We have not graded it in the product; the row still reads pending four days after its date.
Two still open, and the log cannot see what is wrong with either
Rows 17 and 18 were logged on 3 October with check dates of 27 October. Both have a problem today that the grade on the 27th will not show.
17 best-coop-rpg-games position 8.3 -> 6.5 and CTR >= 5%, 21 clean days after ship
change described: per-entry screenshots, visible dateModified, sibling links
on 2026-10-08: no commit on any branch; last content edit 2026-08-04
18 best-detective-games clicks 73 -> 150 in the 14 days to 10-27, no edit
action: request indexing by hand; last crawl before: 2026-09-17
crawl on 2026-10-03 at 13:28Z, 36 minutes after the row was loggedRow 17 predicts the effect of an edit that does not exist. We have not shipped the change that row describes; as of 8 October the page's last content edit is still 4 August, and the check date will arrive for an edit that does not exist. If nobody notices, the grade on 27 October will be a verdict on three weeks of nothing. Row 18 is cleaner, and its baseline has already moved: the 14 days to 29 September read 73 clicks when logged and 87 today, the same backfill as row 13. Sep 30 to Oct 5 read 16 clicks, under 3 a day against the roughly 11 a day the row needs.
The ledger itself moved
One more thing I did not expect. On 7 October the same call returned two rows, ids 11 and 14, both pending, and neither of the six above. On 8 October it returned the six above and neither 11 nor 14. The query behind the tool is a plain select by site with no limit. We have not explained why the same call returned two rows on 7 October and six different rows on 8 October. I am naming it because a ledger you cannot trust to return the same rows twice is worse than a spreadsheet, and it is our product.
What Google's docs say about the wait
Google's guide to debugging traffic drops (updated 10 December 2025) says that after changing a site "you'll likely want to wait a few weeks to analyze your site in Search Console again", that "some changes can take effect in a few days, while others could take several months", and that you should avoid "making radical changes if your page is already performing well". Its testing guide (same date) covers split tests and says to "run the experiment only as long as necessary". Neither says what to write down before the change, and neither mentions the crawl date, which decided two of my four grades.
The eight pages I could read that rank for this question on 8 October 2026 list metrics: organic traffic, rankings, conversions, authority, bounce rate. One says goals belong before the campaign starts. None publishes a number written before a change and the grade it got after. The lists are not wrong. They are answers to "is my SEO working", and the question I had was "did this change work", which a list of metrics cannot answer without a date on it.
What I would write down now
Six rows in, the form of a prediction matters more than the number in it. These are the fields the four grades taught me, in the order they failed.
- The page and the dated change, as a commit. Row 17 has a change with no commit. A row without one is a plan, not a prediction.
- A precondition: Google fetched the page after the change.Check URL Inspection's last crawl time on the grading day. Not met means inconclusive, whatever the metric did. Row 16 would have read that way instead of missed.
- The baseline from the window you will grade, re-pulled on grading day. Search Console backfills. Rows 13 and 18 moved from 22 to 41 and from 73 to 87 after they were logged.
- A number that would surprise you if it did not happen. Row 15's target of 2 cleared at 19 and taught me nothing about size. Row 13's target of 40 cleared at 121 and still proved nothing, because of the next field.
- A control that has traffic, and the daily series on both. Row 13's three controls had 0, 0 and 11 clicks. A control with no traffic cannot move, so it cannot tell you anything.
- A check date that starts at the first crawl, not the deploy. Row 12 got its first impression on day 25 of 28.
What we have not done
We have not graded row 15. We have not shipped row 17's change. We have not explained why the ledger returned different rows on consecutive days. We have not changed the product to re-pull a baseline on grading day. The loop that produced these grades is the one described in how to prioritize SEO tasks; this post is what its rows look like a month later, and the rest of the cluster's case studies are on the AI-assistant SEO hub. The next read is 27 October.
How to run this on your own site
- Before the change, write one row. Page, the commit or the date, one metric, the baseline from the exact window you will grade, the expected number, the check date. A spreadsheet is enough; with Search Console connected to your assistant, one call to log_prediction does it with the baseline pulled live.
- On the check date, pull the crawl date first. URL Inspection, last crawl time. Before the change: the grade is inconclusive, move the date.
- Re-pull the baseline, then the window. Performance, Date view, the page filtered. Compare the number to the one you wrote, not to the one you remember.
- Look at the week before the change. If the series was already moving, the grade is inconclusive however far it cleared.
- Write the grade next to the row and leave it there. The misses are the rows you will learn from. Mine are the only reason this post exists.
Log the number before the change, and let the date grade it. Connect your Search Console to your assistant on the TrafficTriage MCP server, and ask it to log each change with log_prediction: the page, the metric, the baseline pulled live, the number you expect and the check date. On the date, ask it to pull the crawl time and the daily series and grade the row against your own data.
Create a free account to connect a property, or run the free check on any URL first.
FAQ
How long should I wait before judging an SEO change?
Until Google has fetched the changed page, and then a clean window of two to four weeks. Google's own guidance is to wait a few weeks and that some changes take days while others take months. On our site the wait was set by the crawl date, not the calendar: a new hub page got its first impression 25 days after launch, a list with new links got its first impression 13 days after them, and a rewritten page had still not been fetched 35 days later. Check the last crawl time in URL Inspection before you read any number.
What should I write down before making an SEO change?
The page, the dated change, the one metric, the baseline pulled from the same window you will grade, the number that would surprise you if it did not happen, the check date, and the precondition that Google has fetched the page after the change. Re-pull the baseline on grading day, because Search Console fills in late data: two of our baselines read 22 and 73 when logged and 41 and 87 four weeks later.
Can I tell if an SEO change worked without an A/B test?
Not with certainty on a small site, and Google's testing guide only covers split tests, which need traffic most small sites do not have. What a dated forecast plus the daily series and a crawl date can do is rule out the common false claims: a climb that started before the change, a page Google never re-read, a target so small that clearing it proves nothing. Four of our six predictions were decided by one of those three.
