The AgeWallet OIDC Client plugin adds age verification and content gating to your WordPress website, backed by the AgeWallet™ verification service over OpenID Connect (OIDC).
It is designed to be straightforward to set up, fully customizable, and compatible with all WordPress hosting environments — including sites behind aggressive page caches (Cloudflare, Varnish, WP Rocket, LiteSpeed, etc.).
Two protection modes are available. Standard (Overlay) mode hides gated content via a client-side overlay; it is SEO-friendly and works on any cached page. High Security (Strict) mode short-circuits the page entirely until the visitor verifies, using a cookieless “skeleton” template that pairs with “Cache Everything” CDN rules.
Customize the gate’s appearance from the Gate Appearance tab (logo, copy, colours, button radii) and override anything else from Appearance Customize Additional CSS. Strict-mode analytics — Google Analytics 4, Google Tag Manager, and Facebook Pixel — are configurable from the Strict Mode Analytics tab.
Protection rules cover the whole site, individual URL paths, taxonomies (categories, tags, custom taxonomies), per-post overrides via the editor sidebar, and the [agewallet_protected] shortcode for inline content. WooCommerce is supported out of the box with three checkout-gate modes and per-product / per-category regulated flagging.
Every verification can carry an opaque metadata payload (≤4KB) that round-trips through the OIDC flow and surfaces on the /userinfo response, letting integrators correlate verifications with their own backend records.
For the full feature enumeration see Other Notes; for setup walkthroughs, the available CSS hooks, and the developer-hook list, see the Usage Guide, CSS Customization Guide, and Developer Hooks sections below.
This plugin connects to one required third-party service and, optionally, to analytics services you choose to enable. Nothing is contacted until a visitor begins age verification (the AgeWallet service) or until you enter an analytics ID and use High Security (Strict) mode (the analytics services).
The plugin’s core purpose is to verify a visitor’s age through the AgeWallet™ service using the OpenID Connect (OIDC) Authorization Code flow with PKCE. When a visitor starts verification, their browser is redirected to the AgeWallet authorization endpoint; the plugin’s server then exchanges the returned authorization code for the verification outcome and requests the result from the userinfo endpoint.
https://app.agewallet.io/user/authorize, https://app.agewallet.io/user/token, and https://app.agewallet.io/user/userinfo.Only if you enter a GA4 Measurement ID or a Google Tag Manager Container ID on the Strict Mode Analytics tab, and only while High Security (Strict) mode is active, the plugin outputs Google’s official analytics snippet into the strict-mode loading screen (where your theme’s own tags cannot run). The plugin sends no data itself; the snippet is Google’s standard tag, executed in the visitor’s browser using the ID you supply.
https://www.googletagmanager.com.Only if you enter a Facebook Pixel ID on the Strict Mode Analytics tab, and only while High Security (Strict) mode is active, the plugin outputs Meta’s official Pixel snippet into the strict-mode loading screen using the ID you supply. The plugin sends no data itself.
https://connect.facebook.net (with a https://www.facebook.com no-script fallback image).This service is provided by Meta Platforms, Inc. Terms of Service: https://www.facebook.com/legal/terms — Privacy Policy: https://www.facebook.com/privacy/policy/= Features =
Legal compliance: leverages the AgeWallet™ service, designed to comply with modern age-verification laws in major jurisdictions.
/shop/, /videos/premium/).[agewallet_protected] shortcode for specific page elements./userinfo response.This guide explains how to configure and use the plugin using the new setup wizard.
Before the plugin can work, you must connect it to your AgeWallet account. If you don’t have an account yet, register one at https://app.agewallet.io/register — new accounts receive $5 of free verification credit.
You have several ways to protect content. You can mix and match these methods on the Step 2: Content Guarding page.
A. Security Mode
B. Global Scope
C. Taxonomy Rules
You can define rules based on Categories, Tags, or Custom Taxonomies (like WooCommerce Product Categories).
* Gate All Terms: Gates every post belonging to that taxonomy.
* Exclude All Terms: Ensures posts in that taxonomy are always public.
* Specific Rules: Search for specific terms (e.g., “Premium Content” category) to Gate or Exclude individually. Note: Exclusion rules take priority over Gating rules.
D. Path-Based Rules
/shop/, /videos/ will protect example.com/shop/, example.com/shop/product-1/, and example.com/videos/my-video/./privacy-policy/, /terms/.E. WooCommerce (visible when WooCommerce is active)
The Content Guarding page shows a “WooCommerce” section below the Taxonomy Rules. The plugin also adds an “AgeWallet” tab to the Product Data metabox and a checkbox to the term-edit screens for Categories and Tags.
Checkout Gating: chooses how the checkout page itself is gated.
Checkout Metadata Fields: pick which cart-context values get attached to each verification as metadata that round-trips through the OIDC flow back to your backend. Available fields: cart hash, cart total, currency code, WordPress user ID, billing country, number of line items. Defaults: cart hash, cart total, currency. Use the agewallet_wc_checkout_metadata filter (see Developer Hooks) for fully custom payloads.
Per-Product Regulated Status: open any product in WooCommerce > Products > Edit Product > AgeWallet tab.
Per-Category / Per-Tag Regulated Flag: on the term-edit screens (Products > Categories or Products > Tags), check “Regulated for AgeWallet checkout gate”. Products inherit the regulated flag from any of their categories or tags (unless overridden per-product).
You can customize the age gate to match your brand on the Step 3: Gate Appearance page.
Note: These settings only apply if you are using High Security (Strict) Mode.
Because Strict Mode short-circuits the theme during verification, the analytics tags your theme normally renders do NOT fire on the “Verifying…” loading screen. Enter the IDs of the services you use and AgeWallet renders their official snippets directly. Leave any field blank to skip it.
G-XXXXXXXXXX)GTM-XXXXXXX)For analytics providers we don’t ship a field for (Plausible, Fathom, Microsoft Clarity, Hotjar, etc.), add them via the agewallet_skeleton_head / agewallet_skeleton_footer action hooks in a small mu-plugin or your theme’s functions.php — see the Developer Hooks section.
On the Edit Post or Edit Page screen, you will see an “Age Restriction” box in the sidebar. These settings override all global rules.
/shop/) or a protected Category.To protect just one part of a post (like a single video or paragraph), wrap it in the [agewallet_protected] shortcode.
[agewallet_protected]
This content, and only this content, will be hidden until the user verifies their age.
[/agewallet_protected]
Note: Shortcode protection only works in Standard Mode. In Strict Mode, the shortcode will NOT work.
If you use High Security Mode, the plugin generates static HTML caches of your protected pages to ensure speed.
Use this guide to customize the appearance of the AgeWallet™ age gate and the Strict Mode loading screen.
For most customizations, the colour and radius controls in Step 3: Gate Appearance are sufficient — they map directly to the CSS custom properties listed in the next subsection.
For anything beyond that (custom fonts, site-wide rules, advanced selectors, hover states not exposed in the form), add your rules in Appearance Customize Additional CSS. AgeWallet applies that CSS to the gate on both Standard and Strict modes. The gate exposes a stable DOM with the .aw-gate__* and .agewallet-* class names below — write rules against them as you would for any theme component.
The plugin’s gate stylesheet uses these CSS variables; the Gate Appearance pickers write to them. You can also override them yourself in Customizer Additional CSS:
--aw-bg — Overlay backdrop (Standard mode) and skeleton background (Strict mode).--aw-card — Card background.--aw-card-border — Card border colour.--aw-text — Card body text colour.--aw-muted — Disclaimer text colour.--aw-purple — “I Agree” button background.--aw-purple-700 — “I Agree” hover state.--aw-no-btn-dark-bg — “I Disagree” button background.--aw-no-btn-dark-text — “I Disagree” …