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
A six-phase framework for moving a site to Agility CMS: inventory, model, map, import, verify and cut over. Who does what, where an AI agent helps, which import tool to use, and links to source-specific guides.
Moving a website or content hub to Agility CMS is a project with a predictable shape. This page breaks it into six phases, says who usually does what, shows where an AI agent saves time, and links to guides for specific source systems and for launch day.
Content you import through the Management API, the Management SDK or the MCP server lands in Staging. The CLI also leaves synced content in staging unless you pass --autoPublish. Nothing goes live until someone publishes it, so plan publishing as its own step.
| Phase | Goal | What you end up with |
|---|---|---|
| 1. Inventory | Know exactly what you are moving | Counts per content type, fields in use, relationships, assets, URLs, integrations |
| 2. Model | Design the target in Agility | Content models, component models, page models, containers, locales |
| 3. Map | Decide how each source field becomes an Agility field | A field map, a URL map and transform rules |
| 4. Import | Load content into Staging | A re-runnable import script and a source ID to Agility content ID map |
| 5. Verify | Prove the import is complete and correct | Counts, spot checks, preview review, sign-off |
| 6. Cut over | Move traffic to the new site | Content freeze, final sync, redirects, DNS change, rollback plan |
Phases 3 to 5 usually loop. Import a small sample, check it, fix the model or the map, and import again. Changing a model is much cheaper before thousands of items exist.
Design the destination before you move anything. Decide which source patterns become:
Aim for structure, not HTML blobs: authors, dates, images and categories should be their own fields or linked items. Legacy Content Migration explains why. Use letters and numbers only in reference names; a hyphenated container name can't be queried through GraphQL.
Write down, for every source content type, which Agility model and container it goes to, and for every field, the Agility field and any transform. A field map is a simple table:
| Source field | Agility field | Field type | Transform |
|---|---|---|---|
title | Title | Text | Decode HTML entities |
body | Body | HTML | Rewrite internal links and image URLs |
author (ID) | Author | Linked Content | Look up the Agility content ID of the imported author |
id | SourceID | Text | Store as-is, so re-runs update instead of duplicating |
Decisions to make in this phase:
Field Types and What the APIs Return shows what each Agility field type stores and returns, which helps you pick types.
Pick the tool that fits the volume and the job:
| Tool | Best for | Notes |
|---|---|---|
| AI agent with the Agility MCP Server | Creating models and importing a reviewable sample of dozens of items | Every call is visible in the conversation. See Migrating Content into Agility with an AI Agent. |
| Management SDK (JavaScript or .NET) or the Management API | Hundreds of items or more, and imports you need to re-run | Save in sequential batches. See the throughput notes below. |
| Content list Excel export and import | Small lists you want to edit by hand | See Importing Content. |
| URL Redirections import | Loading many redirects at once | See URL Redirections. |
| Agility CLI | Copying models and content between Agility instances, for example from a migration sandbox into a blank production instance | Not an importer for other systems. Sync into a blank target; synced items get new content IDs; sync never deletes on the target. |
Import in dependency order: upload assets and create the items others point to (authors, categories, tags) first, keep a map from source ID to Agility content ID, then import the items that reference them, then build pages.
errorMessage. The JavaScript SDK's saveContentItems returns -1 for an item that failed.429 Too Many Requests, wait and retry with an increasing delay. Build the import to slow down when told to rather than aiming at a fixed rate.take and skip until a short page comes back.Before anything is published, check:
cdn.aglty.io, not the old site.The full checklist, with a prompt that asks an agent to run the checks, is in Migrating Content into Agility with an AI Agent.
Launch day has its own sequence: content freeze, final sync, publishing, redirects, the DNS change, cache and webhook checks, and a rollback plan. Follow the Migration Cutover Runbook, and use Keep Your Search Rankings Through a Migration for the SEO side.
One person can hold several of these roles on a small project.
| Role | Responsibilities |
|---|---|
| Project lead | Scope, timeline, freeze dates, the go or no-go decision |
| Content modeler | Inventory, content and component models, the field map. Creating models needs an Agility role that can manage models (Designer, Manager or Admin). |
| Developer | Export and import scripts, the front end, redirects, webhooks, preview |
| Content owners and editors | Review the sample, fix content that can't be mapped automatically, sign off |
| SEO owner | URL inventory, URL map, metadata, post-launch monitoring |
| Agility administrator | Users and roles, tokens, webhooks. Running the CLI needs the Org Admin, Instance Admin or Manager role. |
An agent connected to the Agility MCP Server is most useful at the start and the end of a migration:
Keep people in the loop where it matters: approving the model, reviewing the sample and deciding when to publish. The agent acts with your Agility permissions. Move bulk volume to a script rather than individual tool calls. The whole flow, with prompts and code, is in Migrating Content into Agility with an AI Agent.
Migrating from another system, or from hand-built HTML? The phases above still apply, and Legacy Content Migration covers parsing HTML into structured fields.