
Settings page with setup checklist and API health check
Most WordPress age verification plugins are age gates — a popup that asks visitors to click “Yes, I’m 18+” or pick a birthday from a dropdown. Anyone, including a minor, can click through in under a second. That used to be the standard. It is no longer a defensible compliance measure under the UK Online Safety Act, US state age verification laws (Texas, Louisiana, Virginia, and a growing list), or EU age assurance requirements under the Digital Services Act.
XYZ Age Verification is different. It confirms visitors are adults using a real-time selfie liveness check, with automatic escalation to government ID verification for borderline cases or stricter age thresholds. No biometric data is stored. No checkbox to lie to. No date-of-birth dropdown that a child can spin in five seconds.
When you need this plugin:
Important — Cloudflare is required:
This plugin requires that your site is proxied through Cloudflare’s network. This is not an optional integration. Without Cloudflare, the plugin cannot determine where visitors are connecting from, and it will not work.
Setting up Cloudflare involves changing your domain’s DNS settings to point at Cloudflare’s nameservers. This is a real infrastructure change with real consequences:
If you do not have experience with DNS migration, or if your site’s email and DNS are managed by someone else, please read these guides before installing the plugin:
This plugin is not a fit for site owners who are not prepared to manage their own DNS. If your site is hosted on a fully-managed platform where DNS is controlled by the host, or if the prospect of changing nameservers is unfamiliar, consider hiring help for the Cloudflare migration before installing. Alternatively, simpler self-declaration age gate plugins may better match your operational comfort level — they are not real verification, but they also do not require infrastructure changes.
Why XYZ Age Verification:
Free plan included:
This plugin includes a free plan with 100 verification credits per month — no credit card required. Register directly from the plugin settings page with just your email. Credits reset monthly. Additional credit packs are available via PayPal for sites that need more capacity; your first purchase includes 300 bonus credits and switches your site to prepaid billing (credits do not expire or reset monthly).
How it works:
Requirements:
CF-IPCountry and CF-Region-Code). See the “Cloudflare is required” section above for the implications of changing your DNS.External service — XYZ Age Verification API:
This plugin connects to the XYZ Age Verification API at https://age-verify.xyzinc.com, operated by XY Zinc (a brand of Chaos Unlimited LLC), to perform biometric liveness detection and government ID document verification. The plugin cannot function without this service — it is the core verification engine.
When a visitor triggers verification, the plugin sends the visitor’s country and state codes (derived from Cloudflare headers) to the API to create a verification session. The visitor then interacts directly with the verification UI hosted by the service. No biometric data passes through your WordPress server. The plugin polls the API for session status and receives only a pass/fail result.
Complete feature list:
Media files in /wp-content/uploads/ are served directly by your web server and do not pass through WordPress PHP execution, so a free WordPress plugin cannot restrict them. XYZ Protect is a separate licensed plugin that solves this problem using a Cloudflare Worker — every media request is authorized before the file is served. XYZ Protect can be combined with this plugin for sites that need both page gating and file-level protection.
The current model gates the entire site for visitors from configured regions, with the new Exempt Paths feature (2.5.4) allowing specific URLs to bypass the gate. A future release will add the inverse model — restricted paths — where the gate applies only to specific URL paths (e.g., /mature/, /adult-content/) and the rest of the site is accessible without verification.
Credit packs are available for purchase via PayPal at xyzinc.com/credits. Purchased credits persist until used — they do not expire or reset monthly. Multiple packs can be stacked. Your first purchase includes a bonus of 300 credits and switches your site to prepaid billing, replacing the monthly free credit allocation.
This plugin includes the following third-party library:
assets/js/qrcode.js (unminified source), assets/js/qrcode.min.js (minified)No build tools are required. The library is included as-is from the upstream repository with a minor CSS modification (image display style changed from “block” to “inline-block” for QR code placement). The unminified source is included for review.