Skip to content

How to migrate from WordPress to Webflow

WordPress exports its content as an XML file, and Webflow's CMS import takes a CSV file, so something has to convert one into the other. The pages and the design are built again in Webflow, the plugins stay behind, and every old address needs a redirect.

By
WP Ministry
Published

In short

  • Webflow's help says a move from another platform is a rebuild, not a transfer. Only CMS content is imported, as CSV.
  • WordPress's export screen makes an XML file. It has to be converted to CSV, by hand, in a spreadsheet, with a plugin or with a script.
  • Map the slug column when you import, or Webflow makes new slugs and every post's address changes.
  • A Webflow Collection item sits under its Collection URL, so a post served directly under the domain gets a new address.
  • Webflow's plan sets how many CMS items and static pages the site can hold. The free plan holds 50 items and 2 static pages.
  • Check where the images in imported posts load from before you cancel the WordPress hosting.

A WordPress site can be moved to Webflow, and Webflow publishes a short guide to it. Its help center is plain about what the move is: there is "no automated way to convert a site from another platform into Webflow", and it "will be a rebuild, not a transfer". One part is imported. Posts and other repeating content go into Webflow's CMS from a CSV file.

The rest is made again in Webflow: the pages, the design, the forms and whatever your plugins did. Your old addresses also change in places, so each one needs a redirect. This guide is for a WordPress site with pages and a blog. A WooCommerce store is a different move.

What moves and what does not

What Webflow does is stated here from its help center and pricing page, as of October 10, 2026.

WhatHow it gets to WebflowNotes
PostsWordPress's export, converted to CSV, then Webflow's CMS importWordPress's export screen makes XML, not CSV. Webflow takes a CSV file of up to 4 MB.
Categories, tags and authorsA Collection for each, tied to posts by reference fieldsImport these before the posts. Webflow matches a reference by the item's name or slug.
PagesBuilt again as static pagesNo import. Copy the text across and lay each page out in Webflow.
Theme and designDo not moveThe design is built again in Webflow.
PluginsDo not moveWebflow's custom code sections take HTML, CSS and JavaScript. Its help says server-side languages such as PHP cannot be used in them.
Images in posts and pagesA direct address in the CSV for an image field. By upload for everything elseWebflow delivers uploaded files through its own content delivery network, so image addresses change.
FormsBuilt again as Webflow formsWebflow keeps submissions under Site settings, then Forms.
CommentsNo import is describedWordPress's export file holds them. Webflow's CSV import fills the fields of Collection items.
Member accountsDo not moveWebflow ended its User Accounts feature on January 29, 2026.
Titles and descriptions for searchEntered againPage by page for static pages. From Collection fields for Collection pages.
RedirectsWritten again in WebflowA two-column CSV file can be imported.
EmailNot part of the moveWebflow says it does not provide email hosting.

Before you start

Settle whether to move at all. Slow pages, plugin conflicts and update work can be fixed where the site is. The guide to whether to leave WordPress for Webflow goes through which reasons hold up.

Take a full backup of the WordPress site. WordPress's documentation says a backup has two parts, the database and the files, and that you need both to restore a site. Keep this copy after the move. If you have no backup tool yet, see WordPress backup plugins compared.

List what each plugin does for the site. Forms, search, a slider, a cookie notice, a membership, a newsletter sign-up. Each line needs an answer on the Webflow side: something Webflow has, an outside service, or nothing.

Count your content against Webflow's plans. These are the figures on Webflow's pricing page and in its help center on October 10, 2026. Webflow changed its plans in May 2026, so check the pricing page yourself.

Site planCMS itemsCollectionsStatic pages
Starter, the free plan50202
BasicNoneNone300
Premium20,00040300

Each post is a CMS item. So is each category, tag or author that you make into an item of its own Collection. Each WordPress page that you build again is a static page. Webflow says the number of items you can import depends on the Site plan, so a blog with more than 50 posts needs its paid plan before the import, not at launch.

