SEO QA · Verification process
Post-deployment SEO testing verifies the production website after a release. It catches problems that only exist in production, then compares the live crawl with the last crawl before the release so each change can be classified as intended or not.
Definition
The comparison is the core of the test. A crawl on its own shows what is wrong today, including issues that are years old. A comparison with the pre-release crawl shows only what this release changed, which is the list that needs action now.
Problems that only appear in production
| Source | What goes wrong | How it shows up |
|---|---|---|
| CDN or edge cache | Old HTML served after deploy | Mixed old and new template output across URLs |
| WAF and bot rules | Crawler user agents challenged | 403 or 429 responses, see HTTP 429 guide |
| Production config | Variables missing or different | Wrong canonical host, missing tags |
| Edge redirects | CDN rules conflict with app redirects | New chains or loops |
| Real traffic load | Heavy templates slow down | Response time spikes |
| Consent and tag scripts | DOM altered after load | Rendered output differs from raw HTML |
The smoke test: first hour
A smoke test is a short, fixed list of URLs checked immediately after deploy. Pick one URL per template, not the most popular URLs, because defects are template-wide.
| Item | Expected |
|---|---|
| Homepage | 200, index, follow, correct canonical |
| One URL per indexable template | 200, index, follow, one H1, self canonical |
| robots.txt | Same rules as before release |
| XML sitemap index | 200, lists production URLs |
| One legacy URL with a redirect | One hop to a 200 destination |
A failure here goes straight to the rollback decision below.
The comparison crawl and triage
- Group changes by template312 URLs changing the same way is one defect. Fix the template, not the URLs.
- Match each group to the release notesChanges listed in the release are expected. The rest are candidate regressions.
- Rank by impactStatus and indexability changes come first, then canonicals and links, then on-page elements. Pages with traffic or backlinks come first within each level.
- Verify the fixRe-crawl the affected template and confirm the baseline value is back.
| Change found | In release notes? | Classification |
|---|---|---|
| Title updated on /pricing/ | Yes | Expected |
| noindex on all /guides/ URLs | No | Regression, blocker |
| Footer link to /careers/ removed | Unclear | Needs review |
For the full list of fields to compare, use the SEO regression checklist.
Before and after example
/category/chairs/ crawlable
/category/chairs/ blocked
Prefix matching is explained in the Academy lesson on robots.txt.
Rollback or hotfix
| Situation | Action |
|---|---|
| Sitewide noindex, robots.txt block, or mass 5xx | Roll back immediately |
| Wrong canonicals on one template | Hotfix within hours |
| Missing structured data or H1 on a template | Fix in the next release |
| Single URL on-page changes | Normal ticket |
Search engines recrawl gradually, so a fast rollback usually limits the damage to a small share of URLs.
Follow-up schedule
| When | What |
|---|---|
| 24 to 72 hours | Repeat crawl to catch cache expiry and gradual CDN rollout |
| 1 to 2 weeks | Check indexing and crawl stats in search console reports |
| Ongoing | Run scheduled audits with Slack alerts between releases |