How do I know whether a recovery came from our changes or the market?
Short answer
Compare the recovered pages against comparable pages you didn't touch across the same window. If your fixed pages rose 40% and untouched pages rose 8%, roughly 32 points are yours. If untouched pages rose 35%, the market recovered and your fix contributed little. Without a control set you cannot separate the two, and timing alone will convince you of whichever answer you prefer.
Why recoveries are harder to attribute than declines
Declines usually have a single identifiable cause. Recoveries almost never do, because several things move at once.
You shipped a fix. A competitor's page decayed. An algorithm update partially reversed. Seasonal demand returned. The AI Overview that was absorbing your clicks stopped appearing on some queries.
All five can be happening in the same eight-week window, and the recovery curve looks the same regardless of which one dominated. Timing correlation feels persuasive and proves nothing, because your fix shipped during a window in which several other things also changed.
Build the control set, ideally before the fix
Take pages affected by the same decline that you deliberately didn't fix, matched on intent bucket, traffic band, and page age. Twenty to fifty is enough.
Selecting them before you intervene is what makes the comparison honest. Picking a control set afterwards means picking pages that make your result look good, and you'll know you did it even if nobody else does.
If you fixed everything and left no control, you can substitute a partial one:
Category benchmark. Search volume trend for your head terms. If the category rose as much as you did, that's your answer.
Competitor visibility. If tracked competitors recovered in the same window without doing anything, the market moved.
Different-segment pages. Pages that didn't have the problem at all, used as a general market indicator.
None is as good as a proper control, and all beat timing correlation.
Read the four outcomes
| Your pages | Control pages | Read |
|---|---|---|
| Recovered | Flat | The fix worked. Strong attribution. |
| Recovered | Recovered similarly | Market recovery. Your fix contributed little. |
| Recovered more | Recovered somewhat | Both. The difference is your contribution. |
| Flat | Recovered | Your fix may have held you back. Investigate. |
The last row is rare and worth taking seriously when it appears, because it suggests the change introduced a new problem while solving the old one.
Give it enough time, and enough runs
Two mistakes truncate recovery analysis.
Calling it in week two. Recoveries are noisy early. A content fix takes eight to twelve weeks for a reliable read, a redirect correction four to eight, a technical fix two. See How long should I wait before deciding an SEO change failed?.
Reading a single observation. One week's data is a draw from a distribution. Use a four-week rolling average, especially for AI-visibility measures where presence is lumpy. Researchers argue visibility should be measured as a distribution across runs, prompts, and time rather than as one snapshot.
The recovery you should check separately
If part of the original decline came from AI answers absorbing clicks, part of the recovery may come from that reversing, which has nothing to do with your work.
Our own state of AI search research, covering more than 22,000 answers, found Google AI Mode returns a citation-rich answer in 97.4% of matched B2B queries and Perplexity in 93.2%, and that once a brand is mentioned for a prompt, presence tends to persist.
Two things to separate. If an Overview stopped appearing on a query, your clicks return with no credit due to you. And if you earned a citation you didn't have before, that's a genuine gain that will keep paying, and it deserves to be reported as a distinct win rather than folded into the traffic number.
Check SERP composition on the recovered queries before and after, or you'll attribute a Google change to your content team.
Claim it at the strength the evidence supports
Match your language to your design, the same way you would for a decline analysis.
With a control set: refreshed pages recovered 38% while matched untouched pages recovered 6%, so roughly 32 points are attributable to the fix.
Without one: traffic recovered 38% following the fix, consistent with the intervention, though we had no control group and the category also rose in this window.
The second sentence is weaker and it's honest. It also protects you the next time someone examines a claim you made, which is the real reason to write it that way.
Run the comparison as a workflow
The reason recovery attribution rarely gets done properly is that it needs two page sets tracked in parallel over months, plus a category benchmark, plus SERP composition checks.
GSC Page Performance Summary returns the daily series for both sets from one run. Get Visibility Events supplies month-over-month AI visibility movement, and brand-vs-competitor gives the market benchmark by showing whether tracked rivals moved in the same window.
workflow-memory ties it together by returning outputs from prior runs, so the recovery is measured against the same frozen baseline every time rather than against a reconstruction.

A recovery-tracking agent:
Start (schedule, weekly) → GSC Page Performance Summary (intervention set, daily) → GSC Page Performance Summary (pre-registered control set) → brand-vs-competitor recipe → Get Visibility Events → Loop / For Each over the recovered queries → Google Search node (check whether an Overview is still present) → workflow-memory (retrieve the pre-fix baseline and prior checkpoints) → Code (compute control-adjusted recovery, and separate the portion explained by Overview disappearance) → Prompt LLM (state the attributable share and write the claim at the strength the design supports) → DOCX export → Send Email.
The instruction to write the claim at the strength the design supports is the part worth encoding. Recovery months are exactly when language inflates, and having the workflow apply the same rule in a good month as a bad one is what keeps the reporting trustworthy over a year.
FAQ
Related answers
- What can I honestly claim from an SEO before-and-after analysis?
- How do I test whether an organic lift was real and not seasonal or brand-driven?
- How long should I wait before deciding an SEO change failed?
- How do I tell seasonality from a real SEO decline?
Want recovery measured against a control set automatically? Start a free Analyze AI trial and connect Search Console.
