Understanding the seo.hidden logic

Hi, I’d like to understand why the seo.hidden metafield hides the product from the site’s internal search. What’s the rationale behind this? If I specify that a product shouldn’t be indexed by search engines, it’s because that’s the feature I want, not anything else. Internal search has nothing to do with search engines.

A second metafield should be implemented that hides the product from internal search to leave this as an option. Leaving everything as is, however, creates a lot of problems.

Hi @Delio

Totally understand the confusion — but this is actually intentional behaviour.

The seo.hidden metafield doesn’t just control search engine indexing. In Shopify’s logic, it marks the resource as something that should not be discoverable — and that includes:
Online store search
Predictive search
Sitemap
Search engine indexing
So it’s treated more like a global visibility flag, not strictly an SEO-only setting.
Shopify’s rationale is basically:
If a merchant doesn’t want a product indexed, they likely don’t want it surfaced organically anywhere.

If you only want to block Google (but keep internal search)

Instead of using seo.hidden, you can:
Remove the product from the sitemap via theme customization
Use a custom robots meta tag
Or handle it at the robots.txt level

That way, it won’t affect internal search visibility.

I agree it would be cleaner to separate:

“Hide from search engines”
“Hide from internal search”

But currently seo.hidden acts as a broader discoverability control.

Hope that helps clarify

Hi @anmolkumar

yes, it’s clear. But we want hide from Shop App too, and seo.hidden and unlisted are the only way. We would like to keep some products visible only within our website for internal marketing reasons, while currently Shopify forces us to make huge customizations that are really senseless.

At the moment, Shopify does not offer a separate control to

Hide a product from the Shop App
While keeping it fully searchable and visible on your Online Store
seo.hidden and unlisting act as broader discoverability controls, not Shop specific toggles.

The only practical workaround right now is
Manage sales channel availability remove from Shop channel if possible
Avoid using seo.hidden if you still need internal search
Unfortunately, there’s no native granular setting yet. This would definitely be a valuable feature request for clearer channel level visibility control.