Back to E-commerce Tips

Age Verification in the Cart: Checkboxes for Alcohol, Vape and 18+ Products

E-commerce Tips
Age Verification in the Cart: Checkboxes for Alcohol, Vape and 18+ Products

Most Shopify stores selling restricted products handle age verification the same way: a full-screen popup on the homepage asking "Are you over 18?" with a big yes button. It gets dismissed in half a second by everyone, including the people it exists to stop, and it never appears again for the rest of the session. It is the weakest possible placement for the one question your store cannot afford to get wrong.

There is a better moment to ask: the cart, right before checkout, when the shopper has picked a restricted item and committed to buying it. This article covers why that placement works better, how to scope the prompt to the products that need it, and what a checkbox can and cannot do. It is a practical explainer, not legal advice - the rules for alcohol, nicotine, knives and adult products vary by country and even by state, so confirm your own obligations with an advisor who knows your categories.

Why the Homepage Age Gate Is the Weakest Placement

The homepage popup fails on three counts.

It asks before there is any intent. A visitor who has not chosen a product has no reason to think carefully. They click through the way they click through a cookie banner, without reading. A confirmation given reflexively is weak evidence that anyone confirmed anything.

Most visitors never see the homepage. Traffic from Google, ads and email lands directly on a product or collection page, so a large share of your shoppers walk straight past the gate. Covering every page fixes that and creates a worse problem: if you sell glassware alongside spirits, or kitchen equipment alongside knives, you are now adding friction to every session for a restriction that applies to a fraction of your catalog.

It leaves no useful record. A popup dismissed on arrival is not attached to an order. When you need to show that a specific purchase was confirmed by the buyer, a dismissal from forty pageviews earlier is not much help.


Verify at the Point of Purchase Intent Instead

The cart is the last surface you fully control before Shopify takes over at checkout, and the moment the shopper has stopped browsing and decided to buy. The restricted item is right there, so the question is concrete rather than abstract, and they are motivated to read it because the checkout button is on the other side. The confirmation also lands in the same step as the purchase, not in a session that started on your homepage.

A cart-level age confirmation should follow the same discipline as any other required consent:

  1. It starts unticked. The shopper ticks it themselves. A pre-ticked box is not a confirmation, it is your assumption printed on their screen.
  2. It stands on its own. Do not fold it into your terms and conditions checkbox. One box meaning "I accept the terms and I am over the required age" confirms neither clearly.
  3. It blocks the way forward. The checkout button stays inactive, or the attempt to continue is intercepted with a short prompt, until the box is ticked. A confirmation that can be skipped is decoration.
  4. It names the age and the reason. "I confirm I am 18 or older and legally permitted to buy alcohol in my country" is doing work. "I agree" is not.

The same mechanics apply to any required cart consent. Our guide to the EU right-of-withdrawal checkbox walks through the unticked-by-default, blocks-checkout pattern in a different compliance context.


Scope the Prompt to the Products That Need It

The single biggest advantage of asking in the cart is that the cart knows what is in it. A store-wide gate cannot tell a bottle of gin from a set of tumblers. A cart-level prompt can.

Product-scoped gating means the confirmation appears only when a restricted item is actually in the cart, scoped by whatever grouping already exists in your catalog:

  • A collection such as "Spirits", "Vape Kits" or "Fixed Blade Knives".
  • A product tag applied to restricted items across collections, when the same restriction spans several categories.
  • A vendor, if an entire brand you carry is age-restricted.
  • Individual products, for the edge cases that fit nowhere else.

The behavior should be symmetrical: remove the restricted item and the checkbox disappears, because there is nothing left to confirm. This matters most for mixed catalogs: homeware stores carrying cocktail sets and a small spirits range, outdoor retailers with camping gear and fixed-blade knives, grocery shops where one line item in ten is beer or wine. None of them should gate their whole storefront.


Age Thresholds Differ by Country, So the Prompt Should Too

There is no single global adult age, and writing one number into your cart is a quiet way to be wrong in half your markets.

The rules sit far apart. In the United States the minimum age is 21 for both alcohol and nicotine, with federal identity-verification expectations on top for tobacco and vape. Across much of Europe the alcohol threshold is 18, though Germany separates beer and wine at 16 from spirits at 18. In the UK, 18 applies to alcohol, knives and fireworks. Cannabis and adult products have their own patchwork again.

So a useful age confirmation is market-conditional: the number in the sentence, and sometimes whether the box appears at all, should follow the shopper's country.

That raises a question worth settling before you build the rule. In Shopify, "where the customer is" means two things: the market they selected, which drives currency and pricing, and where they physically are. A shopper in Berlin can switch your store to US dollars. For pricing, the selected market is the right basis. For an age restriction, physical location is the more meaningful signal, because it is the one they cannot change with a currency dropdown. We unpack this in selected market vs. physical location geo-targeting.

One caveat: location detection is best-effort. VPNs and corporate networks can misplace people, so treat it as a strong signal and lean toward the stricter prompt when the answer is ambiguous.


Be Honest About What a Checkbox Actually Proves

A checkbox is self-declaration, not identity verification. It records that the buyer actively asserted something at the moment of purchase. It does not prove their age, and in several categories that gap is the whole regulatory point: tobacco, vape and cannabis sales in the United States are expected to involve document-level verification, and alcohol delivery in many places relies on an adult signature and an ID check at the door.

Treat the cart checkbox as one layer in a stack, not the whole answer:

  • The checkbox creates a deliberate, recorded acknowledgment tied to the order, and turns away the casual under-age buyer who is not willing to lie.
  • A dedicated verification provider handles document or database checks where your category requires real proof of identity.
  • Delivery-side controls such as age-restricted shipping services and adult-signature requirements catch what the website cannot.

Where you land on that stack is a question for your advisor and your category. Either way, asking in the cart with a real block on checkout beats a popup nobody read.


Setting It Up on Shopify

Shopify's checkout is locked down. Custom fields and checkboxes in the native checkout flow are restricted to Shopify Plus, so most stores cannot put a compliance prompt on the checkout page itself, one of several limits covered in what Shopify supports natively. The cart is customizable on every plan.

If your entire catalog is age-restricted and you sell into one market, the simplest version is self-serve. In EliteCart, Cart designer → Features → Terms and conditions puts a required checkbox in the cart summary, directly above the checkout button. You write the checkbox text yourself, so it can read as an age confirmation rather than a generic terms acceptance, and you set the message shown when someone tries to check out without ticking it. Both texts translate per language for multi-language stores. Leave Checked by default switched off, for the reason above.

The harder version is what most affected stores need: a confirmation that appears only when a restricted product is in the cart, with a threshold and wording that follow the shopper's country. Because that depends on your catalog and your markets, it is set up as a tailored configuration on the Professional plan. You tell the team which products or collections it covers and which countries need which wording, and they configure it and help with the phrasing. For supporting copy such as a short shipping-restrictions notice beside the confirmation, custom HTML sections can place that text where you want it.


Move the question to where the decision happens. A homepage popup asks everyone, at the wrong moment, and remembers nothing. A cart-level age confirmation asks only the shoppers who put a restricted item in their basket, and stands between them and the checkout button until they answer. Pair it with real verification where your category demands it, get your thresholds right per market, and you have replaced a piece of theater with something that does its job.

E-commerceComplianceAge VerificationShopifyCart Optimization