IMG Licensing’s site moved from Contentful to Sanity. John Kavanagh, who built the site and sells Contentful-to-Sanity migration work, wrote about the decision on 18 June 2026.
He is a consultant writing about a client, and the article points at his migration service. Treat the IMG paragraph as his account of that job. Treat the rest of the article as his general advice, not as a log of IMG’s fields.
The Contentful → Sanity playbook is the export, the exception list, and the cutover checks. Kavanagh’s post does not walk those steps for this site.
What he says about IMG Licensing
He originally built the site on Gatsby, Contentful, and Netlify. Contentful’s free tier was enough. The editing model was easy to teach. The static Gatsby build matched a media-heavy marketing site.
Years later the site had outgrown that free setup. The next paid Contentful step was over $300 a month. He says that was hard to justify for a focused marketing site.
By the week of the article, the front end was already on Next.js. The Gatsby-to-Next move had happened earlier. In that same week he moved the content platform from Contentful to Sanity.
That is the whole IMG report. No entry count. No asset size. No list of content types. No preview bug. No redirect table. He does not say whether editors were retrained that week, or whether the public URLs stayed put.
What he says you should decide first
The article’s frame is when a move is worth it. He says cost, modelling, preview, workflow, or the front-end data contract can be a real reason. A messy implementation that you would copy into the new CMS is a weak reason.
He tells you to stay when the model matches the work, editors trust preview, integrations are documented, and the front end already handles Contentful cleanly. A slow site might be fetching, caching, or third-party scripts. He wants that ruled out before a CMS swap.
On cost, he is explicit that the license line is the start of the conversation. A cheaper CMS bill disappears if you also pay for modelling, import scripts, a front-end rewrite, preview, redirects, editor training, QA, and a week of watching production. For IMG, the number he gives is the Contentful step he did not want to pay, over $300 a month. He does not give the Sanity bill or the hours.
His recommended sequence is an audit, a list of Next.js coupling, a list of SEO and preview risks, a target model for one or two content types, a prototype of Studio and preview, then an estimate, then a decision. The decision can be “not now”. He does not say which of those steps he ran on IMG before the week he moved it. The prototype section is written as advice to the reader.
He also says the easy migration is the bad end state. Copying every Contentful type and field into a matching Sanity type will render pages. He thinks you should drop fields that exist for old implementation reasons, and make references explicit. Again, that is advice. He does not show IMG’s old model next to the new one.
The vendor plugin is a different page
Sanity’s own post, How to easily migrate from Contentful to Sanity, is a vendor guide to their contentful-to-sanity plugin. Even Westvang describes five steps. Create an empty Studio. Run the tool with a Contentful token. Import the dataset. Point the Studio at the exported types. Deploy and invite the team.
That page is how Sanity wants you to try the product with familiar content. It is not IMG Licensing’s write-up, and Kavanagh does not say he used the plugin.
The plugin’s promise, schema plus content plus assets and references, is the mechanical half. Kavanagh’s warning is the other half. A copied model can be as awkward in Sanity as it was in Contentful.
What I would copy
Separate the front-end move from the CMS move, the way this project did. Gatsby to Next was already done. The CMS cutover was a later week. You can still do them together. You should know which week broke a URL.
Put the paid-plan jump on paper before you call it a migration. His figure is “over $300 a month” for the next Contentful step, against a marketing site that had been on the free tier. Then add the work he lists, or the savings are only the license.
Prototype one content type if the model is the reason you are leaving. He recommends an article, a service page, or a modular landing page. He does not report IMG’s prototype result, so I will not invent one.
If you use Sanity’s plugin, treat the imported types as a staging copy. Kavanagh’s line is that a field-for-field copy is a stepping stone. The Contentful → Sanity playbook is the exception ledger and the URL checks his IMG paragraph leaves out.