{"id":307084,"date":"2026-05-26T08:52:48","date_gmt":"2026-05-26T08:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/proofage-age-verification\/"},"modified":"2026-05-26T08:52:20","modified_gmt":"2026-05-26T08:52:20","slug":"proofage-age-verification","status":"publish","type":"plugin","link":"https:\/\/pirate.wordpress.org\/plugins\/proofage-age-verification\/","author":23491413,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"6.9.4","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"ProofAge Age Verification","header_author":"ProofAge","header_description":"Adds ProofAge-powered age verification to WordPress and WooCommerce storefronts.","assets_banners_color":"08144d","last_updated":"2026-05-26 08:52:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/proofage.xyz\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"proofage","date":"2026-05-26 08:52:20"}},"upgrade_notice":{"0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3548789,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3548789,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3548789,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[70877,5616,3148,282,286],"plugin_category":[45],"plugin_contributors":[264438],"plugin_business_model":[],"class_list":["post-307084","plugin","type-plugin","status-publish","hentry","plugin_tags-age-gate","plugin_tags-age-verification","plugin_tags-checkout","plugin_tags-ecommerce","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-proofage","plugin_committers-proofage"],"banners":{"banner":"https:\/\/ps.w.org\/proofage-age-verification\/assets\/banner-772x250.png?rev=3548789","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/proofage-age-verification\/assets\/icon-128x128.png?rev=3548789","icon_2x":"https:\/\/ps.w.org\/proofage-age-verification\/assets\/icon-256x256.png?rev=3548789","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>ProofAge Age Verification integrates the hosted ProofAge verification flow with WordPress and WooCommerce.<\/p>\n\n<p>With this plugin you can:<\/p>\n\n<ul>\n<li>protect the full site or selected WordPress pages and post categories<\/li>\n<li>protect WooCommerce products and product categories<\/li>\n<li>block add-to-cart, cart, checkout, and Store API flows until verification is complete<\/li>\n<li>show a full-page gate or a blocking overlay, depending on the protected content<\/li>\n<li>launch the hosted ProofAge flow in an iframe modal, the current window, or a new tab<\/li>\n<li>store a verification snapshot on WooCommerce orders and show it in the admin order details panel<\/li>\n<li>localize gate copy and pass the supported storefront language to ProofAge when creating a verification<\/li>\n<\/ul>\n\n<p>The plugin uses the hosted ProofAge flow and webhooks together with browser-side return reconciliation and status polling.<\/p>\n\n<p>External service disclosure:<\/p>\n\n<ul>\n<li>this plugin requires a ProofAge account and valid API credentials<\/li>\n<li>it connects to the ProofAge API to create verifications, fetch verification status, and process signed webhook callbacks<\/li>\n<li>when a shopper starts verification, the plugin sends limited verification request data to ProofAge, such as an external identifier, callback or return URL, supported storefront language, and verification-related metadata<\/li>\n<li>the plugin stores limited verification state locally in WordPress and WooCommerce, including verification status, verification ID, external ID, return URL, timestamps, session token, and optional order verification metadata<\/li>\n<li>ProofAge Privacy Policy: https:\/\/proofage.xyz\/privacy<\/li>\n<li>ProofAge Terms of Service: https:\/\/proofage.xyz\/terms<\/li>\n<\/ul>\n\n<p>Supported browser flows:<\/p>\n\n<ul>\n<li>open the hosted verification in an iframe modal on the current page<\/li>\n<li>redirect in the current window<\/li>\n<li>open the hosted verification in a new tab<\/li>\n<\/ul>\n\n<p>This version intentionally does not support:<\/p>\n\n<ul>\n<li>a custom in-page ProofAge capture UI<\/li>\n<li>theme-specific quick-view integrations beyond the generic add-to-cart interception hooks<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the proofage-age-verification folder to the \/wp-content\/plugins\/ directory, or install the plugin through WordPress.<\/li>\n<li>Activate ProofAge Age Verification in the WordPress admin.<\/li>\n<li>Go to Settings -&gt; ProofAge Verification.<\/li>\n<li>Enter your ProofAge API key and secret key.<\/li>\n<li>Configure launch mode, gate texts, verification TTL, and protection scope.<\/li>\n<li>Set the ProofAge webhook URL to https:\/\/your-store.example\/wp-json\/proofage\/v1\/webhook.<\/li>\n<li>Make sure ProofAge can return to https:\/\/your-store.example\/?proofage-return=1.<\/li>\n<\/ol>\n\n<p>The plugin automatically appends an origin query parameter so shoppers can be returned to the page where they started verification.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20support%20woocommerce%3F\"><h3>Does this plugin support WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. It supports WooCommerce product protection, category protection, single-product gating, loop add-to-cart interception, cart validation, checkout validation, and Store API add-to-cart validation for block-based flows.<\/p><\/dd>\n<dt id=\"can%20i%20protect%20only%20specific%20products%20or%20categories%3F\"><h3>Can I protect only specific products or categories?<\/h3><\/dt>\n<dd><p>Yes. You can combine site-wide rules with product, product-category, page, and WordPress post-category targeting. Exclusions are also supported.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20the%20gate%20texts%3F\"><h3>Can I translate the gate texts?<\/h3><\/dt>\n<dd><p>Yes. The Gate texts can be translated through Polylang or WPML String Translation. The plugin also passes the current storefront language to ProofAge when it matches a supported ProofAge SDK language.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20an%20external%20service%3F\"><h3>Does this plugin use an external service?<\/h3><\/dt>\n<dd><p>Yes. This plugin connects to ProofAge to create verifications, fetch status updates, and process webhook callbacks. A ProofAge account and API credentials are required.<\/p><\/dd>\n<dt id=\"what%20data%20does%20the%20plugin%20send%20to%20proofage%20and%20store%20locally%3F\"><h3>What data does the plugin send to ProofAge and store locally?<\/h3><\/dt>\n<dd><p>When a shopper starts verification, the plugin sends limited verification request data to ProofAge, such as an external identifier, callback or return URL, supported storefront language, and verification-related metadata. The plugin stores limited verification state locally in WordPress and WooCommerce, including verification status, verification ID, external ID, return URL, timestamps, session token, and optional order verification metadata.<\/p><\/dd>\n<dt id=\"where%20can%20i%20review%20the%20proofage%20legal%20documents%3F\"><h3>Where can I review the ProofAge legal documents?<\/h3><\/dt>\n<dd><p>The ProofAge Privacy Policy is available at https:\/\/proofage.xyz\/privacy and the Terms of Service are available at https:\/\/proofage.xyz\/terms.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20verification%20data%20on%20orders%3F\"><h3>Does the plugin store verification data on orders?<\/h3><\/dt>\n<dd><p>Yes. For WooCommerce orders the plugin stores a ProofAge verification snapshot in order meta and displays the verification result in the admin order details view.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20embed%20proofage%20in%20an%20iframe%20or%20modal%3F\"><h3>Does this plugin embed ProofAge in an iframe or modal?<\/h3><\/dt>\n<dd><p>Yes. Hosted verification can open in an iframe modal, in the current window, or in a new tab, depending on the selected launch mode.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added WordPress and WooCommerce protection rules.<\/li>\n<li>Added hosted verification launch flows for iframe modal, redirect, and new tab.<\/li>\n<li>Added WooCommerce order verification snapshot in admin order details.<\/li>\n<li>Added multilingual gate text support through Polylang and WPML String Translation.<\/li>\n<li>Added storefront language passthrough for supported ProofAge SDK languages.<\/li>\n<\/ul>","raw_excerpt":"Adds ProofAge-powered age verification to WordPress and WooCommerce storefronts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=307084"}],"author":[{"embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/proofage"}],"wp:attachment":[{"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307084"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307084"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307084"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307084"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307084"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pirate.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}