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.
Sections, entry types, matrix blocks and relations are first-class in Craft. In WordPress they are a decision somebody has to make deliberately.
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.
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.
Craft entries reference each other directly. Imported carelessly those become dangling IDs, and the related-content sections quietly render empty.
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.
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.
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.
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.
These differ from a standard WordPress site on the same plan, and each follows from importing a richer content model into a simpler one.
| Setting | What we do | Why |
|---|---|---|
| Content model mapping | Sections and entry types assigned to post types before the first import | Craft distinguishes channels, structures and singles, and flattening all three into posts produces a site whose editors cannot find anything within a year. |
| Matrix field destination | Chosen between flexible content and native blocks up front | Matrix blocks are repeatable typed content with no direct WordPress equivalent, and importing them before deciding leaves editors with a wall of unstructured HTML. |
| Entry relations | Rebuilt as real references and verified after import | Craft 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 preservation | Craft URI formats reproduced with rewrites rather than adopted from WordPress defaults | Craft'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 queries | Object-cached per page rather than resolved per block | A 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. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Free migration, a content model mapped by a person, and every URL preserved.