We recently ran a successful migration from Prismic to Contentful for one of our clients, and we’re here to share some of the most important insights that we learned along the way.
First things first — why migrate to Contentful
Contentful is built for fast-growing teams and enterprises. It goes beyond a simple headless content management system—it’s an entire content platform. It’ll help you support larger and larger teams with governance and integrations.
Scale, governance and integrations
As you grow your teams and markets, you’ll also need to manage the growing amount of content. A synchronized content structure across your development, staging and production environments helps keep you free of bottlenecks and speeding along. So does role-based access control, which limits access on a single-user basis. This can give you enough control and flexibility. Third-party app integrations lets us add new functionalities whenever we need them—without slowing down our teams with confusing and inert tools.
We at Portaltech Reply also think about these values. When we designed a strategic plan to add value as quickly as possible and expand into new markets for one of our customers, that included migrating them from Prismic to Contentful.
We went from planning to implementation in less than six months. The transition went so smoothly that we released into three markets and two different applications within one week. Here are a few important topics to consider in a migration.
Migrate faster without reworking the entire content model
In order to migrate faster without reworking the entire content model, you need to find compatible content types.
Doing a one-to-one migration is the fastest way to move from Prismic to Contentful. But there are caveats. Prismic has a concept called custom types (which is similar to content types in Contentful) and slices (which are dynamic and can be shared between custom types or unique to each custom type). Both custom types and slices are both considered content types in Contentful.
This problem gets larger when you think of having 40 custom types and each custom type having an unknown number of slices. To overcome this challenge, we developed a script to identify similar slices and create one content type and remove the need to create content type per slice.
How to prevent having too many content-types
You can prevent having too many content-types by thoughtfully eliminating and merging content types.
Prismic has fields that act as structural content types. The concept is based on group fields (to add repeatable fields in combination with custom types) and slices (to add non repeatable and repeatable parts). In Contentful, we only need a reference field.
Remember that content types create the structure of your content model — It needs to represent the actual content and not another structure.
We developed a solution to do just that. If a group field is used as a container to repeat other content types, this eliminates the content type and slices without non-repeatable parts to be one content type.
For slices, we created a content type that can have nested content types of the same type. This eliminates the need for three content types per slice. Depending on the type of configuration, we were able to eliminate about 30-40 content types.
Build a custom user interface without incurring additional development costs
This is, in our opinion, the most important thing to consider. Remember that too many changes on too many fronts can lead to disaster.
If you have worked with different headless CMS solutions, you know that you have to bring your own user interface and the user interface is tightly coupled with CMS solutions. When migrating, consider the impact this is going to have on the user interface.
You’ll need to rework your user interface to the newer solution, test it, ensure it’s reliable and works as seamlessly as the older one. The easiest way to mitigate this problem is to have some kind of abstraction or middleware that fetches the content from Contentful and transforms it into something familiar.