The Complete Guide

Everything you need to install, configure, and get the most out of AttentionVerify from first activation to Enterprise white-labeling.

Getting Started

AttentionVerify installs like any WordPress plugin and requires no coding. The full setup from ZIP file to your first verified coupon takes about 10 minutes.

Installing the free ZIP

  1. Download the free ZIP from the Download page. You'll get a file named something like attention-verify-free.zip note where your browser saves it.
  2. In wp-admin, go to Plugins → Add New Plugin, then click Upload Plugin near the top of the page.
  3. Click Choose File, select the ZIP you downloaded, then click Install Now.
  4. Once WordPress finishes installing it, click Activate Plugin.
  5. After activation, a new AttentionVerify menu item appears in the left wp-admin sidebar that's your home base for everything below.

What to do next

With the plugin active, there are two things to set up before your first customer sees the widget:

  1. Connect your Firebase project so session data has somewhere to log to.
  2. Assign a video to at least one product see Adding Videos to Products.
Site limit: Free and Pro licenses cover 1 website each. If you try to activate on a second site, the license will deactivate on the first. Need more than one site? See Getting Enterprise, which supports unlimited sites on a single license.
Session limit: The Free plan includes up to 100 verified attention sessions per month. Once this limit is reached, the widget will show a "Monthly limit reached" message to shoppers until the next month, or until you upgrade to Pro/Enterprise for unlimited sessions.

How Attention Verification Actually Works

This is the core mechanic behind every part of the plugin worth understanding end-to-end before you configure anything else.

From the shopper's point of view

  1. The shopper lands on a product page that has a video assigned.
  2. The widget prompts them to allow camera access.
  3. As the video plays, the plugin tracks whether a face is genuinely present and attentive in front of the camera, accumulating verified watch time time only counts while attention is actually detected, not just while the video is playing.
  4. Once verified attention crosses the required threshold (95% by default), the reward is triggered automatically a WooCommerce coupon is generated and shown to the shopper.
Privacy, upfront: Camera access is processed 100% locally in the shopper's browser via MediaPipe. No video or image frame is ever uploaded, transmitted, or stored not by the plugin, not by OMNIYA. Only the resulting session metrics (verified duration, completion status) are saved to your own Firebase project.

Adjusting the threshold

95% is the default on every plan. Pro and Enterprise can change this to any value via the Custom Attention Threshold setting see Upgrading to Pro.

Anti-Cheating Detection

This is what keeps the reward from being easily gamed. In plain terms, it protects against:

  • Leaving the tab open and walking away no face in frame means no verified time accumulates.
  • Holding up a photo or static image to fake presence the detection model looks for genuine, live facial signals, not just "a face-shaped object," so a static photo doesn't register as attentive presence.
  • Switching tabs or minimizing the window mid-video tab focus is one of the tracked conditions, so verified time pauses the instant focus is lost.

Firebase Setup

AttentionVerify uses your own Firebase Firestore project to log anonymous session data attention timers, completion status, and timestamps. No data ever touches OMNIYA servers.

Create a Firebase project

  1. Go to Firebase Console and create a new project (or select an existing one).
  2. Name your project and disable Google Analytics if you don't need it (optional).

Register a web app

  1. Inside the project, click the gear icon next to "Project Overview," then Project settings.
  2. Scroll to the Your apps section. If no web app exists yet, click Add app → Web (</>), give it a nickname, and register it.
  3. Firebase will display a firebaseConfig object this is what you'll copy into the plugin.

Map each field into plugin settings

In AttentionVerify → Settings → Firebase, six fields are waiting for values straight out of the firebaseConfig object Firebase just showed you:

In firebaseConfig Paste into plugin field Looks like
apiKey Firebase API Key AIzaSy...
authDomain Auth Domain your-project.firebaseapp.com
projectId Project ID your-project
storageBucket Storage Bucket your-project.firebasestorage.app
messagingSenderId Sender ID 123456789012
appId App ID 1:123456789012:web:abc123

Create the Firestore database

  1. In the Firebase Console sidebar, go to Build → Firestore Database.
  2. Click Create database if one doesn't exist yet.
  3. Start in production mode, and pick a region close to your store's customers.