Read the order of a move once. The website migration checklist covers what to list first, what to do on the day and what to keep afterwards, on any platform.

Move the site, in this order

Your WordPress site stays live until the last step.

  1. Step 1: List every address the site answers at

    Every page, post, category and tag, and any address you have used in ads, emails or print. Put them in a spreadsheet with an empty column beside each for the new address. This list becomes the redirect map.

    Your sitemap is one place to read them from. If you use WP-CLI, its wp post list command can print the address of every published post and page as a CSV file. url is one of the fields its documentation lists:

    That file has no category or tag archives in it. Add those from the site itself.

    bash
    wp post list --post_type=post,page --post_status=publish --fields=post_type,post_name,url --format=csv > addresses.csv
  2. Step 2: Export the content from WordPress

    In the WordPress dashboard go to Tools, then Export. Leave "All content" selected and click "Download Export File". WordPress saves one XML file, in a format it calls WXR. Its documentation says the file holds your posts, pages, custom post types, comments, custom fields, categories, tags, custom taxonomies and users.

    Two things are not in it. WP-CLI's documentation of the same format says a WXR file does not include the site's settings "or the attachment files themselves". So the images stay on the WordPress site for now, and the export refers to them by address.

    Keep this file whatever route you take next. It is the complete record of what the site said.

  3. Step 3: Open the Webflow site and keep it out of search

    Create the site in your own Webflow Workspace. Until a domain is connected it is published to a webflow.io address, which Webflow describes as a staging environment.

    To keep that address out of search engines, go to Site settings, then SEO, then the Indexing section, and set "Staging indexing" to off. Webflow says this needs a Site plan or a paid Workspace.

  4. Step 4: Decide the Collections

    Webflow keeps repeating content in Collections. A Collection has one page template and one set of fields for all of its items.

    • Posts become one Collection. Webflow offers a "Blog posts" template with fields already in it.
    • Categories, tags and authors become Collections of their own if you want a page for each, or a field on the post if you do not. A post points at them with a reference field, or a multi-reference field for more than one.
    • Custom post types, such as projects or team members, become a Collection each.

    For each Collection, set the Collection URL when you create it. Webflow calls it "the slug for the folder that holds your Collection pages", and it decides every item's address. The section on redirects says what to choose.

  5. Step 5: Get the posts into a CSV file

    This is the step with no button. WordPress's export screen makes XML, and its documentation describes no CSV export. Webflow's own guide says only that you "can use an XML to CSV converter". Its import article says a CSV exported from WordPress is "typically already structured in a way that's compatible with Webflow", which is true once you have one. There are four ways to get one.

    • By hand. For a few dozen posts, skip the CSV. Create each item in Webflow, paste the text, and set the slug and the date to match.
    • A spreadsheet. Build the file yourself: a column for each field, a row for each post. Webflow's import article suggests this for content that does not come from another system.
    • A plugin. WordPress's documentation on importing content names one export plugin, WP All Export. Its listing in the WordPress.org plugin directory says it turns WordPress data into a CSV or XML file and lets you choose and rename the columns. Other plugins do the same job. Check what one exports before you rely on it.
    • A script. Someone who writes code can read the XML file and write a CSV in the shape below. This suits a large blog, and posts whose categories and main images have to come across.

    WP-CLI sits between the last two. Its wp post list command prints posts as CSV, and post_content is one of the fields its documentation lists:

    Its list of fields has none for a post's categories, tags or main image, so those still need a plugin, a script or your own hands.

    Whichever route you take, read the content column before you import it. The block editor stores a post as HTML with a comment around each block, and WordPress's documentation says a block that is drawn when the page is requested is stored as a comment alone. A shortcode, which the documentation calls "a WordPress-specific code", is stored as the code and not as what it showed on the page. Neither means anything to Webflow.

    bash
    wp post list --post_type=post --post_status=publish --fields=post_title,post_name,post_date,post_excerpt,post_content --format=csv > posts.csv
  6. Step 6: Shape the columns to what Webflow's import takes

    Webflow's import article has a table of what each kind of field accepts. These are the rows a blog needs.

    Webflow fieldWhat the CSV cell holds
    NamePlain text, fewer than 256 characters. The post's title
    SlugPlain text, fewer than 256 characters. The post's slug, from the post_name column
    Rich textAny value, HTML included. The post's content. Webflow says it may clean up embeds to remove what it does not support
    Plain textAny plain text. The excerpt, or a description for search
    Date/timeA date in a format Webflow supports. The import article links to the list
    ImageA direct address of an image, ending in a supported image file extension
    ReferenceThe referenced item's name as plain text, or its slug if it has a custom one
    Multi-referenceNames or slugs separated by semicolons
    FileNothing. Webflow says no data maps to a file field, and files are uploaded by hand afterwards

    A CSV file can be up to 4 MB. Split a larger one into several files.

  7. Step 7: Import the CSV files

    Import the Collections that posts refer to first: categories, tags, authors. Then the posts.

    In Webflow, open the CMS panel, choose the Collection and click "Import". Add the file and confirm that the first row is the header row. Then go through the columns. For each one, choose "Map to existing field", "Create new field" or "Do not import".

    Map the slug column to the Slug field. Webflow says that if you do not map a column to the name and slug fields, "the CMS generates those for you automatically", and a generated slug is a changed address.

    Webflow asks whether to make a backup of the site before the import. It also says to stay in the Designer until every item has finished. If items fail, it lists them with the reason for each.

    Import a few rows first and open them before you send the rest.

  8. Step 8: Build the pages and the templates

    Each WordPress page is made again as a static page in Webflow. Copy the text from the live site and give the page the slug it had. A WordPress page with a parent has the parent's slug first in its address. On Webflow a folder does that job.

    Each Collection has one Collection page, which is the template for every item in it. Design it once and connect its elements to the Collection's fields. A blog index is a static page with a Collection list on it. Webflow shows up to 100 items in a list, and more with pagination.

  9. Step 9: Bring the images across

    There are three kinds, and each arrives differently.

    • A post's main image. Give the Collection an image field and put each image's direct address in the CSV. Webflow says images imported this way get no responsive variants, so use images that are already sized, or upload them in Webflow instead.
    • Images on static pages. Upload them to the Assets panel. It takes PNG, JPEG, GIF, SVG, WebP and AVIF files of up to 4 MB each.
    • Images inside the text of a post. They arrive as part of the HTML in the rich text field. Webflow's import article does not say whether it copies them. Open an imported post on the webflow.io address and look at where an image in its text loads from. If the address is still your WordPress site's, the image goes when that hosting is canceled, so add it again in Webflow.

    Documents such as PDFs go to the Assets panel too, up to 10 MB each. Webflow says uploading documents needs a paid Workspace or Site plan.

  10. Step 10: Replace what the plugins did

    Work through the list you made.

    • Forms. Add a Form block and rebuild each form. Webflow sends notifications to the email address of your account unless you change the recipients, and warns that a shared address such as info@ may have trouble receiving them. Send a test entry through each form.
    • Search. Webflow's site search is available on Premium Site plans and above.
    • Code a plugin added to every page, such as an analytics tag. Webflow has custom code sections in Site settings and Page settings, on a paid Site plan or a paid Workspace.
    • Everything else. An outside service that you choose, or dropped.
  11. Step 11: Carry the titles and descriptions across

    On a static page, open the Pages panel, then Page settings, then "SEO settings". The two fields are "Title tag" and "Meta description".

    On a Collection page the same settings are a pattern filled from the Collection's fields. If each post had its own description in WordPress, give the Collection a plain text field for it, bring it in as a CSV column, and use that field in the pattern.

