Why does my Shopify page say Page not found?
A Shopify page that exists in your admin but shows Page not found on the storefront is almost always hidden, still a draft, not published to the Online Store sales channel, or reached through an old URL after its handle changed. If none of those is true, your theme is probably missing the template for that kind of page, and Shopify returns a 404 rather than showing it without one.
The first four are settings you can fix in a minute. The template problem is the one people miss, because the theme uploads cleanly, shopify theme check says nothing, and the store looks fine until someone clicks through to an About or Shipping page.
Which of these is causing my 404?
| What 404s | Likely cause | Where to check | Fix |
|---|---|---|---|
| A page (About, Shipping, FAQ) | Page is set to Hidden, or has a future visibility date | Online Store, Pages, the Visibility card | Set it to Visible and save |
| A product | Status is Draft or Archived | Products, the Status card | Set it to Active |
| A product or collection | Not published to the Online Store sales channel | Publishing card on the product or collection | Add Online Store to its sales channels |
| An old link, bookmark or Google result | The URL handle was changed, or the item was deleted | The item's search engine listing, which shows the current URL | Create a URL redirect from the old address |
| A blog post | Post is hidden or scheduled for later | Blog posts in the admin, the Visibility card | Set it to Visible |
| A menu or footer link | The link points to a page nobody created, such as a theme's default /pages/shipping | Content, Menus | Create the page, or point the link somewhere real |
| Every page on the default template | The theme has no templates/page.json or page.liquid | Edit code, Templates folder | Switch the page to a template the theme has, or add the missing one |
| Every blog post | The theme has no templates/article.json or article.liquid | Edit code, Templates folder | Add the missing article template |
One status that looks like a problem but is not: an Unlisted product still has a working page. Shopify's documentation says unlisted products can be reached by direct URL and are only hidden from search, Shopify Catalog and your sitemap. If an unlisted product 404s, look at its sales channels instead.
Why does a page I can see in my admin show 404?
Because Shopify only serves it to shoppers when it is both visible and published to the storefront. In the admin you see everything, including hidden pages, drafts and products that are only on another sales channel such as Point of Sale. The storefront shows a subset.
Check three things on the item itself, in this order:
- Visibility. Pages and blog posts have a Visible or Hidden setting. A hidden item can also carry a publish date, and until that date passes it stays hidden.
- Status. Products are Active, Draft, Archived or Unlisted. Draft and Archived products do not display to customers.
- Sales channel. A product or collection that is Active but not published to Online Store has no storefront page.
Test the result in a private browser window. Being logged into your admin can change what you see, and a private window shows what a shopper gets.
Why does the old link to my page not work any more?
The page's address is built from its handle, the last part of the URL. If you edit the handle, for example from /pages/about-us to /pages/our-story, the new address works and the old one returns 404. Every link to the old address, including Google's copy and any social posts, is now broken.
The fix is a URL redirect. In the Shopify admin go to Content, then Menus, then View URL redirects, and create one from the old path to the new one. Two limits are worth knowing:
- Redirects only work from broken URLs. Shopify's help centre says you can redirect only from an address that shows Page not found. You cannot redirect a page that still exists.
- There is a cap. 100,000 redirects on standard plans and 20,000,000 on Plus, far more than a small store will use.
Why do all my pages 404 after installing a new theme?
Because the new theme has no default page template. Shopify builds every storefront page from a template file in the theme's templates folder: page.json for pages, article.json for blog posts, product.json for products, and so on. Shopify's theme documentation is explicit: "No template types are required. However, you must have a matching template for any page type that you want to render." A theme can pass upload without a page template, and then every page on the default template returns 404.
We know this one first hand, because our own generator shipped it. On 24 September 2026 we pushed one of our generated themes to a real Shopify store as an unpublished theme and requested /pages/data-sharing-opt-out, the Your privacy choices page Shopify creates on every store. The results:
| URL | Our theme, before the fix | Shopify's Horizon theme | Our theme, after adding page.json |
|---|---|---|---|
/pages/data-sharing-opt-out | 404, theme's Page not found section | 200 | 200, "Your Privacy Choices" |
/pages/contact | 200 | not requested | 200 |
/blogs/news | 200 | not requested | 200 |
Two details in that table explain why the problem hides so well. The contact page worked because the theme had an alternate template called page.contact.json, and the contact page used it. And Shopify quietly fills in for some missing templates, such as search and the collections list, but not for pages. So the store looks healthy until a shopper opens a page left on the default template.
The same gap on article.json means every blog post 404s while the blog's list page still works, which is an easy one to miss if you never click into a post.
How do I check if my theme is missing a page template?
- In the Shopify admin, go to Online Store, then Themes, open the menu on your theme and choose Edit code.
- Open the Templates folder. Look for
page.jsonorpage.liquid, andarticle.jsonorarticle.liquid. - Files like
page.contact.jsonorpage.faq.jsondo not count. Those are alternate templates, used only by a page you have switched to them.
A quick test that needs no code: open the broken page in the admin and change its theme template to one the theme does have, such as contact, then save and reload the storefront. If the page now loads, the missing default template was the cause. Note that Shopify never picks a template by the page's name. A page called About uses page.json unless you switch it, so a file called page.about.json would not help on its own.
How do I add a missing page template?
Switching each page to an existing alternate template works, but you have to remember it for every new page. The lasting fix is two small files. Add templates/page.json:
{
"sections": {
"main": { "type": "main-page", "settings": {} }
},
"order": ["main"]
}
and a matching sections/main-page.liquid:
<div class="page-width">
<h1>{{ page.title | escape }}</h1>
<div class="rte">{{ page.content }}</div>
</div>
{% schema %}
{
"name": "Page",
"settings": []
}
{% endschema %}
Many themes already have a main-page section and are only missing the template, in which case the JSON file alone is enough. Check the Sections folder first. Class names like page-width and rte are conventions from Shopify's own themes; use whatever your theme uses for its reading column so the page matches the rest of the store. The same pattern with article and main-article fixes blog posts.
If you edit a theme offline and upload it again as a ZIP, the upload rules in why a Shopify theme ZIP will not upload still apply.
Will switching themes delete my pages?
No. Pages, products, blog posts and collections belong to your store, not the theme, so a theme with a missing template makes them unreachable but does not delete them. Add the template or switch back and they are all still there. The full list of what a theme change keeps and what it resets is in will I lose my products if I change my Shopify theme.
If the problem is the opposite, and the homepage itself is blank rather than a 404, that has a different set of causes, covered in why a Shopify homepage is blank after installing a theme.
How we measured this
The template test was run on 24 September 2026 on our Shopify development store: one of our generated themes pushed as an unpublished theme, the same URLs requested against Shopify's Horizon theme on the same store, then the generated theme pushed again with templates/page.json and sections/main-page.liquid added. Contact, blog and home pages returned the same result before and after, and shopify theme check reported the same number of issues before and after, none in the added files. We fixed the gap in our generator the same day, and themes downloaded from Themr now include both default templates.
Visibility, product statuses, sales channels, the URL redirect rules and the template requirement are Shopify's documented behaviour, checked against Shopify's help centre and theme documentation on 25 September 2026. Every theme in our free theme gallery ships a page and article template, and has a live preview you can click through.
Frequently asked questions
Why does my Shopify page say Page not found when it exists?
The page exists in the admin but is not being served to shoppers. The usual causes are that it is set to Hidden or has a future publish date, it is a product in Draft or Archived status, it is not published to the Online Store sales channel, or you are using an old URL after the handle changed. If none of those apply, the theme may be missing the template for that type of page, and Shopify returns a 404 rather than render it without one.
Can a Shopify theme cause pages to 404?
Yes. Shopify renders each page type from a matching template in the theme's templates folder, and its documentation says you must have a matching template for any page type you want to render. A theme with no page.json or page.liquid returns 404 for every page on the default template, and one with no article.json or article.liquid does the same for every blog post. The theme still uploads and theme check does not flag it.
How do I fix a 404 after changing a Shopify URL?
Create a URL redirect from the old address to the new one. In the Shopify admin go to Content, then Menus, then View URL redirects, and create the redirect. Shopify only allows redirects from URLs that currently show Page not found, so you cannot redirect a page that still exists. Standard plans allow up to 100,000 redirects.
Do Draft products show on the Shopify storefront?
No. Draft and Archived products do not display to customers, and their URLs return Page not found. Set the product to Active and make sure it is published to the Online Store sales channel. Unlisted products are different: they have a working page at their direct URL but are hidden from search, Shopify Catalog and the sitemap.
Why does only my contact page work on my Shopify theme?
Your contact page probably uses an alternate template, page.contact.json, which the theme includes, while your other pages use the default page template, which the theme is missing. Check the Templates folder in Edit code for page.json or page.liquid. Switching a broken page to the contact template is a quick test: if it then loads, the missing default template is the cause.
Will I lose my pages if my theme is missing a page template?
No. Pages are stored in your Shopify admin, not in the theme, so a missing template only makes them unreachable. Add a templates/page.json file, switch the pages to a template the theme has, or go back to your previous theme, and every page comes back as it was.
Why do my Shopify blog posts 404 but the blog page works?
The blog listing and individual posts use different templates: blog.json for the list and article.json for each post. A theme can have the first and not the second, so the list of posts loads but clicking into any post returns Page not found. Adding an article template with a main-article section fixes every post at once. If only one post 404s, check whether it is hidden or scheduled.
Generate a theme that looks like your brand
A complete Shopify 2.0 theme with conversion features built in, ready in minutes. No credit card required.
Generate my theme freeNo Shopify store yet? Start one here, then bring the theme. Themr may earn a commission if you start a paid plan; it does not change what you pay.