Set security rules

Paste these into Firestore Database → Rules in your Firebase Console. They don't just restrict writes to the sessions collection they constrain the exact shape of each write (required fields, and only those fields, so nothing like an image or extra field can ever be attached to a session document), and prevent a completed session from being silently rewritten:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    match /sessions/{sessionId} {
      allow get: if true;
      allow list: if false;

      allow create: if request.resource.data.keys().hasAll(['session_id','ad_id','completion_status','created_at'])
                    && request.resource.data.keys().hasOnly(['session_id','ad_id','completion_status','attention_duration','face_lost_count','head_moved_count','tab_switch_count','fail_count','created_at','updated_at'])
                    && request.resource.data.completion_status == 'in_progress'
                    && request.resource.data.session_id is string
                    && request.resource.data.session_id.size() < 200;

      allow update: if resource.data.completion_status == 'in_progress'
                    && request.resource.data.keys().hasOnly(['session_id','ad_id','completion_status','attention_duration','face_lost_count','head_moved_count','tab_switch_count','fail_count','created_at','updated_at'])
                    && request.resource.data.session_id == resource.data.session_id
                    && request.resource.data.ad_id == resource.data.ad_id
                    && request.resource.data.completion_status in ['in_progress', 'verified', 'failed'];

      allow delete: if false;

      match /events/{eventId} {
        allow create: if request.resource.data.keys().hasAll(['type','message','timestamp'])
                      && request.resource.data.keys().hasOnly(['type','message','timestamp']);
        allow read, update, delete: if false;
      }
    }

    match /publisher_stats/totals {
      allow get: if true;
      allow list: if false;
      allow write: if request.resource.data.keys().hasOnly(['total_seconds_watched','completed_attention','uncompleted_attention','updated_at']);
      allow delete: if false;
    }

    match /{document=**} {
      allow read, write: if false;
    }
  }
}

The full, always-current version of these rules along with an explanation of what they do and don't protect against is in the plugin's readme.txt under "Firestore Security Rules".

Save and test

Back in AttentionVerify → Settings → Firebase, click Save & Test Connection. A green confirmation means the plugin can write to Firestore successfully.

Warning: Never use "test mode" Firestore rules (e.g. allow create: if true;) in production they allow anyone to read and write your entire database, with no restriction on document shape or size.

Enable Firebase App Check (recommended)

App Check is an additional layer on top of the rules above it confirms that requests reaching your Firestore database are genuinely coming from your own site's widget, not a scripted client that copied your public Firebase config. It's configured in your own Firebase Console; the plugin can't turn it on for you, but once you've enabled it, the plugin is ready to use it.

  1. Register a free reCAPTCHA v3 key at google.com/recaptcha/admin/create for your domain, and copy the Site Key.
  2. In the Firebase Console, go to App Check, register your web app with the reCAPTCHA v3 provider, and paste in the same Site Key.
  3. Under Firestore Database → App Check, start in Monitoring mode so you can confirm real traffic passes before enforcing anything.
  4. Once monitoring looks correct, switch Firestore to Enforced.
  5. Back in AttentionVerify → Settings → Firebase, paste the same Site Key into App Check Site Key and save the widget will start attaching App Check tokens automatically.
Leaving the App Check Site Key field blank is completely safe the plugin works exactly as before. App Check is an extra layer on top of the security rules above, not a replacement for them.

Free Plan Settings Guide

Every setting available on the Free plan lives under AttentionVerify → Settings. A few fields need info pulled from elsewhere in wp-admin here's exactly where to find each one.

WooCommerce Consumer Key & Consumer Secret

These authenticate the plugin against the WooCommerce REST API so it can generate coupons on your behalf.

  1. Go to WooCommerce → Settings → Advanced → REST API.
  2. Click Add key.
  3. Set permissions to Read/Write, then click Generate API key.
  4. Copy the Consumer Key (starts with ck_) and Consumer Secret (starts with cs_) shown on the confirmation screen, and paste both into AttentionVerify's settings.
