Why WordPress to Webflow Content Migration Is More Complex Than You Think
The "I Can Do This Myself" Conversation
A SaaS company. 880 published blog posts. A technical founder who has already migrated Salesforce to HubSpot and Zendesk to HubSpot. In-house developers. They know WP All Export exists, they can run Screaming Frog, and they're looking at the content migration quote wondering why moving blog posts is a five-figure line item.
Fair question. On the surface, content migration looks like an export-import job. Pull posts from WordPress, clean up the CSV, push into Webflow's CMS. A weekend project for a competent developer.
Here's what's actually inside those 880 posts that the export file doesn't show you.
Thousands of Internal Links Hardcoded in Rich Text
Every blog post that links to another blog post uses the old WordPress URL. Not a dynamic reference. A raw href pointing to yourdomain.com/old-wordpress-slug, hardcoded inside the rich text content of the CMS field. On a site with 880 posts and years of cross-linking, you're looking at thousands of internal hrefs scattered across the entire content library.
If those links aren't rewritten, they either 301 redirect (losing link equity with each hop) or return a 404. Both outcomes compound across hundreds of posts. A 301 isn't a free pass. Google follows it, but each redirect hop costs a fraction of the page authority being passed. Chain two or three redirects and the equity loss becomes measurable.
Tools like Claude with Webflow's MCP connector can handle the heavy lifting here. Programmatically scan every rich text field, identify WordPress URLs, map them to new Webflow slugs, and rewrite them in bulk. The automation works. But someone still has to verify every change. That someone needs to understand URL structures, link equity, and the difference between a link that should be updated versus one that should be removed entirely. This is skilled SEO work running on top of automation, not an intern task.
Every Image Points to a Server You're About to Kill
All images inside those 880 posts reference the WordPress server or its CDN. Cancel that WordPress hosting and every image in every post breaks. No graceful fallback. No warning. Broken image icons across your entire blog.
The fix requires re-uploading every image to Webflow's CDN and then rewriting every image URL inside the rich text content of every post. These aren't metadata references. The image URLs live inside the body content itself, embedded in the HTML of each rich text field. At 880 posts with multiple images per post, that's thousands of image URLs to extract, re-host, and replace. Miss one and it sits there quietly until a visitor or a search engine crawler finds the broken reference.
Gutenberg Blocks and Webflow Rich Text Are Not the Same Thing
WordPress Gutenberg stores content as a series of blocks, each with its own HTML output, custom CSS classes, and rendering logic. Webflow's rich text field accepts clean HTML but applies its own rendering rules and limitations. The two content models are fundamentally different.
Shortcodes don't exist in Webflow. Custom HTML widgets from Gutenberg may render incorrectly or not at all. Embedded tables, accordion blocks, code snippets, and call-to-action components all need manual handling. Gutenberg's own RichText component has been through breaking API changes. The multiline property was deprecated in WordPress 6.1 in favor of InnerBlocks, and developers have reported spending 10+ hours trying to migrate a single custom block type. Content portability is difficult within WordPress itself, let alone across platforms.
CSV imports from WordPress into Webflow's CMS break in specific ways: headings lose their hierarchy, paragraph spacing disappears, and words concatenate. There's also a documented Webflow API behavior where href attributes on links inside rich text fields can be stripped during read-write cycles through the API. You push content, it looks correct, but links silently lose their destinations.
These failures are quiet. The post publishes. It looks roughly correct at a glance. Months later, a customer lands on a post with broken formatting, missing CTAs, and dead links. By then, nobody remembers which posts were affected.
Redirects Have a Ceiling Most Teams Don't Know About
Webflow recommends a maximum of 1,000 redirects. No hard limit is enforced by the platform, but every redirect rule gets stored in the site's manifest.json file. As that file grows, it adds weight to every page load and performance degrades. Sygnal's redirect documentation backs this up, specifically calling out the WordPress-to-Webflow path change as a primary scenario that pushes redirect counts into the thousands. WordPress supports base paths like /my-article. Webflow's CMS structures posts under /blog/my-article. That path change alone creates one redirect per post.
880 posts means 880 redirects just for the blog. Legacy pages, old campaign URLs, and pages being merged or removed push the count further. Webflow supports wildcard redirects using capture groups, which can consolidate multiple rules into one. But wildcards only work when URL patterns are consistent. WordPress sites after years of plugins, theme changes, and manual overrides almost always have mixed URL structures that require individual redirect rules.
Exceeding 1,000 redirects doesn't immediately break anything. But the manifest.json bloat affects every visitor on every page load, and the maintenance burden compounds over time. You need a redirect strategy with wildcard consolidation and URL structure planning before the migration starts. Not a redirect dump after it's done.
Metadata Doesn't Migrate Itself
Yoast SEO stores meta titles, meta descriptions, Open Graph titles, OG descriptions, OG images, canonical URLs, and focus keywords. WP All Export can pull all of this into a CSV. That's the easy part.
The receiving end is where complexity lives. Your Webflow CMS collection needs fields architected to map to each piece of metadata before import. Collection field names, types, and validation rules all need to be designed. Meta titles need character limit enforcement. Canonical URLs need proper formatting. OG images need to reference Webflow-hosted assets, not the WordPress CDN that no longer exists once you cancel hosting.
Miss a canonical tag and Google treats the migrated page as a duplicate of something that no longer exists. Miss an OG image and every social share of that post shows a blank preview. Miss meta descriptions across 880 posts and Google generates its own snippets, which may or may not reflect what the page actually offers. On one post, these are minor oversights. Across hundreds of posts, they're systematic SEO damage that takes months to identify because the symptoms are scattered and silent.
What Your WordPress Site Was Never Doing
This is the part most migration conversations miss entirely. We see it on almost every project.
The migration audit reveals what was never there. Yoast SEO generates schema automatically: WebPage, WebSite, Organization, Article on blog posts, BreadcrumbList, and SearchAction. Zero errors. Yoast doesn't produce broken schema. It produces the bare minimum that ships out of the box without anyone configuring it.
For a SaaS company, that means no SoftwareApplication schema. Google has no structured understanding of what the product actually is. No application category, no operating system support, no pricing data, no rating information. Yoast doesn't natively support SoftwareApplication. There's an open GitHub issue (#14812) requesting it. It hasn't shipped. This is the single most important schema type for a SaaS company, and it doesn't exist on most WordPress SaaS sites we audit.
No AggregateRating, even when the company has hundreds of reviews on G2 or Capterra. That review data exists on third-party platforms, but Google's structured data and every major LLM can't see it. If you want ChatGPT, Claude, or Perplexity to position your product as a category leader, they need structured signals. Reviews sitting on G2 without AggregateRating in your schema don't register.
No SameAs on the Organization entity beyond the basics. Yoast includes sameAs linking to social profiles if someone configures it, but most sites never touch this setting. The Organization schema ships with name, URL, and logo. No links to G2 profiles, app marketplace listings, LinkedIn company pages, or YouTube channels. SameAs is what LLMs use to connect a brand's presence across the web and build entity understanding. Without it, each platform presence gets treated as potentially unrelated.
The content migration isn't just moving posts from one CMS to another. It's the first time someone audits and builds the structured data foundation properly. That's not a migration cost. That's the value the migration creates.
What You're Actually Paying For
Content migration at scale is not an export-import job. It's a technical SEO project wrapped in a content operations project wrapped in a structured data project. The export is 5% of the work. The other 95% is everything that happens after the CSV lands.
If your team has the SEO expertise, the Webflow CMS architecture knowledge, and the capacity to manually verify thousands of posts for broken links, missing images, degraded formatting, and incomplete metadata, doing it in-house is a legitimate path. Most teams discover halfway through that the scope was larger than expected, the edge cases multiply faster than they anticipated, and the cost of fixing post-launch mistakes exceeds what a proper migration would have cost upfront.
The gap between "moving blog posts" and "migrating content" is where rankings are preserved or lost, where structured data gets built or ignored, and where the new site either inherits the authority of the old one or starts over.
Frequently Asked Questions
How long does it take to migrate 500+ blog posts from WordPress to Webflow?
Timeline depends on content complexity. A clean blog with consistent formatting and no shortcodes can move in two to four weeks. A site with custom Gutenberg blocks, embedded widgets, mixed URL structures, and unconfigured metadata takes six to ten weeks. The bottleneck is never the export. It's the verification, link rewriting, image re-hosting, and metadata mapping that determine the timeline.
Can I use WP All Export and CSV import to migrate content to Webflow?
For the initial data extraction, yes. WP All Export handles the WordPress side well. But CSV imports into Webflow's CMS frequently lose heading hierarchy, paragraph spacing, and link formatting. Words concatenate. Semantic structure degrades. The CSV gets content into Webflow. The cleanup that follows determines whether the migration preserves or destroys your SEO.
What happens to my SEO rankings after migrating from WordPress to Webflow?
With correct 301 redirects, preserved metadata, intact internal links, and consistent content structure, rankings typically stabilize within four to eight weeks. Skip any of those steps and ranking drops can take months to recover from. The biggest risk is internal links that 404 or redirect chains that dilute link equity across hundreds of interconnected posts.
Do I need 301 redirects for every page when migrating to Webflow?
Every page whose URL changes needs a redirect. If WordPress uses /post-name and Webflow's CMS uses /blog/post-name, that's one redirect per post. Webflow recommends keeping total redirects under 1,000 because each rule is stored in the site's manifest.json and affects page load performance. For sites exceeding that threshold, wildcard redirects and careful URL structure planning before migration are essential.
What structured data do I lose when leaving WordPress and Yoast?
You don't lose much, because Yoast's default output is minimal: WebPage, WebSite, Organization, Article, BreadcrumbList, and SearchAction. What you don't get, and never had, are the schema types that actually matter for your business. SoftwareApplication for SaaS products, AggregateRating for review signals, comprehensive SameAs linking for brand entity recognition, and FAQ or HowTo markup for content pages. Migration is the opportunity to build the schema foundation that WordPress with Yoast never provided.
