{"id":641,"slug":"cutover-pattern-low-risk-same-domain","title":"Low-risk cutover pattern for same-domain CMS migration — 2-week pre-flight, DNS TTL 300s, monitor 48h, keep WP firewalled 30 days","kind":"reference","scope":"business","status":"current","audiences":["claude-code","candid-team"],"topics":["deployment","migration-mechanics"],"reference_body":"**Standard low-risk cutover for a CMS-only migration on the same domain:**\n\n1. **Build on `staging.example.com`** with `noindex` enforced at the HTTP-header level (NOT just robots.txt — robots.txt does not stop indexing if pages are linked from elsewhere). Pair with IP allowlist + basic auth + framework preview-deployment password.\n\n2. **Two weeks before cutover:** crawl staging with Screaming Frog, diff against production crawl, resolve every 404/3xx.\n\n3. **One week before cutover:** lower DNS TTL on apex and `www` records to **300 seconds**.\n\n4. **Cutover window (low-traffic time, never Friday):**\n   - Take a fresh DB snapshot of WordPress.\n   - Swap the DNS A/CNAME record(s).\n   - Watch traffic shift in Cloudflare/Vercel/Netlify analytics in real time.\n   - Verify 50 random URLs return 200 on the new stack.\n   - Verify 50 random old URLs that should be redirected actually redirect.\n\n5. **First 48 hours:** monitor Google Search Console Coverage report. Set up host-platform alerts on 5xx and 4xx spikes.\n\n6. **Keep WordPress alive (firewalled, on a subdomain like `wp.example.com` accessible only by IP allowlist) for at least 30 days** as the rollback target.\n\n7. **Rollback plan:** DNS revert. With TTL at 300s, the world sees the old site within 5 minutes.\n\n**Cloudflare-in-front pattern for piecewise migration:** put Cloudflare in front of both old and new origins; use Workers or Page Rules to route specific paths (`/blog/*` → new Astro origin, everything else → WordPress origin). Migrate path-by-path. Right pattern for large sites (200+ pages); only sane way to do a 1,000+ post blog without a multi-week dark period.","rationale_body":null,"metadata":null,"links":{"outgoing":[{"slug":"redirect-map-deliverable-spec","title":"Redirect map deliverable spec — CSV of old→new URL with notes; sources are XML sitemap + Screaming Frog + GSC + Ahrefs/Semrush","kind":"reference","scope":"business","link_type":"depends-on"},{"slug":"rule-keep-migration-redirects-12-months","title":"RULE: Keep migration 301 redirects in place for at least 12 months; never less than 180 days (Google's explicit floor)","kind":"rule","scope":"business","link_type":"depends-on"}],"incoming":[{"slug":"research-brief-wp-migration-playbook","title":"Research brief: The Candid Creative WordPress Migration Playbook (piece 19)","kind":"reference","scope":"business","link_type":"depends-on"},{"slug":"migration-objection-handling-map","title":"Migration objection-handling map — sourced answers to every common client fear about migrating off WordPress","kind":"reference","scope":"business","link_type":"depends-on"}]},"created_at":"2026-05-22T21:23:33.813Z","updated_at":"2026-05-22T21:23:33.813Z"}