Build the redirect map

Links on other sites, search results, bookmarks and old emails all point at your WordPress addresses. Go back to the spreadsheet from the first step and fill in the new address beside each old one.

In WordPressIn Webflow
A page, at its slugA static page, at its slug. A page in a folder has the folder's slug first
A post under "Post name", as in WordPress's example www.sample.com/sample-postThe Collection URL, then the item's slug, as in Webflow's example yourdomain.com/post/your-blog-post
A post under "Day and name", as in www.sample.com/2008/03/31/sample-post/The same. The date is not part of the address
A category or tag archive, under category or tag unless the bases were changedAn item of a categories or tags Collection: its Collection URL, then its slug
An uploaded file, under wp-content/uploads by defaultAn address on Webflow's content delivery network

Keep what can be kept. A page keeps its address when it keeps its slug. If your posts already sit under one fixed word, such as /blog/, set the Collection URL to that word and they keep theirs. If you want category pages to stay under /category/, make that the Collection URL of the categories Collection. Webflow reserves category and product on a site with Ecommerce enabled, and /search, /images, /css and /js on every site.

Expect posts under the domain or under a date to change. Every Collection item sits under its Collection URL, so /sample-post becomes something like /post/sample-post. These are the redirects the map is mostly made of.

Check slugs in other scripts. Webflow says it supports only lowercase Latin letters and numbers in page addresses, and converts other scripts to Latin characters.