Warning: The Consumer Secret is only ever shown once, immediately after generation. If you navigate away before copying it, you'll need to revoke the key and generate a new one.

Default Video URL

The fallback video shown on any product that doesn't have its own video assigned. Either paste a direct video file URL, or click Choose from Media Library to select a video you've already uploaded to WordPress.

Per-Product Video Management & finding a Product ID

Some fields including the shortcode's product_id parameter later in this guide ask for a specific product's numeric ID. Two ways to find it:

  • In wp-admin, go to Products, hover over the product name, and look at the link preview at the bottom of your browser window it ends in post=123. That number is the ID.
  • Or, open the product for editing and check the address bar: post.php?post=123&action=edit.

Coupon settings

Setting What it does
Discount Amount (%) The percentage discount applied to the auto-generated coupon on verified completion.
Coupon Prefix Text prepended to every generated coupon code, e.g. ATV-XXXXXX.
Note: The Free plan is limited to 1 site and includes up to 100 verified sessions per month at no cost.

Upgrading to Pro Full Guide

Pro is purchased through Freemius checkout, then activated with a license key. There's a fast automatic path and a manual fallback in case the automatic one doesn't go through.

1. Purchase

  1. Click Upgrade to Pro either from the pricing section on the homepage, or from inside wp-admin.
  2. Complete checkout via Freemius.

2. Fastest path: the email activation link

Immediately after purchase, Freemius sends a confirmation email containing your license key and a direct activation link. Click that link while logged into your WordPress site and the license activates automatically no copy-pasting required. This is the recommended path for most stores.

3. Fallback: manual activation

If the email is delayed, missed, or the link doesn't work for any reason:

  1. Log into wp-admin and open the AttentionVerify plugin page.
  2. If the plugin detects it isn't yet licensed, it shows a license activation field/prompt automatically.
  3. Paste the license key from your confirmation email into that field and click Activate.
If a separate Pro ZIP is provided (rather than an in-place upgrade), install it the same way as the Free version Plugins → Add New → Upload Plugin which replaces the Free install. Then activate the license as described above.

What changes once Pro is active

All Free features remain, plus the settings page unlocks a new "Pro" tab.

Pro setting What it does
Custom reward message Replace the default "Attention verified" copy shown to customers with your own text.
Coupon expiry control Set how many hours or days a generated coupon stays valid.
Watermark removal Removes the "AttentionVerify" watermark from the camera widget.
Custom attention threshold Change the verified-attention requirement from the 95% default to any value you choose.
Advanced analytics Adds drop-off funnels and per-product breakdowns to the analytics dashboard.
CSV export Export raw session data from the analytics dashboard for external reporting.

Getting Enterprise Full Guide

Enterprise is custom-scoped for multi-site agencies and larger stores, and isn't self-serve pricing and onboarding are handled directly with the OMNIYA team.

Licensing: Unlike Free and Pro (limited to 1 site each), Enterprise covers unlimited sites on a single license built for agencies managing multiple stores.

How to get started

Reach out using either of the same channels available on the pricing section of the homepage:

Once Enterprise is active

Your settings page gains an "Enterprise" tab with the following controls:

Enterprise setting What it does
White-label branding Set your own brand name, logo, accent color, and widget title/footer text the "AttentionVerify" name is fully replaced.
API-based reward webhook Instead of a WooCommerce coupon, send verified-completion events to your own endpoint to trigger custom rewards.
Custom attention threshold Same as Pro, but configurable per-site across an unlimited number of installs.
Priority Video Loading Speeds up video load time on high-traffic stores, so the verification video starts faster and fewer shoppers drop off before verification even begins.

Adding Videos to Products

Videos are assigned per-product, not site-wide each product can show a different ad.

Assigning a video to a single product

  1. Open the product in Products → Edit.
  2. Scroll to the AttentionVerify panel below the product description.
  3. Paste a video URL (YouTube, Vimeo, or self-hosted) or select one from the Media Library.
  4. Click Update to publish the product with the video attached.

Assigning videos across many products

