Title: Age Verification for WooCommerce – Gatemi
Author: gatemi
Published: <strong>October 15, 2026</strong>
Last modified: October 15, 2026

---

Search plugins

![](https://ps.w.org/gatemi-age-verification/assets/banner-772x250.png?rev=3747789)

![](https://ps.w.org/gatemi-age-verification/assets/icon-256x256.png?rev=3747789)

# Age Verification for WooCommerce – Gatemi

 By [gatemi](https://profiles.wordpress.org/gatemi/)

[Download](https://downloads.wordpress.org/plugin/gatemi-age-verification.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/gatemi-age-verification/#description)
 * [Reviews](https://wordpress.org/plugins/gatemi-age-verification/#reviews)
 * [Development](https://wordpress.org/plugins/gatemi-age-verification/#developers)

 [Support](https://wordpress.org/support/plugin/gatemi-age-verification/)

## 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](https://gatemi.com/plugins/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

[⌊The settings screen: whether the gate is on, where it appears, and the store-wide
minimum age.⌉⌊The settings screen: whether the gate is on, where it appears, and
the store-wide minimum age.⌉[

The settings screen: whether the gate is on, where it appears, and the store-wide
minimum age.

[⌊The gate on a restricted product, before a visitor has confirmed their age.⌉⌊The
gate on a restricted product, before a visitor has confirmed their age.⌉[

The gate on a restricted product, before a visitor has confirmed their age.

[⌊The per-product switch in WooCommerce's own Product data box — always ask, never
ask, or follow the store.⌉⌊The per-product switch in WooCommerce's own Product data
box — always ask, never ask, or follow the store.⌉[

The per-product switch in WooCommerce’s own Product data box — always ask, never
ask, or follow the store.

## 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.

Contributors

 *   [ gatemi ](https://profiles.wordpress.org/gatemi/)

[Translate “Age Verification for WooCommerce – Gatemi” into your language.](https://translate.wordpress.org/projects/wp-plugins/gatemi-age-verification)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/gatemi-age-verification/),
check out the [SVN repository](https://plugins.svn.wordpress.org/gatemi-age-verification/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/gatemi-age-verification/)
by [RSS](https://plugins.trac.wordpress.org/log/gatemi-age-verification/?limit=100&mode=stop_on_copy&format=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.

## Meta

 *  Version **1.0.0**
 *  Last updated **4 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [age gate](https://wordpress.org/plugins/tags/age-gate/)[age verification](https://wordpress.org/plugins/tags/age-verification/)
   [compliance](https://wordpress.org/plugins/tags/compliance/)[restricted products](https://wordpress.org/plugins/tags/restricted-products/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/gatemi-age-verification/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/gatemi-age-verification/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/gatemi-age-verification/reviews/)

## Contributors

 *   [ gatemi ](https://profiles.wordpress.org/gatemi/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/gatemi-age-verification/)