In Webflow the redirects are under Site settings, then Publishing, then 301 redirects. Each rule has an "Old path" and a "Redirect to path". Webflow says redirects need a paid Site plan, or a Workspace on a paid Workspace plan, and that the site has to be published before a rule takes effect.

The redirect map builder checks your list for chains, loops and duplicates and writes it out as a plain two-column CSV. Webflow imports a CSV with one column of old paths and one of new paths, up to 16 MB. Know these rules from Webflow's help before you import it.

  • An import replaces every redirect already there. Webflow says a new import "removes any existing redirects on your site". Put everything in one file.
  • One bad row stops the import. Webflow says the import fails if the file has an invalid redirect, and emails you a copy with the errors marked.
  • Some characters are escaped with % in the old path. Webflow lists %, -, &, *, (, ), =, _, + and ?. The hyphen is on that list, and most WordPress slugs have hyphens. Webflow's own first example, /old-url, is written without the escape. So add one redirect for an address with a hyphen and try it before you build the whole file.
  • A pattern can stand for a folder. Webflow writes the changing part as (.*) in the old path and %1 in the new one. Its own example sends /oldfolder/(.*) to /entirely/new-url/structure/%1.
  • Order matters. Webflow runs redirects in the order they were added, oldest first. Add the exact rules before a pattern that would also match them.
  • Keep the count down. Webflow sets no hard limit and recommends 1,000 at most, with patterns where possible.
  • An address that still has a page is not redirected. Webflow says an existing page has to be deleted, saved as a draft or given a new slug before its old address can redirect.
  • Plain permalinks need the escapes. An address like /?p=123 has a ? and an =. Webflow also says it removes a slash that comes directly before a query string before it matches.

One thing Webflow's help does not say is what its hosting does with a final slash. Most of the examples in WordPress's permalink documentation end in one, and Webflow's do not. Request an old address with its slash on the new site and see.

Change the domain

Check these on the webflow.io address first.

  • Every row of the spreadsheet has a new page or a redirect.
  • The number of items in each Collection matches the number of posts, categories and tags in WordPress.
  • A sample of posts has the right slug, date, main image and text.
  • No image in a post or on a page still loads from the WordPress site.
  • Every form sends, and its notification arrives.
  • You know which DNS records belong to your email.

