The Contentful migration pledge
Migrate from Contentful to Contentstack before October 31, 2026, and get a first-year price match guarantee, 90-day payment deferral, dedicated migration support, pre-built Contentful migration schemas, and post-launch guidance, all on a composable platform built for the agentic future with world-class support and AI tools that remove roadblocks.
Migrate Contentful to Contentstack in 10 minutes. Content and Code.
Today we are launching an AI-guided tool that migrates Contentful to Contentstack, content and code, in under fifteen minutes. I have wanted to write that sentence for years, and now it is real and you can run it yourself.
If you have ever evaluated a new CMS, you know how these stories usually end. The team likes what they see, someone runs the numbers on migration, and everyone quietly decides to stay where they are. Moving is expensive, and that expense, more than any feature and more than any price, has always been the real moat. We just knocked a large hole in it for everyone sitting on Contentful.
What we built
The tool comes in two pieces that work as one. The first is an AI skill that runs in any agentic chat window, and it is the part you actually talk to. The second is a Contentstack CLI plugin called @contentstack/cli-external-migrate, which does the deterministic data work underneath and which you can drive by hand if you prefer.
Most people will only ever touch the skill, and getting it is one command:
npx skills add contentstack/contentstack-agent-skills@migration-companionAlso check out our other skills: contentstack-agent-skills and contentstack-vibe-docs
After that you do not really run anything yourself. You open your agent, tell it you want to migrate a Contentful space to Contentstack, and it takes the wheel. It checks your prerequisites, confirms what it is about to do before it touches a live account, runs each step, and reports back in plain language as it goes. The whole thing feels less like reading a manual and more like pairing with someone who has done this a hundred times.
The AI does not migrate your content, which is the opposite of what most "AI migration" demos are selling. The AI guides and the tooling executes. The actual export, conversion, and import all run through deterministic CLI commands that we test and trust, while the skill reads your environment, works out which steps to run, executes those trusted commands, explains each decision, and validates the result before it moves on. Your data never passes through a model on a wing and a prayer, and that separation is exactly why you can point this at a production Contentful space and trust the result.
Underneath the conversation, the entire content migration collapses into something close to a single command:
csdx migrate:create --source contentful --org <your-org-uid> --space-id <your-space-id>That one command exports your Contentful space, converts it into a Contentstack import bundle, creates a fresh stack in your organization, and imports everything into it. The skill wraps that flow in conversation and handles the prerequisites and checks around it, so you get the guided experience without giving up the deterministic tooling doing the real work.
Want to go deeper? Have a look at our in-depth guide on how to migrate Contentful to Contentstack using our CLI plugin.
It moves the code too
Content migration is the part everyone expects. Code migration is the part that usually eats the timeline, and it is where this gets genuinely fun.
After your content lands in Contentstack, the same tool reads your repository, detects your framework and how it talks to the CMS, and rewrites the data layer for you. It understands the REST, Delivery SDK, GraphQL, and Live Preview, and it migrates in place while keeping your existing patterns instead of forcing a rewrite, so REST stays REST, GraphQL stays GraphQL, and your preview setup is reimplemented to match what was already there.
I tested this on a deliberately realistic setup: a Contentful space with around 540 entries, a Cloudinary integration, and a Next.js front end wired to the Contentful SDK. The autonomous content run finished in about eight minutes, and the migrated site came back as a pixel-for-pixel replica of the original, Live Preview included. The first time I watched it run end to end, my actual message to the team was "holy sh*t."
What comes across is more than the obvious stuff. Content types and fields, entries, assets, locales, taxonomy, references, and rich text converted to JSON RTE. Contentful environments mapped to Contentstack branches. Webhooks, roles and permissions, marketplace and DAM apps like Cloudinary and Bynder, and delivery and preview tokens provisioned with Live Preview and Personalize enabled. The list is long because the goal was a real migration, not a demo that handles content types and waves at everything else.
Complex codebases and crazy setups
I would not trust this post if I wrote it without this section, so here it is.
The automated code migration is genuinely strong on modern mid-complexity sites. On a heavily customized architecture it will struggle, and the right move there is to split content and code into separate supervised passes rather than expecting one autonomous run to nail everything. The tool flags whatever it is unsure about and leaves you notes wherever it guessed, and those notes are worth reading carefully before you ship.
Some things do not migrate cleanly because the source will not let them. Webhook secret values are the clearest example: Contentful redacts them in exports, so no tool can read them back and you re-enter those by hand. A few advanced configurations, like certain publish rules, still need manual reconstruction after the fact.
And to be clear about scope, today this works for Contentful only. More to come soon.
The new question
When the move stops being a project, the conversation changes.
It no longer opens with "how hard is this." It opens with "how fast can we start," which is a very different question to be on the receiving end of. When leaving is cheap, the decision to switch comes down to whether the platform is actually better, and that is the conversation we have wanted to have all along.
There is an irony I am happy to sit with. The easiest CMS to leave is now the easiest CMS to join. We made our front door wide by making the back door of the platform you are on swing open in fifteen minutes, and the friction that protected every incumbent, including the comfortable parts of our own roadmap, just got a lot smaller.
The architecture was built to add new sources next, an export adapter and a conversion adapter at a time, so Sanity, Adobe, Storyblok, Wordpress, and Strapi are where this goes. Contentful is the start, not the point.
Concluding
Migration was the moat. The price was usually fine and the features were usually fine, but the cost of actually moving is what kept people from switching, and a lot of platform decisions got made by inertia because of it.
That changes today. The move takes an afternoon instead of a quarter, "we'd switch but the migration is brutal" stops being a sentence anyone says, and a harder question dies so a better one can take its place.
So if you are on Contentful and you have been curious about Contentstack, here is your invitation. Install the skill, point it at a space, and watch how far it gets in during your morning coffee.
Frequently asked questions
What does the Contentful-to-Contentstack migration tool do?
It exports a Contentful space, converts it to a Contentstack import bundle, creates a new stack, and imports the content. It can also rewrite an app’s CMS data layer to use Contentstack.
How is the AI used if the migration is deterministic?
The AI skill guides the process: it checks prerequisites, runs trusted CLI commands, explains decisions, and validates results. The content transfer itself is executed by tested CLI steps rather than a model.
What is the CLI plugin and key command for the migration?
The deterministic engine is the Contentstack CLI plugin @contentstack/cli-external-migrate. A representative command is: csdx migrate:create --source contentful --org <your-org-uid> --space-id <your-space-id>.
What code patterns and integrations can the tool migrate?
It can detect common setups and migrate REST Delivery SDK usage, GraphQL usage, and Live Preview implementations. It also covers items like locales, taxonomy, references, webhooks, roles/permissions, and common DAM/marketplace apps (with some limits).
What parts typically require manual follow-up after migration?
Some values cannot be exported from Contentful, such as webhook secret values, so they must be re-entered manually. Highly customized architectures and certain advanced configurations may require supervised or manual reconstruction.

The Contentful migration pledge
Migrate from Contentful to Contentstack before October 31, 2026, and get a first-year price match guarantee, 90-day payment deferral, dedicated migration support, pre-built Contentful migration schemas, and post-launch guidance, all on a composable platform built for the agentic future with world-class support and AI tools that remove roadblocks.
Migrating from Contentful to Contentstack in depth
Deep dive guide to migrate from Contentful to Contentstack using an AI-guided workflow or the @contentstack/cli-external-migrate CLI plugin.

Contentstack Vibe Docs
Give your AI coding agent expert-level Contentstack knowledge with the Contentstack vibe docs. Covers REST, GraphQL, Content Management, Image Delivery APIs, TypeScript SDKs, Live Preview, OAuth, and Next.js, Nuxt patterns.