Migrator diary: the part of the job nobody teaches. Today, a lesson we learned the hard way that is now the first check our machine runs.
The case
A massage parlour on the Costa del Sol asks us to migrate their WordPress. All normal: they send us the URL, we agree to pull their content and rebuild it in Next.js. We open the migrator, point it at their site… and there was nothing to pull. No WordPress API, no export possible.
The reason? It wasn't WordPress. It was Wix. The client had spent years convinced they had "a WordPress" because that's how it had been sold to them, or because "website" and "WordPress" had become synonyms in their head. And Wix isn't migratable like WordPress: it doesn't expose your content, there's no standard export. That site has to be rebuilt by hand.
It's not unusual. A huge number of people don't know what their website is built with, and that's normal: they hired "a website" and got on with their business. The problem is when someone promises to migrate it without checking first and discovers halfway through the project that it can't be done.
The lesson: check before promising
Since that day, our migrator promises nothing until it knows what's on the other side. Before touching the content, it detects the source platform. Here's how it works, no fluff:
How it sniffs out the platform
- It tries the WordPress API (/wp-json/wp/v2). If it responds with posts and pages, it's WordPress with the door open: clean migration via REST.
- If the API returns nothing, it doesn't give up: it sniffs the homepage. It looks for fingerprints in the HTML — paths, headers, scripts — that give away Wix, Squarespace, Shopify or a WordPress with the API closed.
- And it tells you the truth: "this is Wix, it can't be migrated like WordPress, it has to be rebuilt"; or "it's WordPress but the API is closed, use the WXR export"; or "it's open WordPress, go ahead".
Why this matters (even if it's boring)
Because it changes the conversation from minute one. Instead of discovering the problem halfway through the project — with the client waiting and the budget up in the air — we know before we start. If your site is a real WordPress, we pull it out whole and preserve your SEO down to the last detail. If it's Wix or Squarespace, we tell you plainly: it doesn't get migrated, it gets rebuilt, and we give you the real quote for rebuilding it.
And the two WordPress routes?
When it is WordPress, there are two ways to get the content out:
- REST (wp/v2): if the API is open, we read posts, pages, media and menus directly. Fast and faithful.
- WXR: if the API is closed (some hosts block it), we use WordPress's standard export file (Tools → Export). Same result through a different door.
And all outbound traffic from the machine is hardened against abuse — nobody gets to make us request internal URLs — but that's a story for another day.
Do you actually know what your website is built with? If in doubt, send us the URL in the free audit: we'll tell you in no time which platform it is and whether it can be migrated or needs rebuilding. No surprises halfway through.
Get every autopsy in your inbox
One article a week about websites that work (and the ones that don't): real costs, WordPress, speed and AI. No fluff; unsubscribe in one click.