Craft CMS to WordPress

WordPress hosting for sites migrating from Craft CMS.

Craft's content model is more expressive than WordPress's out of the box. The migration succeeds or fails on how that model is mapped, long before anything is imported.

Content model mapped firstMatrix fields plannedFree migration
Structure planned firstField mapping documentedRedirects preservedDaily backupsFree SSL24/7 support
Structure first

What Craft gives you that WordPress has to be taught.

Sections, entry types, matrix blocks and relations are first-class in Craft. In WordPress they are a decision somebody has to make deliberately.

Sections become post types, on purpose

Channels, structures and singles map onto different things in WordPress. Treating them all as posts is the choice that produces an unmaintainable site a year later.

ChannelsStructuresSingles

Matrix fields need a real destination

A matrix field is repeatable typed blocks. WordPress has flexible content fields and block patterns, and choosing between them before importing is what keeps the content editable.

Flexible contentOr native blocks

Relations that survive the import

Craft entries reference each other directly. Imported carelessly those become dangling IDs, and the related-content sections quietly render empty.

URLs kept exactly as they are

Craft's URI formats produce paths WordPress would not choose. Preserving them is a rewrite problem, and it decides whether the migration keeps its rankings.

Asset volumes remapped

Craft stores assets in volumes with their own transforms. The files move easily; the transforms and the references to them are the part that needs planning.

The migration

Decide the model, then import once.

There is no reliable one-click Craft importer, which is a feature rather than a problem — it forces the mapping to be decided by a person rather than guessed by a script.

  • Sections and entry types mapped before any import
  • Matrix blocks assigned a destination
  • Entry relations rebuilt and verified
  • URL structure preserved with redirects
Sections
Mapped to post types
9 mapped
Matrix fields
Flexible content
24 block types
Relations
Rebuilt and checked
verified
Redirects
URI formats preserved
in progress
Performance

Templates rendered rather than assembled.

Craft compiles Twig and caches aggressively. WordPress needs the same discipline applied explicitly, or a page that was cheap becomes a page with forty queries.

Mapped
content model
Preserved
URL structure
NVMe
storage on every plan
MagicWP175 ms
Relations queried per block1400 ms
Uncached template assembly830 ms

Illustrative comparison of a page built from many related entries after import. Your numbers depend on how the content model was mapped.

Configuration

What we change moving from Craft CMS

These differ from a standard WordPress site on the same plan, and each follows from importing a richer content model into a simpler one.

SettingWhat we doWhy
Content model mappingSections and entry types assigned to post types before the first importCraft distinguishes channels, structures and singles, and flattening all three into posts produces a site whose editors cannot find anything within a year.
Matrix field destinationChosen between flexible content and native blocks up frontMatrix blocks are repeatable typed content with no direct WordPress equivalent, and importing them before deciding leaves editors with a wall of unstructured HTML.
Entry relationsRebuilt as real references and verified after importCraft entries point at each other by ID, and an import that does not remap them leaves related-content sections rendering empty with no error anywhere.
URL preservationCraft URI formats reproduced with rewrites rather than adopted from WordPress defaultsCraft's URI formats rarely match what WordPress would generate, so accepting the defaults silently changes every address the site has ever ranked for.
Related-content queriesObject-cached per page rather than resolved per blockA page assembled from many related entries issues a query per block once the relations are real, which is how a page that was cheap in Craft becomes expensive here.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly 2 months free
Starter
For personal sites, blogs, and portfolios.
$20/mo
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

Is there a one-click Craft to WordPress importer?
No, and we would be sceptical of one. Craft's model has no direct WordPress equivalent, so anything automatic is guessing at decisions that need a person — which is why we map the structure before importing anything.
What happens to my matrix fields?
They are mapped to flexible content fields or to native blocks, decided before the import. Both work; what does not work is importing first and discovering the content arrived as undifferentiated HTML.
Will my URLs change?
Not if we plan for it. Craft's URI formats are reproduced with rewrites rather than replaced by WordPress defaults, because accepting the defaults changes every address the site has ranked for.
Do entry relations come across?
Yes, but they have to be remapped rather than copied. Craft references entries by ID, and those IDs mean nothing after import — the failure is silent, so we verify rather than assume.
Can I keep my Twig templates?
No. Twig does not run in WordPress, so templates are rebuilt. The layout and markup transfer directly; it is the data access underneath that is genuinely new work.

Move from Craft CMS with the structure intact.

Free migration, a content model mapped by a person, and every URL preserved.