What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
Migrating to Agility
The launch-day sequence for switching to a site built on Agility: content freeze, final sync, publishing, redirects, DNS, cache and webhook checks, a rollback plan and a launch-day checklist.
This runbook covers the switch from your old site to the new one built on Agility: the content freeze, the final sync, publishing, redirects, the DNS change, cache and webhook checks, and how to roll back. It assumes the import itself is done and verified (phases 1 to 5 in Migrating to Agility). For the checks every new site needs before launch, also work through the Website Deployment Checklist.
Name one person as the cutover lead. They run this list, make the go or no-go call, and are the only one who can start a rollback.
agility sync with --preflight first to see what it will do. Sync into a blank target: the sync can't adopt content that already exists on the target, synced items get new content IDs, and the sync never deletes or unpublishes anything on the target. See AgilityCLI.A content freeze stops content changing in two places at once.
Fetch what changed in the old system since your last full import, and re-run your import for just those items:
| Source | How to get only the changes |
|---|---|
| WordPress | The REST API's modified_after parameter, for example /wp-json/wp/v2/posts?modified_after=2026-10-01T00:00:00 |
| Contentful | The Sync API: pass the nextSyncToken saved from your last run |
| Other systems | A modified-date filter or export, or re-export the sections you know changed |
Because the import script looks up items by their source ID, a re-run updates existing items instead of duplicating them. Run batches one after another, and account for every failed item before you go on. Then repeat the verification checks: counts, linked content, assets, and a preview of the pages that changed.
Imported content is in Staging. Publish it in batches:
errorMessage, because a processed batch can still contain failed items. See Batches and the Batch API.publish-cascade routes, or include the nested items in your batch.--autoPublish publishes only the items that are published on the source.Publish shared content (authors, categories, shared components) before the pages that use it, then publish pages. Check a sample on the new site after each step.
OriginURL, DestinationURL, HTTPCode) or through the Management API (up to 250 redirects per call). Each origin URL can appear only once in an instance. See URL Redirections.curl -I against the production domain once DNS has switched.noindex or robots.txt block from the production site. Keep it on staging and preview hosts.There are two cache layers. Agility's CDN serves API responses and assets and invalidates cached content when you publish. Your own host's cache sits in front of your pages and is yours to clear. See Content Delivery & CDN Architecture.
cdn.aglty.io (or your custom asset domain), not from the old site.Decide before launch what would make you roll back, for example key pages failing, forms not submitting, or a large share of top URLs returning 404. Then:
If the problem is one bad batch of content rather than the whole launch, you don't need a full rollback. Unpublish that batch with the same batch workflow call (operation Unpublish), or restore an earlier version of an item from its version history.
noindex, and a correct robots.txt and sitemap.xml.