Most advice about Shopify SEO for wine and spirits opens with the same warning. Your age verification gate is hiding your catalogue from Google. It sounds right. So I tested it instead of repeating it. Eight real Shopify alcohol stores, fetched the way a crawler sees them — no JavaScript, no cookies. So not one of them hid a thing.
The reason this matters isn’t reassurance. Merchants who believe the gate is the problem go hunting for a way to let Googlebot past it. That workaround is the one thing here that can genuinely hurt you, because Google’s spam policies name it directly. Meanwhile the defects that really were sitting on those eight storefronts went unnoticed, because nobody was looking there.
What was actually broken
In fact three of them were bad. One store had no <h1> on its product page at all. In fact, another had exactly one, and it belonged to the age gate rather than the wine. A third was serving a live, in-stock product page with noindex on it.
First, a note on scope: this guide covers the alcohol-specific case. For the general mechanics of crawling versus indexing on Shopify, see Shopify faceted navigation SEO. I won’t re-explain that here. For the other regulated verticals, there’s supplements and baby products.
Plug In SEO will not tell you your age gate has taken your H1. Nor will it flag a stray noindex. It has no crawl detection and no indexing detection, so those checks are manual. The steps are below. What it does do: flag product pages whose meta titles or descriptions have gone missing or duplicated. It also keeps one consistent template across the catalogue, and handles schema and sitemaps.
- The age gate blocks Googlebot from the catalogue.
- So product pages never get crawled.
- The fix is to detect Googlebot and skip the gate.
- Alcohol stores are held back by the platform.
- All 8 returned HTTP 200 with full product markup.
- Product JSON-LD sat in the raw HTML every time.
- Instead, skipping the gate for bots is a policy risk, not a fix.
- The damage came from H1s and a stray noindex.
What eight Shopify wine and spirits stores actually served to a crawler
Bottom line: every single one served its products. For each store I made a plain HTTP request to three URLs. The homepage, /collections/all, and one real product page. Default user agent, no JavaScript, no cookies — roughly what a crawler gets on a first visit. Product handles came from each store’s own /products.json, so the URLs were real.
Eight stores were confirmed Shopify, by the presence of cdn.shopify.com in the served HTML. Several others dropped out, though. Some weren’t on Shopify. A few refused outright with a 403 or 429 — that’s a CDN rule, not an age gate.
"@type":"Product" JSON-LD in the raw, un-rendered HTML. Zero served a server-side redirect to an age-check page, and none returned a cookie-walled 403.Plug In Useful, no-JavaScript fetch of eight Shopify alcohol storefronts, August 2026.
So that distinction is the whole point. Three very different things get called an age gate, and only one of them is a crawling problem:
- A JavaScript overlay painted on top of content that is already in the document. So Googlebot reads the document. In fact, this is what all eight stores were doing.
-
A server-side redirect to an
/age-checkpage, sending every request elsewhere before the product renders. This one genuinely would hurt. Still, I found none. - A cookie wall that answers 403 until a verification cookie exists. Also genuinely harmful. So again, none.
Also, stores are described here, never named — the same convention as our other live-tested posts.
Why a Shopify age gate can’t block a crawler, even if you wanted it to
There’s a structural reason the scary version didn’t appear. It’s worth understanding rather than taking on trust. An age gate on Shopify is an app running inside the storefront. Specifically, a theme app extension or an injected script. So it can only add markup to a document Shopify has already built and served with a 200 status.
In other words, it cannot intercept the request. By the time the gate exists, the response has left the building. The interstitial merchants are warned about is close to architecturally unavailable here, at least in the app-based form nearly everyone uses.
Likewise, the platform doesn’t restrict alcohol stores either. Shopify’s default robots.txt now says so out loud. I found the same first line on seven of the eight:
# Shopify storefront. As a result, public product, collection, page, blog, policy, cart, and localized HTML is crawlable.
Then User-agent: * and Allow: /. In fact, nothing in the file mentions age, verification, or adult content. So there is no platform-level crawl restriction on stores that sell alcohol.
The eighth store had replaced the default with a hand-written 195-line file. It included a malformed filter rule and a Disallow: /policies/ line. That’s a real risk. It isn’t an alcohol risk, though. It’s the same override trap covered in the faceted navigation guide. Writing your own file freezes you out of Shopify’s updated defaults.
The four defects I did find, in order of how much they cost
None of these are about crawl access. Instead, all four are about signals. Better still, all four are fixable this afternoon.
1. The gate takes your H1
One store’s product page ran to 766KB and contained exactly one <h1>. So it belonged to the age gate. The heading was a chatty line about looking young for your age, sitting at byte offset 758,572. Meanwhile, the product name was in the document, in og:title and in the JSON-LD at byte 203,482. Yet it never appeared inside a heading.
Because the gate is site-wide, every URL on that store shares one identical H1. So it says nothing about wine. In fact, your main heading is one of the clearest signals you control. Instead, this store had handed it to a popup.
2. No H1 at all
A second store’s product page had no <h1> element anywhere. Product name in og:title, product name in the structured data, nothing in a heading. Less dramatic than handing the H1 to a gate, but the same gap.
3. visibility: hidden on the body element
One store ships a rule amounting to html.gate-active body { visibility: hidden }. Still, the content sits in the document, fully readable. Then it’s painted invisible until JavaScript strips the class.
This one is worth care. It does not block crawling, because the markup is right there. However, it makes the page’s visible content contingent on a script running. So that’s a fragility you don’t need. Still, hiding the gate’s own backdrop is fine. But hiding body is a blunt instrument.
4. A stray noindex on a live product page
Here’s the one that actually removes a page from Google. Specifically, a live, in-stock, internally linked product page carried <meta name="robots" content="noindex,nofollow">. So no gate involved. Someone set it, probably during a launch, and never took it off.
The same page had a second problem. Its og:title advertised red wine. So did its meta description. The page’s heading, though, read “White — 1 Bottle”. A copy-pasted template and one forgotten tag did more damage there than any age gate in the sample.
Do not let Googlebot skip the gate
This is the advice circulating for age gates. It is also the one recommendation to refuse. Detecting the search engine and serving it a gate-free experience is the pattern Google calls cloaking.
From Google’s spam policies, verbatim: “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users”. The document’s own example is “inserting text or keywords into a page only when the user agent that is requesting the page is a search engine, not a human visitor”.
People sometimes reach for the paywall carve-out here. That one says it isn’t cloaking if “Google can see the full content of what’s behind the paywall just like any person who has access to the gated material”. Read it carefully, though. It describes parity, not an exemption for user-agent sniffing.
Besides, the practical argument is stronger than the policy one. You do not need the workaround, because you do not have the problem. I fetched one store’s product URL twice. Specifically, once with a default user agent, once identifying as Googlebot. Both times I got the same document with the same robots meta tag. So no swap, no special treatment, and the content was indexable anyway.
That makes the safe implementation simple. Serve the same document to everybody, and gate the transaction rather than the content.
What the rules actually require of a Shopify alcohol store
Here’s why the confusion persists. Age verification is genuinely required. The full-site interstitial is a convention that grew up around that requirement, not the requirement itself. So the two get confused constantly.
Shopify asks for effective practices, not an interstitial
Look at the wording. Shopify’s alcohol products policy requires “effective age verification practices so that alcohol products can’t be purchased or received by people who are under” the legal age. That age is jurisdictional. It’s 21 in the United States, and 18 in both the United Kingdom and Australia.
Shopify Help Center, Alcohol products, checked August 2026.
Now read two of those words again: purchased or received. Instead, both happen at checkout and delivery. So neither happens on a collection page. That is the whole argument for gating the transaction.
In the US, the receiving state’s law binds you
Federal law makes your customer’s state rules your problem. The Webb-Kenyon Act, administered by the TTB, “prohibits shipments of alcohol beverages from one State into another State in violation of any law of the receiving State”. Additionally, the TTB adds that direct shippers are responsible for staying compliant with current state rules. Federal basic permits, it warns, could be at risk otherwise.
Instead, retailers themselves generally don’t hold a federal basic permit. Under the Federal Alcohol Administration Act those attach to importing, producing, bottling and wholesale resale. Which is exactly why “what age check do I need” has no single answer. Instead, it depends on your licence and on every state you ship into. So outside the US it changes again.
This isn’t legal advice, to be clear. Confirm what your own licence and your customers’ states require before changing anything about how you verify age.
Google Shopping gates the listing, not your storefront
If you run Shopping surfaces, the alcohol rules sit on Google’s side rather than yours. Google’s alcoholic beverages policy treats alcohol as age-restricted. That policy names countries where listings aren’t allowed, and others where they’re allowed with limits. It also asks users to turn SafeSearch off to see age-restricted shopping ads. About your site, all it says is this: “If your ad or listing directs to violating content, update your website to meet all policy requirements”.
So no mechanism is prescribed. In fact, Google is not asking you for an interstitial. Since March 31, 2026 it has gone the other way in one respect. Its physical goods subscriptions policy now covers alcohol, wine clubs included, for eligible US merchants.
How to check your own store the way I checked theirs
Your browser’s view-source will tell you more than any theory about interstitials. Take one product page you care about, then work through these five checks.
1. Read the page with JavaScript off
Open view-source on a product URL, or fetch it from the command line. You’re looking for the product name, the price, and a "@type":"Product" block in the raw markup. So if those are there, you are not being hidden from anybody.
2. Search the source for <h1
Then count the matches. You want exactly one, and it should be the product name. Is it your age gate’s copy instead, or is the count zero? Fix that first. It’s usually a theme setting or the gate’s own template.
3. Search for noindex
Next, on any page you want ranking, there should be no match. Check a handful across collections and products, not just one. These tags tend to arrive in batches, during a launch or a migration.
4. Search for visibility: hidden and display: none near body
A rule that hides the whole body until a script runs is worth replacing. Hide only the gate’s own layer instead.
5. Compare og:title and the meta description against the product
Finally, this catches the copy-paste template problem. Say the page is a white wine and the description talks about red. Then the template is being reused where it shouldn’t be. Trust signals also matter more than usual on a regulated store. Our note on Shopify E-E-A-T trust signals covers what Google’s raters are told to look for on a shop.
Where Plug In SEO helps with wine and spirits, and where it doesn’t
The limitation first, because it’s the honest one. No app of ours detects age-gate crawl problems. Plug In SEO has no crawl detection and no indexing detection. So it will not flag a hijacked H1 or a stray noindex. Steps 1 to 4 above stay manual.
What it does cover is the part that goes wrong quietly across a whole catalogue. The Scanner flags product pages where meta titles, descriptions or alt text have gone missing or duplicated. That’s the copy-paste template problem, at catalogue scale. The bulk meta editor works by adding your own text around a variable like %% product.title %%. It also flags a template that drops the variable, so you can’t accidentally publish one title on 400 bottles. Additionally, broken links get a report with a one-click redirect fix, and schema and sitemaps are handled for you.
Plug In SEO starts at $29.99/month on the Lite plan. It isn’t free.
That’s the short version of Shopify SEO for wine and spirits. The gate probably isn’t your problem. Your H1 might be.
Frequently asked questions
Does an age verification popup hurt my Shopify SEO?
On the evidence, not by blocking crawlers. Across eight real Shopify alcohol stores fetched without JavaScript, all eight returned HTTP 200. All eight carried full product content and product JSON-LD in the raw HTML. What can hurt is a side effect. A gate whose heading becomes the page’s only <h1>, for instance, or a CSS rule that hides the whole body until a script runs.
Will Google penalise my store for having an age gate?
Nothing in Google’s documentation penalises age verification as such. Shopify’s default robots.txt applies no restriction to alcohol stores either. What Google’s spam policies do target is cloaking, meaning showing search engines different content from what people see. That risk comes from trying to bypass your own gate for bots, not from having one.
Should I let Googlebot skip my age gate?
No. Serving a gate-free version to a search-engine user agent is the pattern Google’s spam policies describe. Their own example is “inserting text or keywords into a page only when the user agent that is requesting the page is a search engine”. It’s also unnecessary, since the content is already in the document a crawler receives. So serve everyone the same page, and gate the transaction instead.
Is an age gate legally required on a Shopify wine or spirits store?
Age verification is required. A full-site popup specifically is not. Shopify’s alcohol policy asks for “effective age verification practices” so products can’t be purchased or received under age. That’s 21 in the US, and 18 in the UK and Australia. No mechanism is named. In the US the receiving state’s law also applies to you, under the Webb-Kenyon Act. Confirm the specifics against your own licence and the states you ship into.
Why does my wine product page show the wrong heading in search results?
Check whether your age gate owns the <h1>. The gate’s markup may render late in the document while your theme never emits a product heading. Then the gate’s copy ends up as the only H1 on every URL in the store. Search the page source for <h1 and count. Also check og:title and the meta description against the actual product, since a reused template is the other common cause.
Can Plug In SEO tell me if my age gate is blocking Google?
No, and it’s worth being clear about that. Plug In SEO has no crawl detection and no indexing detection. So a hijacked H1 or a stray noindex is a manual check, using view-source on a product page. Where it does help is the catalogue-wide meta work: flagging missing or duplicated titles and descriptions, and keeping a consistent additive template across every product.
How is this different from your other regulated-vertical guides?
Supplements is about claims language, and the higher bar Google applies to health topics. Baby products is about a required warning competing with your SEO copy for the same few lines. Shopify SEO for wine and spirits is about a compliance interface, an age gate, and what it does to your page structure. The crawl-versus-index mechanics behind all three live in faceted navigation SEO.
Fix the H1, drop the workaround, then let the app handle the catalogue
Your age gate stays exactly where compliance needs it. Plug In SEO covers everything around it. The Scanner flags products whose meta titles or descriptions have gone missing or duplicated. Its bulk meta editor keeps one consistent template across every bottle in the catalogue. Schema and sitemaps stay consistent store-wide. The crawl checks stay manual, and we’d rather tell you that than pretend otherwise.

