What Happens to Your WordPress Pages and Posts in Shopify
Pages and posts are two separate choices
In the migration settings of WooCommerce Importer you get two checkboxes, with the numbers filled in from your own store:
- “Import Wordpress pages as Shopify pages (34)”
- “Import Wordpress posts as Shopify blog posts (212)”
Tick either one and you also get its redirects. There is no third checkbox for “content but no redirects”, because nobody has ever asked us for the content without the old links pointing at it.
Those numbers come from reading your WordPress site before anything is imported. Sometimes that reading gets refused, and then both boxes show zero instead of your real page and post count. It looks like the app is broken. It isn’t.
If your host, your CDN or a security plugin is turning us away by address, add our server IP to its allow-list. You will find that IP on the Connect page in the app, and the steps per host are in fix a firewall or country block. On Cloudflare, follow allow our server IP in Cloudflare instead.
Some security plugins go further and switch outside access to your content off completely. No allow-list gets past that, so if both counts read zero and your firewall is not the cause, that setting is the next place to look.
PrestaShop has no blog, so PrestaShop Importer has one checkbox instead of two: “Import content from the Content Management System as Shopify pages”.
A page stays a page
A WordPress page at yourstore.com/about-us/ becomes a Shopify page at yourstore.com/pages/about-us. The slug, the title and the original publish date come across. If it was a draft in WordPress it arrives unpublished in Shopify, so you are not accidentally publishing the half-finished page you forgot about in 2019.
A post becomes an article, and its category becomes a blog
This is the part that surprises people. Shopify does not have post categories. It has blogs, and articles live inside one blog. So the first category of each WordPress post becomes a Shopify blog with the same handle.
A post in the category “Recipes” ends up at yourstore.com/blogs/recipes/your-slug. Posts with no category at all go into a blog called News, at /blogs/news/your-slug. New blogs are created with comments set to moderated.
Your post excerpt becomes the article summary. The featured image becomes the article image. The author on every article reads “Admin” rather than the WordPress author name.
Links inside your posts get rewritten
An old post that links to yourstore.com/product/blue-ceramic-mug/ would be a dead link the moment you launch on Shopify. During the import we rewrite links in the body of your pages and posts to the Shopify URLs the same migration just created, so that one comes out as /products/blue-ceramic-mug.
Images inside the body are re-hosted as Shopify files instead of staying pointed at your old WordPress uploads folder, as long as your old site keeps serving the downloads. If it stops, that case is covered in images missing after import.
Redirects
Every imported page and post gets a Shopify URL redirect from its original WordPress permalink to the new Shopify path. Blog category pages get one too, so yourstore.com/category/recipes/ lands on /blogs/recipes.
What does not come across
Better that you read this before the migration than find it afterwards.
- Comments are not migrated. Not post comments, not WooCommerce review comments on pages.
- Tags are not migrated.
- Only the first category of a post is used. A post filed under “Recipes” and “Vegan” goes into the Recipes blog only.
- SEO plugin fields do not come across. Your Yoast or Rank Math meta titles and descriptions stay in WordPress, and Shopify falls back to the page title and the first part of the body.
- A page or post with an empty title or an empty body is skipped. You will see it in the job log as
Remote page ID 148 had no title or no contentorRemote post ID 2291 has no title or no content. - Styling stays behind. CSS lives in your WordPress theme or in a plugin, and neither one comes to Shopify. Your words and your images arrive. The look does not. Moving that CSS across means editing your Shopify theme’s code, so it’s a job for whoever looks after your theme rather than something to do between two other tasks in the admin. One day we would like to do this automatically. We can’t yet, so if a page looks wrong after the import, message support and we’ll take a look.
- Page builder layouts are the same problem one size up. Elementor, WPBakery, Divi and the Gutenberg block editor each build their own styling on top of your WordPress theme, so columns and spacing usually come out flat. A long page built in a page builder is worth opening and checking after the import.
- Shortcodes stop working. Plugins that print something into a page using a token leave the token sitting in the text, because the plugin that understood it is not coming to Shopify. A square-metre price calculator built that way comes out as
[m2_price_calculator min_value=1 max_value=10000 step=1 price_m2=40]in plain sight where the calculator used to be. Search your pages and posts for[before you launch.
Run the import again with “overwrite existing” switched on and articles that already have the same handle are deleted and recreated, rather than piling up as duplicates.
How long it takes
Speed depends almost entirely on how fast your WordPress host answers. On reasonable hosting a few hundred posts is a matter of minutes rather than an afternoon, and writing them into Shopify runs at a similar pace. On slow shared hosting it takes noticeably longer, and that part is not something we can speed up from our side.
Trying it first
On the free tier you can import up to 100 pages and 100 posts, which is enough to see how your category structure lands as blogs and whether your page builder pages survive.