Then make the switch.

  1. Step 1: Lower the TTL ahead of time

    Webflow recommends lowering the TTL of your DNS records to the lowest value your provider allows, at least one full TTL period before the change. You can put it back afterwards.

  2. Step 2: Add the domain in Webflow

    A custom domain needs a paid Site plan. Go to Site settings, then Publishing, then Production, and click "Add a custom domain". Webflow's quick connect option sets the DNS records for you, or you can choose "Manually add domain" and set them yourself.

  3. Step 3: Change the DNS records

    Webflow asks for an A record for the root domain, a CNAME record for www and a TXT record named _webflow. Copy the values from Site settings, then Publishing, then Production: Webflow says the records can differ from site to site.

    Webflow says to delete the A and CNAME records that pointed at the old host. Leave the MX records alone. Webflow does not host email, and its help says you can keep your current email service.

    If your domain has CAA records, Webflow says they have to allow its certificate providers, or the SSL certificate may fail to be issued.

  4. Step 4: Verify, choose the default domain and publish

    Back in Webflow, click "Verify domain". Next to the form of the domain your WordPress site used, with www or without, click "Make default". Then publish to the domain. Webflow sends the other form to the default.

    Webflow says DNS changes can take up to 48 hours to reach everywhere, and usually take a few hours. It issues the SSL certificate once the records point to it, typically within a few minutes.

What to check afterwards

  • The redirects. Put a sample of old addresses of each kind into the redirect checker, which follows a redirect and shows each hop. Each should reach its new page in one hop, with a 301.
  • The sitemap. In Site settings, on the SEO tab, turn "Auto-generate sitemap" on and publish. Webflow then writes sitemap.xml each time the site is published, and adds its address to robots.txt. Read it with the sitemap checker, and submit it in Google Search Console.
  • The robots.txt file. Rules are written under Site settings, then SEO, then Indexing. Make sure nothing there blocks the site. The robots.txt tester reads the live file.
  • Indexing page by page. A static page with "Sitemap indexing" switched off carries a noindex tag. The page indexing check shows what a page tells a search engine.
  • Forms, again, on the real domain.

How to migrate a website without losing SEO covers what Google and Bing document about a move, and what to watch after one.

Where it goes wrong

  • Slugs that Webflow made up. The slug column was not mapped, so every post has a new address and no redirect matches.
  • References that found nothing. Webflow says a row whose required reference field matches no item is imported as a draft with the field left blank. Import the referenced Collections first, and use their slugs.
  • Images still on the old host. They show until the WordPress hosting ends, then break.
  • Shortcodes and block comments in the text. They mean nothing outside WordPress. Search the imported posts for a square bracket, and read a few from top to bottom.
  • A second redirect import. It replaced the first.
  • The plan's item count. Webflow says how many items you can import depends on the Site plan. The free plan holds 50.
  • Email. Mailboxes kept at your WordPress host do not move with the site. Move them before you cancel that hosting.
  • Comments and members. Neither is imported. Decide what happens to each before the switch, and tell the people it affects.

If you would rather hand the work over, our WordPress to Webflow migration service exports and converts the content, builds the site in Webflow, copies the images and sets the redirects, for a quote in writing after a free assessment.

Common questions

Does Webflow have an importer for WordPress?

Not for a whole site. Webflow's help says there is no automated way to convert a site from another platform. What it has is a CSV import for CMS Collections, and its WordPress guide says to export from WordPress as XML and convert that to CSV.

Can WordPress export CSV?

Its export screen makes one format, an XML file. WP-CLI, WordPress's command-line tool, can print a list of posts as CSV with wp post list, and export plugins make CSV files too.

Do I need a paid Webflow plan before I start?

You can build on the free Starter plan, which holds 50 CMS items and 2 static pages. A site with more needs a paid Site plan before its content goes in. A custom domain needs a paid Site plan, and redirects need a paid Site plan or a paid Workspace.

When can I cancel my WordPress hosting?

Not on the day of the switch. Wait until the DNS change has reached everywhere, the redirects have been checked, and no image or file is still loaded from the old site. Move any mailboxes first, and keep the backup and the export file.

More on this subject

Would you rather we moved it?

Moving a site or a store from one platform to another, with its old addresses redirected to the new ones. Quoted in writing after a free assessment of what moves by itself and what has to be rebuilt. The assessment is free.