Drupal models content in a way WordPress does not, so the decisions made before the import matter far more than the import itself.
A Drupal site is a content model. Importing it without deciding how that model translates produces content nobody can edit.
Drupal nodes and their fields have no automatic WordPress counterpart. The mapping is agreed first, because guessing produces a site your editors cannot work in.
Drupal aliases are arbitrary rather than derived from titles, so the URL a page has today usually cannot be reconstructed. Each one is captured and redirected.
A default import turns every vocabulary into tags and loses the structure the site was organised around. Each vocabulary is mapped deliberately.
Drupal's password hashes are not readable by WordPress, so accounts transfer with a forced reset rather than silently failing at first login.
Drupal handles translations natively and WordPress needs a plugin, so the choice of plugin shapes how the content has to be imported.
This is the migration where rushing the import costs the most, because unpicking a bad content model afterwards means touching every entry.
Most Drupal sites that move are being run by a team that no longer wants to maintain Drupal. The performance is a side effect of the stack getting simpler.
Every item here is a decision rather than a setting, and each one is expensive to revisit after the content has landed.
| Setting | What we do | Why |
|---|---|---|
| Content types and fields | Mapped to post types and custom fields before any import runs | Drupal nodes and their fields have no WordPress equivalent, and an unmapped import produces content that technically exists but nobody can edit. |
| Path aliases | Captured individually and preserved as redirects | Drupal aliases are arbitrary rather than generated from titles, so a page's current URL usually cannot be derived from anything else. |
| Taxonomy | Each vocabulary mapped to categories, tags or a custom taxonomy by decision | A default import flattens every vocabulary into tags, discarding the structure the site was actually organised around. |
| User accounts | Migrated with a forced password reset | Drupal password hashes cannot be read by WordPress, so pretending accounts transfer intact means every user fails to log in on day one. |
| Multilingual content | Planned against a specific WordPress approach before import | Drupal translates natively while WordPress needs a plugin, and which plugin you choose determines the shape the content has to arrive in. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Free migration, fields mapped before import, and every path alias redirected.