Theme App Extension Setup
This guide explains how to enable and configure each VerifyHuman widget through the Shopify theme editor. No code editing is required — everything is managed through the theme editor UI.
Overview: App Embeds vs App Blocks
Shopify theme extensions come in two forms:
| Type | How It Works | VerifyHuman Components |
|---|---|---|
| App Embeds | Injected globally into the <head> of every page. Toggled on/off from the App Embeds panel. |
Age Gate, Human Check, Checkout ID |
| App Blocks | Added to specific sections on specific page templates. Placed manually where you want them. | Identity Verification |
Understanding this distinction is important:
- App Embeds appear in the theme editor sidebar under "App embeds" and work across your entire store when enabled.
- App Blocks do not appear in the App Embeds panel. You add them by clicking + Add block inside a section on the page where you want them.
Enabling App Embeds
How to Access App Embeds
- From your Shopify admin, go to Online Store > Themes.
- Click Customize on your active theme.
- In the theme editor, look at the left sidebar.
- Scroll down and click App embeds (it may appear at the bottom of the sidebar, or under a gear/settings icon depending on your theme).
- You will see the available VerifyHuman embeds listed. Toggle each one on or off.
- Click Save after making changes.
Age Gate (App Embed)
Name in theme editor: VerifyHuman — Age Gate
This embed adds a full-page age verification overlay to your store. Visitors must confirm their age (and optionally complete selfie verification) before accessing content.
Settings
| Setting | Description | Default |
|---|---|---|
| Enable Age Verification | Master toggle for the age gate | Enabled |
| Apply Age Gate To | Where verification is required (see trigger modes below) | Entire Store |
| Product Tag | Tag to match when using "Products with Specific Tag" mode | age-restricted |
| Collection Tag | Tag to match when using "Collections with Specific Tag" mode | age-restricted |
| Page Handles | Comma-separated page handles for "Specific Page Handles" mode | (empty) |
| Minimum Age | Required age (range: 18–25) | 18 |
| Use Case | Content category: Adult, Tobacco, Alcohol, Cannabis, Gambling | Adult |
| Require Selfie Verification | Whether users must take a selfie after confirming age | Enabled |
| Session Mode | Guest (session-based) or Profile (customer account) | Guest |
| Redirect URL for Underage Users | Where to send users who click "No" | google.com |
| Session Duration | How long verification is remembered (1 hour to 1 week) | 24 hours |
| Custom Message | Optional text displayed on the verification overlay | (empty) |
| Logo | Optional logo image for the verification overlay | (none) |
Trigger Modes
The Apply Age Gate To setting controls where the age gate appears:
- Entire Store (All Pages) — Every page on your store shows the age gate.
- Products with Specific Tag — Only product pages where the product has the configured tag (default:
age-restricted). Tags are case-insensitive. - Collections with Specific Tag — Collection pages and product pages within tagged collections.
- Specific Page Handles — Only pages whose handle matches the comma-separated list (e.g.,
about-us, contact).
Human Check (App Embed)
Name in theme editor: VerifyHuman — Human Check
This embed adds bot detection to forms across your store. It loads the verification widget on pages that contain forms you want to protect.
Settings
| Setting | Description | Default |
|---|---|---|
| Enable Human Verification | Master toggle for bot protection | Enabled |
| Protect Signup/Registration Forms | Require verification on customer registration pages | Disabled |
| Protect Review Forms | Require verification on product review forms | Disabled |
| Protect Contact Forms | Require verification on contact page forms | Disabled |
| Protect All Forms (Site-wide) | Load verification on all pages | Disabled |
| Show Verified Badge | Display a badge after successful verification | Enabled |
| Enable Debug Mode | Show console logs for troubleshooting form detection | Disabled |
At least one form protection option must be enabled for the widget to load.
Advanced: Custom Form Selectors
If your theme uses custom form IDs or classes that differ from standard Shopify themes, you can override the default CSS selectors:
| Setting | Default Selectors |
|---|---|
| Signup Form Selector | #create_customer, form[action*="/account"], .customer-form, [data-customer-form] |
| Reviews Form Selector | .product-review-form, #review-form, .spr-form, .stamped-form, .jdgm-form, [data-review-form] |
| Contact Form Selector | #contact-form, .contact-form, form[action*="/contact"], [data-contact-form] |
Only change these if the widget is not detecting your theme's forms. Use comma-separated CSS selectors.
Checkout ID (App Embed)
Name in theme editor: VerifyHuman — Checkout ID
This embed intercepts the checkout process and requires identity verification before customers can complete their purchase. It works with standard checkout as well as accelerated checkout methods (Shop Pay, Apple Pay, Google Pay) when combined with the cart checkout validation function extension.
Settings
| Setting | Description | Default |
|---|---|---|
| Enable Pre-Checkout Identity Verification | Master toggle for checkout identity guard | Disabled |
| Require for All Checkouts | Every checkout requires identity verification | Disabled |
| Product Tag | Only require verification for products with this tag | vh_requires_idv |
| Hide Express Checkout Buttons | Hide Shop Pay, Apple Pay, Google Pay until verified | Enabled |
| Show Verified Badge | Display a green checkmark next to checkout when verified | Enabled |
| Encourage Account Creation | Prompt guests to create an account to save verification | Enabled |
| Dialog Title | Title text for the verification dialog | "Identity Verification Required" |
| Dialog Message | Message text in the verification dialog | "Please verify your identity before checkout..." |
| Button Text | Text on the verification button | "Verify Identity & Checkout" |
How It Detects Restricted Products
The checkout guard checks each item in the cart using two methods:
- Product metafield:
verifyhuman.requires_idvset totrue - Product tag: The tag configured in settings (default:
vh_requires_idv)
If any item in the cart matches either condition (or if "Require for All Checkouts" is enabled), the verification dialog appears.
Returning Customer Verification
For logged-in customers, the widget checks:
customer.metafields.verifyhuman.identity_verified— whether the customer has been verifiedcustomer.metafields.verifyhuman.identity_expires_at— when the verification expires
If a customer is already verified and the verification has not expired, they can proceed to checkout without re-verifying.
Adding App Blocks
Identity Verification (App Block)
Name in theme editor: Identity Verification
This block renders a verification button that customers click to start the identity verification flow. Unlike app embeds, you place this block exactly where you want it to appear — on a product page, a custom page, or any section that supports app blocks.
How to Add the Block
- From your Shopify admin, go to Online Store > Themes > Customize.
- In the theme editor, navigate to the page template where you want the verification button (e.g., a product page).
- Find the section where you want to place the button.
- Click + Add block within that section.
- In the block picker, look under Apps for Identity Verification.
- Click it to add it to the section.
- Configure the block settings as needed.
- Click Save.
Settings
| Setting | Description | Default |
|---|---|---|
| Show Introduction | Display a title and description above the button | Enabled |
| Title | Heading text above the button | "Identity Verification Required" |
| Description | Description text below the title | "Please verify your identity to continue..." |
| Button Text | Text on the verification button | "Verify My Identity" |
| Button Color | Color of the verification button | #0d9488 (teal) |
| Redirect After Success | Optional URL to redirect to after successful verification | (none) |
| Custom Message | Optional message displayed during verification | (empty) |
Common Placement Scenarios
- Product pages: Add the block to the product information section so customers verify before purchasing.
- Cart page: Add the block above or below the cart contents.
- Custom landing page: Add the block to any section on a custom page template.
Verifying Your Setup
After enabling widgets:
- Open your storefront in a private/incognito browser window (to avoid cached states).
- Check that the enabled features appear as expected:
- Age Gate: A full-page overlay should block access until age is confirmed.
- Human Check: Forms should show verification before submission.
- Identity Verification block: The verification button should appear where you placed it.
- Checkout ID: The verification dialog should appear when proceeding to checkout with restricted items.
- Open your browser's developer console (F12) and check for any
[VerifyHuman]messages.
Common Issues
"App URL metafield not set" warning in console
The shop metafield verifyhuman.app_url has not been configured. This is set automatically when the app is installed and settings are saved. Try saving your settings from the VerifyHuman dashboard, or reinstall the app.
Widgets not appearing in theme editor
- Ensure the Theme App Extension is deployed. Contact VerifyHuman support if the extension does not appear.
- Remember that Identity Verification is an App Block, not an App Embed. It will not appear in the App Embeds panel. Navigate to a page template and click + Add block to find it under Apps.
Age gate not triggering on specific products
- Confirm the trigger mode is set to "Products with Specific Tag" (not "Entire Store").
- Verify the product has the exact tag specified in the settings (default:
age-restricted). - Tags are case-insensitive, but must otherwise match exactly.
Human Check not detecting forms
- Enable Debug Mode in the Human Check settings to see console logs about form detection.
- If your theme uses non-standard form markup, enter custom CSS selectors in the Advanced section.
Next Steps
- Installation Guide — Full installation walkthrough
- Age Gate — Detailed age verification configuration
- Identity Verification — KYC and checkout guard details
- Human Verification — Bot protection configuration
- Settings Reference — Complete list of all settings
- Testing Your Setup — Step-by-step validation
- Troubleshooting — Common issues and solutions