
Migrating from WordPress to a modern CMS like Contentful can supercharge your website’s performance, streamline content creation, and make life easier for everyone involved. In this guide, we'll walk you through our process, highlight key considerations, and share tips to ensure a smooth transition.
Using our client Robinson & Henry as an example, we’ll explore key steps and decisions that led to a seamless migration, without losing a single byte of data.
WordPress is a reliable CMS, but it does come with its challenges, like performance issues, dependence on heavy plugins, and some SEO constraints. Switching to Contentful offers you the chance to unlock:
Before diving into migration tools, it’s essential to understand how your data is structured as this is key to ensuring smooth migration and accurate data mapping. The first step is building a conceptual model using the Entity-Relationship (ER) diagram. This step will help map out your existing WordPress content types and their relationships. With this visual reference, it becomes easier for everyone—from developers to stakeholders—to understand how the data will flow in the new system.
Pro tip: Focus on the big picture. We kept the diagram simple by leaving out details like the SEO content type, which had a straightforward 1:1 relationship with every other type.
Conceptual model before migration
Once you’ve mapped your content, it’s time to optimize for better performance. Here’s what worked for us:
These adjustments simplify the model, and make it easier for content creators to work efficiently without worrying about data inconsistencies or overly complicated workflows.
Conceptual model after migration
A key step to avoid future headaches is ensuring your pre-migration data is in order. In this case, some data had already been manually migrated. Sounds good, right? Less content to move should mean less work… Well, sort of. While it reduced the amount of content needing migration, it introduced a challenge: mismatched database IDs.
Why does that matter? In modern CMSs, every new entity gets a unique database ID, which acts as the anchor for linking up related content. Without these unique identifiers, linking pre-migrated entries with new ones often depends on fields like names, which can lead to mismatches. For instance, a service named "Car Accident" in WordPress might appear as "Car Accidents" in Contentful, causing discrepancies. Additionally, some pre-migrated entries were incomplete, such as missing SEO data. Addressing these issues required updating existing entries instead of creating new ones.
Migration is also a great moment to improve your content structure. If you’ve restructured your site for SEO, implement redirects to preserve traffic. Take the time to validate fields like meta descriptions, setting a consistent max length, for instance, to ensure SEO consistency across your site.
Several tools facilitated the migration process:
This WordPress plugin allowed us to fetch data via structured queries, providing the input for functions that imported data into Contentful.
Here are some approaches that can be taken to address the different issues we named during this process.
Consider a bottom-up approach when migrating content. Start with simpler content types, such as SEO entries, which don’t rely on external references. Then, proceed to content types like services and offices that depend on the SEO data. Finally, tackle more complex content types, like articles, which are often linked to multiple other content pieces.
This method allows you to test the migration in smaller chunks before moving on to the more complex relationships.
Before starting the migration process, data related to Attorney, Office and Service & Subareas had already been migrated manually. To address mismatched IDs, we developed custom mapping functions for:
Testing these mappings was important, as missed matches could lead to unlinked entities, causing significant issues later. Our QA team meticulously reviewed these connections to ensure accuracy.
By following a structured migration process, you can significantly reduce the time spent on manual data entry. While some simpler entities might take a minute each, more complex items like detailed articles, can require up to 30 minutes or more to migrate due to the volume of information involved. A well-planned migration can save you weeks, even months of work, time that’s far better spent enhancing your site’s functionality and user experience. After running the migration script, we achieved the following:
Amount of entities per content-type migrated
Migrating to Contentful hasn’t just been a platform switch, it has been a chance to level up our content strategy and workflows. By following a solid migration process, we’ve gained several key benefits:
Transitioning to Contentful brings measurable improvements to your website and content workflows, that said, migrating from WordPress to Contentful wasn’t just about changing platforms, it was about learning what really made the transition work. A streamlined, step-by-step process made all the difference, from tackling mismatched IDs to improving how content types connected. Testing along the way helped catch issues early, and post-migration tweaks like validating SEO fields and setting up redirects ensured everything ran smoothly. The biggest takeaway? Staying organized and intentional is the key to making a migration seamless and setting your content up for success.