Description
Ask a visitor to confirm their age, for the whole site, for every shop page,
or only for the products that are actually restricted — and then do something
about the answer.
The purchase is refused, not just covered. An overlay is one
browser-devtools panel away, and ?add-to-cart=123 never sees it at all, so
the order arrives anyway for exactly the product a shop is not allowed to sell
to whoever placed it. Here a restricted product is not purchasable as far
as WooCommerce is concerned, adding it is refused with a message the shopper
reads, and a basket already holding one cannot be paid for. That one filter
covers the block cart and checkout and the Store API too.
Nobody’s basket is emptied. Somebody who confirms their age finds their
shopping exactly where they left it.
It works with a page cache, and without JavaScript. The gate is
server-rendered as an ordinary form, so it is there before a script has run.
Because a confirmation is a fact about one visitor and a cache cannot know it,
the markup is identical for everybody and a five-line snippet in the head
reads the cookie and hides a gate that is already cleared — rather than
removing it after the page has painted, which is why so many age gates flash
on every page for somebody who confirmed weeks ago.
Search engines are never gated. A shop that age-gates its crawler
disappears from search results within a fortnight, and finds out from its
traffic rather than from its plugin.
What you get
- A gate for the whole site, every shop page, or only restricted products
- Any product set to always ask, or never ask, on the product itself —
because one restricted item among a hundred ordinary ones is the common case - One minimum age for the store
- Refused add-to-cart, blocked checkout, and a basket that is never emptied
- Search engines exempt, in every scope
- No JavaScript beyond the five-line no-flash snippet
The full edition
Gatemi Age Verification for WooCommerce
is a separate plugin, sold on gatemi.com, that adds a date-of-birth
gate checked on the server, restricted categories with sub-categories
included and an age of their own, a minimum age per product, a
confirmation tick box at the checkout in your own words, how long a
confirmation is remembered, and your own wording throughout.
Both editions store everything the same way, so upgrading keeps your
configuration and a confirmation a visitor has already given.
External services
None. This plugin makes no request anywhere.
Screenshots



FAQ
Can somebody still buy by crafting a URL?
No. The product is not purchasable, and add-to-cart is refused server-side.
Is this an identity check?
No, and no age gate is. It records what a visitor declared and when — which is what a shop is normally asked to be able to show.
Does it work with a page cache?
Yes. Every visitor is served the same markup, and the head snippet decides whether the gate is shown before the page paints.
Will it hide my shop from Google?
No. Search engines are exempt, in every scope.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Age Verification for WooCommerce – Gatemi” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Age Verification for WooCommerce – Gatemi” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- First release: the age gate for the whole site, every shop page or only restricted products, with the one-tap confirmation enforced on the server — the product not purchasable, the add-to-cart refused with the age named, and a basket holding one not payable — the no-flash head snippet so a cached page never shows a cleared gate, the crawler exemption, a per-product always-ask or never-ask switch, and the age, wording and moment recorded on the order.