You are not limited to one video per store multiple different videos can be assigned to multiple different products, one video per product, repeatable across your entire catalog. This is managed in bulk from AttentionVerify → Settings → Per-Product Video Management, where every product is listed alongside its currently assigned video for quick editing without opening each product individually.

Products without a specific video assigned automatically fall back to the Default video set in Free Plan Settings.

Using the Shortcode

Most stores never need the shortcode AttentionVerify automatically injects the widget on product pages. Use it manually when you want the widget somewhere the automatic injection doesn't reach: a custom page template, a landing page, or inside a widget area.

[attentionverify product_id="128" video_url="https://youtu.be/example" duration="30"]
Parameter Required Description
product_id Yes The WooCommerce product ID the verified coupon should apply to see finding a Product ID above for how to look this up.
video_url No Overrides the product's assigned video for this specific placement.
duration No Seconds of verified attention required before the reward unlocks. Defaults to the site-wide attention threshold if omitted.
When to reach for the shortcode: embedding on a non-product page (like a landing page), or showing a second, different video for the same product elsewhere on the site.

Analytics Dashboard Guide

Found under AttentionVerify → Analytics, the dashboard summarizes every verification session logged to your Firebase project.

Metric What it means
Verified sessions Total sessions that reached the attention threshold and received a reward.
Completion rate Verified sessions divided by total sessions started, as a percentage.
Average attention duration Mean verified watch time across all sessions, in seconds.
Drop-off point The moment in the video where most customers lose attention or cancel (Pro+).

Exporting data (Pro and above)

Click Export CSV in the top-right of the dashboard to download raw session-level data for the selected date range useful for feeding into your own BI tools or ad-spend reporting.

Troubleshooting

Camera not activating

  • Confirm your store runs on HTTPS browsers block camera access on non-secure origins.
  • Check that the customer didn't previously deny camera permission for your domain (they'll need to reset it in browser site settings).
  • Test in an incognito/private window to rule out a conflicting browser extension.

Coupon not generating

  • Verify your WooCommerce API credentials in Settings → WooCommerce API are still valid and haven't been revoked.
  • Confirm the attention threshold was actually reached check the session in the Analytics dashboard.
  • Make sure coupon generation is enabled in Settings → Coupons.

Video not loading

  • Re-check the video URL for typos, or that the source video hasn't been deleted or set to private.
  • If self-hosted, confirm the file format is browser-compatible (MP4/H.264 is safest).
  • Check the browser console for a mixed-content or CORS error if the video is hosted on a different domain.

"Monthly limit reached. Please upgrade your plan."

This message replaces the verification widget once a Free-plan site has used all 100 verified sessions included for the current month.

  • Why it happens: the Free plan caps verified attention sessions at 100 per calendar month. Once the 100th session completes, the widget stops accepting new sessions until the count resets.
  • Wait for the reset: the limit automatically clears at the start of the next month no action needed if 100 sessions/month is enough for your store.
  • Upgrade for unlimited sessions: Pro and Enterprise have no session cap. Upgrading immediately removes the limit see Upgrading to Pro.
Still stuck? Email support@attentionverify.com with your site URL and a description of the issue.

FAQ

Does AttentionVerify store any camera footage or images?

No. Face detection runs entirely in the browser via MediaPipe. Only session metrics attention duration, completion status are saved to your own Firebase Firestore. No biometric data is ever collected or stored.

What happens if the customer looks away briefly?

A 1–1.5 second grace buffer absorbs natural blinks and minor head movements. The timer only pauses on a clear loss of attention: face leaves frame, head turns significantly, or the tab is switched.

Can I use AttentionVerify on a staging site?

Yes, but remember the Free and Pro plans are licensed to one site. Activating on staging will deactivate your production license until you switch it back.

What happens if my Firebase credentials are entered incorrectly?

The widget will still display and track locally, but sessions won't be logged, so the Analytics dashboard and coupon generation (which reads verified status from Firestore) won't work. Use Save & Test Connection in Firebase Setup to catch this immediately.

Which browsers are supported?

Chrome, Firefox, and Safari on both desktop and mobile. Camera access requires HTTPS, which your store should already have for WooCommerce payments.