Skip to content

Hiding Pages · § 1.5.2

The seo.hidden Metafield on Shopify: How It Works and When It's Already Taken

Published:

What the seo.hidden metafield does

Per Shopify's Hiding-a-page-from-search-engines doc, setting a custom metafield with namespace.key seo.hidden to value 1 on a product, page, or blog post hides that resource 'from sitemaps, search engines, and your online store search.' For products it also removes the listing from Shopify Catalog. Unlike Unlisted, the seo.hidden metafield does not remove a product from collection pages or product recommendations, so shoppers browsing the store still see it there. It also drops out of your own storefront search, which surprises merchants who only meant to hide it from Google.

The verbatim Shopify guidance1 describes seo.hidden as a custom metafield. The namespace is seo; the key is hidden; the value is 1 (Shopify's setup uses the Integer type with a maximum value of 1). Shopify themes read this metafield and conditionally emit a noindex meta-robots tag on resources where the value is set. Shopify's sitemap generator reads the same metafield and excludes those resources from /sitemap.xml.

Setting it up

Open Shopify admin. Settings > Metafields and metaobjects > under Metafield definitions, pick the resource type (Products, Pages, or Blog posts). Click Add definition. Give it a name such as 'SEO Hidden'. In Namespace and key, enter exactly seo.hidden. Select type Integer, choose One value, and set the Maximum value validation to 1. Save. The metafield now appears on every resource of that type.

To use it on a specific resource: open the product, page, or blog post; scroll to the Metafields section; find 'SEO Hidden'; enter 1. Save. To make it visible again, delete the value, leave the field blank, and save. The next time Shopify regenerates the sitemap, the resource is excluded. The theme picks up the metafield on the next page render and emits the noindex meta tag.

The 'namespace already taken' error, verbatim

Shopify warns: 'If you receive a message that says Namespace and key. seo.hidden. Namespace and key are already taken. View metafields without a definition, then seo.hidden is being used by third-party apps and isn't available to modify in the Shopify admin.' Apps that emit SEO metafields on install commonly claim the namespace. When this error fires, the path forward is theme.liquid handle-based noindex — covered in the noindex-theme-liquid article.

The exact error text1 is the Shopify-emitted validation message in the metafield definition modal. If you see it, don't try to bypass the apps holding the namespace. Switch methods.

seo.hidden vs Unlisted (and why the answer differs by resource type)

For products, Shopify recommends Unlisted over seo.hidden. Both hide the product from search engines, the sitemap, Shopify Catalog, and your storefront search. Unlisted also removes it from collection pages, product recommendations, and third-party sales channels, which seo.hidden does not. For pages and blog posts, Unlisted is not an option (it's product-only), so seo.hidden is the recommended method when you want to hide from search and sitemap without editing theme code.

BehaviorUnlisted (products only)seo.hidden (products, pages, blog posts)
Hides from search enginesYesYes
Removes from /sitemap.xmlYesYes
Excludes from Shopify CatalogYesYes (for products)
Removes from collection pagesYesNo
Removes from storefront /searchYesYes
Removes from product recommendationsYesNo
Removes from third-party sales channelsYesNo
Works on pages and blog postsNo (product-only)Yes
Survives third-party app claimsYes (it's product status, not metafield)No — fails on "namespace already taken"

When to use seo.hidden

seo.hidden is the right tool for pages and blog posts you want to keep reachable by link but hidden from Google. They also disappear from your storefront search, so link to them from wherever visitors need them. Internal-team landing pages with their own URL but no search-indexing role. Legal disclosure pages required by jurisdiction but irrelevant to organic search. Old blog posts archived but kept live for direct link traffic. Lead-magnet landing pages used only for paid traffic that shouldn't compete with the homepage in search.

seo.hidden is also the path for products in the narrow case where you want it out of search engines and storefront search but still shown in its collections — for example, a product listed in a curated "Staff picks" collection but not yet ready for search-driven traffic. This is unusual; the more common product-hide case (gated launch, sample SKU, retired item) wants the full Unlisted radius.