Technical SEO Audit WorkshopVerifying fixes and reporting to stakeholders · Lesson 11 of 14

Verifying fixes: recrawl, Search Console and logs

Article · 12 min · 8 min lecture

Video lecture

Verifying fixes: recrawl, Search Console and logs

12 chapters · about 8 min · full transcript

Coming soon

Chapter 1 of 12

Verifying fixes

  • Merged ≠ fixed
  • Three layers: production, Google, logs
  • When a fix 'doesn't work'

The narrated lecture is in production

Every chapter is scripted and ready. Browse the chapters and read the full transcript now — the video will appear here when it’s published.

Chapters

Merged is not fixed

A ticket is not done when the pull request merges. It is done when production behaves as specified and search engines have processed the change. Verification has three layers.

Layer 1: Production behaviour (same day)

Use the same crawl configuration saved in Module 1 and list-crawl the affected URLs in production.

For RC1 (canonicals), a check in a spreadsheet or script:

# check on the production list-crawl export (same config as Module 1)
import pandas as pd
df = pd.read_csv("verify_products.csv").rename(columns={"Address": "address",
                                                      "Canonical Link Element 1": "canonical"})
df["segment"] = df.address.str.extract(r"/(products|journal)/")[0]
bad = df[df.segment.notna() & (df.canonical != df.address)]
print(len(bad), "product/journal URLs still not self-canonical")
bad[["address", "canonical"]].head(20).to_csv("still_failing.csv", index=False)

For RC3 (redirects), recrawl the legacy URL list and confirm:

CheckTarget
Legacy URLs with backlinks → one 301 → 200 relevant pageAll
Chains of 2+ hopsNone in priority tier
Redirects to home pageOnly where the home page is genuinely the closest match
Deliberate 410sOnly on the agreed no-equivalent list

Record results in the ticket with the crawl date and export file.

Layer 2: Google's processing (days to weeks)

  1. URL Inspection on a sample of fixed URLs: request a live test to confirm Google sees the new canonical; optionally request indexing for a handful of key pages (it is rate-limited and not needed for thousands of URLs).
  2. Page indexing report — use Validate fix for the relevant issue type once the fix is live. Validation can take a while (often up to a couple of weeks, sometimes longer on large sites) and will show passed/failed samples.
  3. Sitemaps — resubmit updated sitemaps so recrawling is prompted.
  4. Enhancement reports for structured data changes (RC6) — valid Product items should rise.
  5. Core Web Vitals report (RC5) — field data updates on a rolling 28-day window, so expect a delay before groups move; use Validate fix to track.

Layer 3: Behaviour change in logs (weeks)

Logs confirm that Google's crawling reacts to your changes:

  • After RC2, Googlebot requests to sort=, price=, size= URLs should fall sharply once the robots.txt rules are fetched; requests to product URLs should become a larger share.
  • After RC4, previously uncrawled deep products should begin to appear in logs.
  • After RC3, Googlebot hits on legacy 404s should decline as redirects are followed and 404 URLs recrawled less often.

Create a simple weekly chart of Googlebot requests by segment, annotated with release dates. It becomes the most persuasive visual in your stakeholder report.

Regression watch

Fixes can regress when unrelated code changes. For the first months:

  • Weekly scheduled crawl of a fixed URL sample per template, diffed against the post-fix baseline.
  • Alert if any product canonical differs from its address, any noindex appears on product/category templates, or robots.txt changes.

What if the fix did not work?

Diagnose with the pipeline:

  • Production correct, but Google still selects the old canonical? Check conflicting signals (internal links, sitemaps, hreflang pointing at other URLs) and wait for recrawl; look at last crawl date in URL Inspection.
  • Validation failed on some samples? Open each failed URL — often an edge case (uppercase URLs, trailing slashes, a second template variant).
  • Log behaviour unchanged? Confirm the robots.txt Google fetched (robots.txt report) and that internal links to the blocked patterns were removed.

Verification record

Close each ticket with a short note:

SEO-07 verified 2026-04-18
- Production crawl (config v1.2): 0 of 12,300 product URLs non-self-canonical.
- GSC validation 'Alternate page with proper canonical tag' started 2026-04-19.
- 10/10 sampled URLs: Google-selected canonical = user-declared (URL Inspection, 2026-05-02).
- Evidence: verify_SEO-07.xlsx, screenshots v07-1..3.

Hands-on: the before/after log chart

Reuse the weekly segment table from the log lab (Lesson 2.3) and annotate releases:

# pip install pandas matplotlib
import pandas as pd, matplotlib.pyplot as plt
w = pd.read_csv("googlebot_weekly_by_segment.csv", index_col=0, parse_dates=True)
share = w.div(w.sum(axis=1), axis=0)[["facet", "search", "product", "category"]]
ax = share.plot.area(figsize=(10, 4), title="Share of verified Googlebot requests by segment")
for date, label in [("2026-04-14", "RC1+RC8 live"), ("2026-04-28", "RC2+RC4 live")]:
    ax.axvline(pd.Timestamp(date), linestyle="--"); ax.text(pd.Timestamp(date), 0.95, label, rotation=90, va="top")
ax.set_ylabel("share of requests"); plt.tight_layout(); plt.savefig("verify_crawl_share.png", dpi=150)

Verifying RC8 (bot access)

  • Request product URLs from outside your network with the bots' user agents to confirm no challenge page (header simulation only).
  • Check CDN firewall events for verified Bingbot, OAI-SearchBot and PerplexityBot: challenges should drop to zero on public paths.
  • Bing Webmaster Tools: indexed product counts recover over the following weeks; AI Performance citations may reappear.

Worked example 2: a fix that "didn't work"

On another client, a Jeddah retailer (illustrative), Search Console validation for "Duplicate, Google chose different canonical than user" fails on a third of samples a month after a canonical fix. Opening the failed URLs shows a pattern: all are uppercase variants (/Products/...) linked from an old email template and still returning 200 with a self-referencing canonical. The fix: 301 uppercase paths to lowercase and correct the email template. Validation passes on the next attempt.

Common mistakes

  • Verifying on staging only.
  • Requesting indexing for thousands of URLs manually instead of fixing signals and sitemaps.
  • Declaring victory from one URL Inspection sample.
  • Forgetting that CWV field data lags by weeks.

Key takeaways

  • Verify in three layers: production behaviour, Google's processing, and crawl behaviour in logs.
  • Reuse the saved crawl configuration so before and after results are comparable.
  • Use Validate fix in Search Console and expect processing to take days to weeks.
  • Record verification evidence in each ticket and watch for regressions.

Check your understanding

Quick questions to lock in the lesson. They don’t count towards your certificate.

  1. A canonical fix is live in production, but URL Inspection still shows the old Google-selected canonical a few days later. First step?
  2. Why do Core Web Vitals improvements appear slowly in Search Console?

Put it into practice

Write a verification plan for one fix: production checks, Search Console steps, log indicators and a regression alert.

Enrol for free to save your progress

Reading is always free. Enrol to keep your place, take the final assessment and earn a verifiable certificate.