Migration
Sanity migration services: move to Sanity from WordPress, Contentful, Drupal or any CMS, with a URL map and permanent redirects
Short answer
Deploi migrates WordPress, Contentful, Drupal and other content management system (CMS) sites to Sanity at $100 CAD an hour, with a written hours estimate you approve first (Deploi, Pricing, October 2026). Deploi's three site estimates include migration. Every old URL is mapped, and moved pages get permanent redirects, because Google says those lose no PageRank (Google Search Central, October 2026).
- Rate
- $100 CAD an hour, prepaidEvery job is estimated in hours and approved in writing before it starts; billed hours never exceed the approved estimate. Prices are before applicable taxes.Source: Deploi (Pricing)
- Headless move, frontend kept
- Deploi's estimate: 150 to 400 hours$15,000 to $40,000 CAD before applicable taxes, about 4 to 8 weeks from kickoff to launch (Deploi's estimate, 25 October 2026).Source: Deploi (Pricing)
- Redirects
- Permanent, kept generally at least 1 yearGoogle says to map every old URL to its new URL and that 301 and other permanent redirects don't cause a loss in PageRank.Source: Google Search Central (Site Moves and Migrations)
- Rankings during the move
- Temporary fluctuation expectedGoogle says a medium-sized site can take a few weeks or more to show its new URLs, and a larger site longer.Source: Google Search Central (Site Moves and Migrations)
Can Deploi migrate WordPress, Drupal, AEM or Sitecore to Sanity?
Yes. Deploi migrates WordPress, Drupal, Adobe Experience Manager (AEM) and Sitecore sites to Sanity, and any other source whose content a script can export, because Sanity's importer reads newline-delimited JSON (NDJSON) files, one document per line (Sanity Docs, October 2026). Each platform has a decision guide and a playbook:
- WordPress: whether to leave WordPress; the WordPress to Sanity playbook.
- Drupal: upgrading Drupal or replatforming; the Drupal to Sanity playbook.
- AEM: AEM 6.5's support dates and your three options; whether AEM as a Cloud Service is a replatform; the AEM to Sanity playbook.
- Sitecore: Sitecore's new support terms and your options; the Sitecore to Sanity playbook.
Does Deploi use the same migration method for every CMS?
Yes. Deploi moves Kentico Xperience, Umbraco, Contentful or a legacy content management system (CMS) to Sanity with the same controls as any other source: a content audit, field mapping, re-runnable import scripts and a redirect map. The method holds because every source ends as newline-delimited JSON (NDJSON) for Sanity's importer, so only the export step changes (Sanity Docs, October 2026).
A Contentful move that keeps your frontend gets its own Deploi estimate. The guides by platform:
- Kentico: Kentico Xperience 13's end of support on 31 December 2026; the Kentico to Sanity playbook.
- Umbraco: Umbraco 13's end of life on 14 December 2026; the Umbraco to Sanity playbook.
- Contentful: renewing, renegotiating or leaving Contentful; what Salesforce ownership changes; the Contentful exit checklist; the Contentful to Sanity playbook.
- Legacy CMS: upgrading, replatforming or rebuilding the front end; which CMS versions lose support in the next 12 months.
What does a CMS migration to Sanity involve?
A content management system (CMS) migration to Sanity with Deploi covers the content audit and field mapping, migration scripts with dry runs, rich text to Portable Text, assets and references, the redirect map, search engine optimization (SEO) checks and the cutover. Each step carries a control, because Sanity's importer doesn't check Sanity Studio validation rules (Sanity Docs, October 2026).
How Deploi runs a migration to Sanity
- Plan and audit. Inventory every content type, field and live URL, and map each to a Sanity document type or object: planning a CMS migration from audit to cutover.
- Checklist with owners. Every item gets an owner and a proof that it's done: the migration checklist.
- Scripted import. Export the target dataset, then load a staging copy first, as Sanity advises (Sanity Docs, October 2026), with stable IDs and expected counts: dry runs, draft prefixes and rollback.
- Redirects and search checks. Map every old URL to its new one and crawl both: keeping SEO through the move.
- Cutover. Run the final import from a fresh export and switch redirects on at launch, with a rollback plan: cutting over with a parallel run.
How much does a migration to Sanity cost?
Deploi estimates a content migration to Sanity at $3,000 to $6,000 CAD for a small site and $15,000 to $40,000 CAD for a large, multilingual or enterprise one, before applicable taxes. Each Deploi site estimate already includes the migration of its size, so migration is never an extra.
| Migration | Hours | CAD before tax | Included in |
|---|---|---|---|
| Up to about 500 entries, one language | 30 to 60 | $3,000 to $6,000 | A marketing site |
| About 500 to 5,000 entries, custom fields, redirects | 60 to 150 | $6,000 to $15,000 | A larger content site |
| Over 5,000 entries, several languages, or an enterprise source | 150 to 400 | $15,000 to $40,000 | A multilingual or multi-site platform |
These are Deploi's estimates as of 25 October 2026: the hours each part of the work takes (the content model, templates and components, integrations, content migration, testing and launch), priced at the published $100 CAD rate. Your project gets its own written estimate, and you agree the total before work begins; it changes only if the scope changes or a cause outside Deploi's control arises.
A bigger or messier migration swaps in the larger size. Sanity's plan, hosting, writing, translation and sales tax are excluded: what the site estimates cover.
What does a WordPress to Sanity migration cost?
A 10-template WordPress site with 800 posts moving to Sanity and Next.js costs 760 hours in Deploi's estimate, or $76,000 CAD before applicable taxes, about 13 to 16 weeks from kickoff to launch. The example has custom fields on the posts, a contact form, one customer relationship management (CRM) integration and the site's current design.
| Line | Hours |
|---|---|
| Content model and schema design | 60 |
| 10 templates at about 45 hours | 450 |
| CRM integration | 25 |
| Visual Editing and live preview | 20 |
| Environments, deployment, analytics and search engine optimization setup | 25 |
| Migrating 800 posts, media and redirects | 90 |
| Testing, accessibility checks and launch | 60 |
| Training and post-launch support | 30 |
| Total | 760 |
The example sits inside Deploi's larger content site estimate (600 to 1,350 hours), so its 90-hour migration line falls in the middle size (60 to 150 hours).
Martin Dejnicki has worked with content management systems for more than 20 years and built and managed hundreds of WordPress sites between 2005 and 2017 (Deploi, WordPress to Sanity, October 2026).
What does it cost to move from Contentful to Sanity and keep your frontend?
Moving from Contentful to Sanity and keeping your Next.js or React frontend is 150 to 400 hours in Deploi's estimate, or $15,000 to $40,000 CAD before applicable taxes, about 4 to 8 weeks from kickoff to launch. The same range covers Strapi, Prismic, Hygraph or a similar headless content management system (CMS).
The largest line is the frontend data layer: queries rewritten in GROQ (Graph-Relational Object Queries), the rich text renderer and preview, so a frontend with more templates costs more.
| Line | This example in hours | Headless move range in hours |
|---|---|---|
| Content model mapping | 30 | 20 to 40 |
| Studio setup and editor training | 20 | 10 to 30 |
| Migration scripts and dry runs | 80 | 40 to 100 |
| 12 templates' queries and rich text at about 10 hours | 120 | 60 to 180 |
| Testing and cutover | 30 | 20 to 50 |
| Total | 280 | 150 to 400 |
Still deciding whether to leave Contentful? Read how Sanity and Contentful compare.
Which search controls does Deploi put on a move to Sanity?
Deploi guards search traffic through a move to Sanity with controls, not ranking promises: a map from every old URL to its new URL, one permanent redirect per URL, and redirects kept generally at least a year, as Google advises (Google Search Central, October 2026). Google says permanent redirects don't cause a loss in PageRank.
- Server-side and permanent: Google recommends a permanent server-side redirect whenever possible (Google Search Central, October 2026).
- One hop: each old URL goes straight to its final URL, because Sanity's redirect guide says chains complicate crawling (Sanity Docs, October 2026).
- Related targets: a retired page redirects to its closest related page, since crawlers penalize redirects to unrelated content (Sanity Docs, October 2026).
- Updated signals: sitemaps, canonical tags and internal links point at the new URLs at launch.
- Crawl comparison: the old URL list is crawled before and after launch.
Rankings still move for a while: Google says to expect temporary fluctuation during a site move (Google Search Central, October 2026). For the rest, read what else breaks when a site goes headless.
What goes wrong in a migration to Sanity?
The costly failures in a migration to Sanity are silent: clean imports that skip validation, overrun a quota or break a link. Deploi puts a control on each before the first import, because Sanity's validation rules run only in Sanity Studio (Sanity Docs, October 2026).
| Risk | What happens | Control |
|---|---|---|
| Validation skipped | Imports bypass Studio rules | Validate the dataset after each run |
| Re-run | Existing IDs fail without --replace | Stable IDs, re-run with --replace |
| Webhooks | Imports fire webhooks in bulk | Disable webhooks first |
| Missing asset | An unavailable file fails the import | Check every asset first |
| Rich text | Unmapped HTML is lost or kept raw | A conversion rule per HTML pattern |
| Document quota | Growth: 25,000 documents, no overage, drafts count | Count documents and drafts first |
| Editors mid-run | Content changes during the run | Final import from a fresh export |
On deploi.ca's own Sanity sections, the FAQ hub's release scripts dry-run by default with expected counts and an export first, unpublished content imports under draft IDs, and Build vs. Buy waves 5 to 8 and the data section's first wave shipped with a rollback list of document IDs. In September 2026 Deploi moved its FAQ between Sanity projects in one dry-run-first transaction.
Questions buyers ask
Can Deploi guarantee our rankings after a migration to Sanity?
No. Google says to expect temporary fluctuation in site ranking during a move (Google Search Central, October 2026), so no one can honestly guarantee rankings after a migration to Sanity. Deploi commits to controls instead: every old URL mapped, one permanent redirect per URL, redirects kept generally at least a year, and a crawl comparison before and after launch.
Do we have to freeze content during a migration to Sanity?
Only for the final import run into Sanity. Deploi's import scripts keep stable document IDs from your old content management system (CMS), so a rerun on a fresh export with --replace overwrites earlier passes (Sanity Docs, October 2026). Editors keep publishing on the old platform until then, so the content freeze lasts one import run.
Can you migrate our images and files to Sanity?
Yes. Sanity's importer uploads each image or file that a document's _sanityAsset property points to, by local path or URL (Sanity Docs, October 2026). An unavailable asset fails the import unless you pass --allow-failing-assets (Sanity Docs, October 2026), so Deploi checks every asset first. Image and file assets don't count toward Sanity's document quota (Sanity Docs, October 2026).
Does Sanity have a migration tool?
Yes. Sanity offers a command-line import (Sanity Docs, October 2026) and a migration skill for AI agents with source-specific guides. Sanity calls the skill "agent-scaffolded, not fully automated" (Sanity blog, October 2026), so Deploi still writes, runs and checks the scripts. Sanity's Model Context Protocol (MCP) server lists guided paths from Contentful, WordPress, Strapi and Drupal (Sanity blog, October 2026).
Can Deploi migrate a Webflow, Wix or Squarespace site to Sanity?
Yes. Deploi estimates a Webflow, Wix or Squarespace move in hours, and you approve that estimate in writing first (Deploi, Pricing, October 2026). Any source whose content a script can export can be imported, because Sanity's importer reads newline-delimited JSON (NDJSON) files (Sanity Docs, October 2026). Sanity Learn also has a Webflow migration course (Sanity Learn, October 2026).
What does Deploi need from us to start a migration?
Deploi needs access to your old content management system (CMS) or a full export, a list of live URLs or a crawl, analytics and Google Search Console access, and the people who approve the content model, so Deploi can estimate the migration in hours. You approve the total in writing before work starts (Deploi, Pricing, October 2026).
How long does a migration to Sanity take?
Deploi's estimates as of 25 October 2026, kickoff to launch: 4 to 8 weeks for a headless migration to Sanity that keeps your frontend, and 13 to 16 weeks for a whole 10-template WordPress site. Search lags behind, because Google says a medium-sized site can take a few weeks or more to show new URLs (Google Search Central, October 2026).
Deploi’s point of view
- Our take
- Migrate to Sanity in passes, not in one weekend: script the import so it can run again, prove it on a staging dataset, and cut over only when counts, validation and the URL map all check out. Remodel while you move, because a one-to-one copy carries the old platform's page-shaped content into a system built for structured content.
- Where we disagree
- Migration pitches promise no traffic loss. Google says to expect temporary ranking fluctuation during a site move, so the honest promise is controls, not outcomes: every URL mapped, permanent redirects kept generally at least a year, and a crawl before and after launch. The second mistake is trusting a clean import. Sanity's validation rules run in Sanity Studio, not on imported content, so an import that succeeds can still load documents editors can't publish.
- What we’ve seen
- Deploi ships its own Sanity content in packages. The FAQ v2 release on deploi.ca was built with scripts that dry-run by default, expected counts and a dataset export first, and its short-URL answers are live. The first wave of deploi.ca's Shopify data section went in as one package of 406 documents and 159 images, with check queries and a rollback list of document IDs. The Build vs. Buy waves import unpublished content under draft ID prefixes. In September 2026 Deploi moved its FAQ from a standalone Sanity project into a shared one in a single dry-run-first transaction.
- What we refuse to promise
- We don't promise unchanged rankings, or a launch date before the content inventory is done. We do promise a written hours estimate before work starts, billed hours that never exceed it unless a cause outside Deploi's control, such as a third-party integration issue, changes the work.
- What we'd tell you to do first
- Crawl your live site and export your URL list before anyone touches a schema. The URL map and the content model come from the same inventory, and the pages you decide to retire need redirects as much as the pages you keep.
When this answer changes
- Google changes its site move guidance, including how long to keep redirects
- Sanity changes the importer's validation, replace or asset handling, or the dry-run default of sanity migrations run
- Sanity changes Growth's 25,000 included documents or its no-overage rule
- Sanity's migration skill or MCP server adds or drops a source platform
- Deploi revises its Sanity estimates or changes its $100 CAD rate or terms
Sources
Every source opened and checked on 25 October 2026.
- Deploi, Pricing
- Google Search Central, Site Moves and Migrations
- Sanity Docs, Import data
- Sanity Docs, Important considerations for schema and content migrations
- Sanity Docs, Managing redirects with Sanity
- Google Search Central, Redirects and Google Search
- Sanity, Plans that scale with you
- Sanity Docs, Plans and payments
- Sanity Blog, What's new in August
- Sanity Blog, You'll need a CMS eventually. Let your agent set it up.
- Sanity Learn, Replatforming from a legacy CMS to a Content Operation System
- Deploi, WordPress to Sanity Migration
- Sanity Learn, Convert rich text to Portable Text