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.
| What | How it gets to Webflow | Notes |
|---|---|---|
| Posts | WordPress's export, converted to CSV, then Webflow's CMS import | WordPress's export screen makes XML, not CSV. Webflow takes a CSV file of up to 4 MB. |
| Categories, tags and authors | A Collection for each, tied to posts by reference fields | Import these before the posts. Webflow matches a reference by the item's name or slug. |
| Pages | Built again as static pages | No import. Copy the text across and lay each page out in Webflow. |
| Theme and design | Do not move | The design is built again in Webflow. |
| Plugins | Do not move | Webflow'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 pages | A direct address in the CSV for an image field. By upload for everything else | Webflow delivers uploaded files through its own content delivery network, so image addresses change. |
| Forms | Built again as Webflow forms | Webflow keeps submissions under Site settings, then Forms. |
| Comments | No import is described | WordPress's export file holds them. Webflow's CSV import fills the fields of Collection items. |
| Member accounts | Do not move | Webflow ended its User Accounts feature on January 29, 2026. |
| Titles and descriptions for search | Entered again | Page by page for static pages. From Collection fields for Collection pages. |
| Redirects | Written again in Webflow | A two-column CSV file can be imported. |
| Not part of the move | Webflow 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 plan | CMS items | Collections | Static pages |
|---|---|---|---|
| Starter, the free plan | 50 | 20 | 2 |
| Basic | None | None | 300 |
| Premium | 20,000 | 40 | 300 |
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.
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 listcommand can print the address of every published post and page as a CSV file.urlis one of the fields its documentation lists:That file has no category or tag archives in it. Add those from the site itself.
bashwp post list --post_type=post,page --post_status=publish --fields=post_type,post_name,url --format=csv > addresses.csvStep 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.
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.
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.
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 listcommand prints posts as CSV, andpost_contentis 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.
bashwp post list --post_type=post --post_status=publish --fields=post_title,post_name,post_date,post_excerpt,post_content --format=csv > posts.csvStep 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 field What the CSV cell holds Name Plain text, fewer than 256 characters. The post's title Slug Plain text, fewer than 256 characters. The post's slug, from the post_namecolumnRich text Any value, HTML included. The post's content. Webflow says it may clean up embeds to remove what it does not support Plain text Any plain text. The excerpt, or a description for search Date/time A date in a format Webflow supports. The import article links to the list Image A direct address of an image, ending in a supported image file extension Reference The referenced item's name as plain text, or its slug if it has a custom one Multi-reference Names or slugs separated by semicolons File Nothing. 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.
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.
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.
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.
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.
- 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
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 WordPress | In Webflow |
|---|---|
| A page, at its slug | A 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-post | The 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 changed | An item of a categories or tags Collection: its Collection URL, then its slug |
An uploaded file, under wp-content/uploads by default | An 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%1in 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=123has 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.
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.
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.
Step 3: Change the DNS records
Webflow asks for an A record for the root domain, a CNAME record for
wwwand 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.
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
wwwor 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.xmleach time the site is published, and adds its address torobots.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
noindextag. 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.
- Glossary termCanonical URL
- Glossary termDNS propagation
- ResourceWebsite migration checklist: before, during and after the move
- ResourceWebsite redesign SEO checklist: what to record, map and check on a rebuilt site
- Cost guideWordPress migration cost: which job you are being quoted for, and what moves the price
- Glossary term301 redirect

