Description
AI assistants are shopping WooCommerce stores. Some send crawlers that never run JavaScript, some drive a browser that behaves like a person, and some send people who then buy. Standard analytics sees little of it: Google Analytics excludes known bots, and you can’t turn that off (Google Analytics Help); crawlers never fire an analytics tag; and an agent browser is counted as a person.
This plugin connects your store to Tactical, a third-party service at https://tactical-app.work, which shows you the rest. The plugin installs the storefront script, adds server-side crawler detection and registers the WooCommerce webhooks; the dashboard lives in your Tactical account.
What you get:
- AI crawlers, server-side — when a known AI crawler requests a page, the plugin records it, no JavaScript needed. A hit is marked verified only when its IP matches the operator’s published range. Nothing is sent for human visitors.
- Agent browsers, by behaviour — sessions driven by an agent, including ones that never name themselves, are scored on how the session behaves. A score is a probability, not a verdict.
- AI-referred buyers — people who arrive from ChatGPT, Perplexity, Gemini, Copilot and other assistants.
- Agent revenue — every order is labelled: Agent order, Agent order (session match) or AI-referred order, each saying how sure it is, and the two kinds are never added together. Agent orders include ones placed in an agent checkout, such as Stripe’s agentic checkout, which no browser pixel sees.
- Evidence for every agent order — a record of the order, how it was attributed, the matched session and any Tactical Gate decisions, downloadable as PDF and JSON for disputes and returns. It holds no buyer name, email, address or IP address.
- Tactical Gate (beta) — rules for AI agents by product, cart and checkout, starting in Observe mode. It is in a private beta; join the list at https://tactical-app.work/waitlist.
Tactical pricing — managed at tactical-app.work:
The plugin works on every plan, including the free one. Agent revenue and evidence are on every plan, with the plan’s history.
- Scout — free — 7-day monitor, top 3 agent types, AI Search report, 100 agent sessions/week. No credit card.
- Radar — $39/mo — 90-day history, all agent types, intent signals, product interest map (top 50), 10,000 agent sessions/mo.
- Command — $129/mo — everything in Radar, plus marketplace-referral and price-check signals, unlimited products, 50,000 agent sessions/mo.
Annual plans save about 25%.
Multi-platform:
This plugin is for WooCommerce. The same Tactical account also works on Shopify (via the Shopify App Store) and on any custom storefront (via a script tag).
External services
This plugin connects to Tactical at https://tactical-app.work — a third-party AI agent analytics service operated by the plugin author. The plugin requires an active Tactical account (free Scout tier is sufficient) to function. Without an API key configured on the settings page, no requests are made.
Endpoints used:
- Snippet ingest —
https://tactical-app.work/api/ingest. The detection script (https://tactical-app.work/snippet.js) loads on every storefront page view and posts an event payload containing: an anonymised session ID, page URL (path + query string only), referrer domain, user-agent string, scroll/mouse/timing heuristics, and your store’s API key. No customer PII (no names, emails, IP addresses, payment data, or form contents) is sent. - Connection verification —
https://tactical-app.work/api/verify-connection. Triggered only when an admin clicks “Verify connection” on the settings page. Sends only your API key (in a request header) so Tactical can confirm the key belongs to this store. No event data. - WooCommerce webhooks —
https://tactical-app.work/api/wc-webhook/<topic>. Once an API key is saved, four webhook subscriptions are registered with WooCommerce (order.created,order.updated,product.created,product.updated). WooCommerce delivers these payloads directly to Tactical with WC’s standard HMAC signature when matching events occur on your store. Payload contents are WooCommerce’s standard webhook bodies (order or product objects).
Conditions: events are only sent after you paste a valid API key on the settings page. Without a key, the snippet does not load, no requests are made, and no webhooks are registered.
Service terms:
- Tactical Privacy Policy: https://tactical-app.work/privacy
- Tactical Terms of Service: https://tactical-app.work/terms
Installation
- Upload the
tactical-agent-detectionfolder to/wp-content/plugins/, or install via the Plugins Add New screen. - Activate the plugin. (WooCommerce must be installed and active first; this plugin declares it as a required dependency.)
- Sign up at https://tactical-app.work and copy your API key from the dashboard.
- Go to Settings Tactical and paste the API key.
- Click “Verify connection” — you should see a green checkmark.
- Open your storefront — Tactical starts classifying agent traffic immediately.
The plugin auto-registers WooCommerce webhooks for order.created, order.updated, product.created, and product.updated so order and catalog activity is correlated with agent sessions.
FAQ
-
Do I need a Tactical account to use this plugin?
-
Yes — sign up free at tactical-app.work. The free Scout tier is 100 agent sessions per week with no credit card.
-
What data does the plugin collect?
-
The storefront script sends anonymised session metadata only: user-agent, page URL, referrer, scroll/mouse heuristics, and product context, with no names, emails, IP addresses or payment data. The order webhooks deliver WooCommerce’s standard order body, which includes the customer’s details; Tactical keeps only the order ID, total, currency, line items and how the order was attributed, uses the buyer’s IP address and user-agent once to match the order to a session, and discards the rest.
-
How is agent traffic detected?
-
Named crawlers and fetchers are matched against Tactical’s registry of AI operators by user agent, and verified against the operator’s published IP ranges where there are any. Browser sessions are scored on behaviour and environment (page-timing regularity, interaction signals, a datacenter network, automation flags); the IP itself is not stored. The dashboard updates in 15-minute batches.
-
What about agents that don’t identify themselves, like Meta’s Muse?
-
A named crawler (GPTBot, PerplexityBot, ClaudeBot) says who it is in its user-agent, so server-side detection catches it outright. An agent browser — Meta’s Muse, OpenAI’s Operator — drives a real browser on a shopper’s behalf, and it visits your store whether or not you’re a commerce partner of theirs. No request-layer fingerprint for Muse has been published by anyone yet, so a user-agent list can’t see it. Tactical’s behavioural layer scores the session itself (page-timing regularity, interaction signals, browser environment). In a September 2026 test, an AI-driven browser scored as an agent and a person in Chrome on the same laptop scored as human; a real Muse session has not yet been confirmed. Tactical’s agent registry tracks Muse as fingerprint research, and a confirmed signature goes live without waiting for a plugin release.
-
Will this slow down my site?
-
The storefront script loads with the
deferattribute (about 8 KB gzipped), and classification happens on Tactical’s servers, not yours. Server-side crawler detection does nothing for human visitors: it sends a small, non-blocking request only when a request’s user agent matches a known AI crawler. -
How do I cancel?
-
Cancel from the Tactical dashboard’s billing page at tactical-app.work. The plugin keeps working on the free Scout tier after cancellation.
-
Where’s my data stored?
-
In Tactical’s Postgres database. Sessions, product views and Gate decisions are deleted after 90 days and AI crawler visits after 180 days; order records and their evidence are kept while your store is connected. Details: https://tactical-app.work/privacy
-
Is this GDPR-compliant?
-
Tactical processes data under the legitimate-interest legal basis. It stores no names or contact details of visitors or buyers, and merchants can request deletion at any time by emailing support@tactical-app.work. A Data Processing Addendum is available on request.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Tactical — AI Agent Analytics for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Tactical — AI Agent Analytics for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.0
- New: Tactical Gate. Enforce the agent policy you set on tactical-app.work in the request path: throttle, require identification, challenge, redirect or block AI agents by identity, category, confidence and scope (paths, products, collections, cart, checkout, schedule). Fetches the compiled policy every five minutes with an ETag, applies it on page requests, add-to-cart and checkout, and reports decisions in batches.
- Every policy starts in Observe mode, where rules only tag. People are never restricted, whatever the policy says, and a search engine only when the policy names it and confirms the SEO impact. No policy, a failed fetch or any error means the request passes untouched.
- New settings toggle “Tactical Gate” (on by default; a no-op until a policy exists) with policy version, mode and last-fetch status.
- The settings page now recreates any missing Tactical webhooks (for example after WooCommerce was activated after this plugin), instead of asking you to reactivate.
1.1.0
- New: server-side AI crawler detection. Detects AI crawlers that don’t run JavaScript (most retrieval crawlers) by matching the request user-agent against a maintained registry of AI operators (OpenAI, Anthropic, Perplexity, Google, Meta, Apple, Amazon, ByteDance, Mistral, DuckDuckGo, and more). Fires only on a matched AI user-agent; human visitors trigger nothing.
- Non-blocking delivery (
wp_remote_postwithblocking => false, 1s timeout) and a 60-second per-(agent, URL) dedup guard against crawler bursts. - New settings toggle “Server-side AI crawler detection” (on by default) with a “last event sent” status line.
- Optional
tactical_trust_proxy_headersfilter to read the crawler’s real IP from CDN/proxy headers when the store is behind Cloudflare or similar.
1.0.2
- Security: removed the
data-keyattribute from the storefront<script>tag. The Tactical API key is a server-side secret used to sign WooCommerce webhook deliveries and authenticate plugin-to-server API calls — it must not appear in browser-rendered HTML. The snippet identifies the tenant bydata-shopplus the request Origin, so no key is required client-side. Recommended upgrade for all installs.
1.0.1
- Compliance: storefront snippet now loads via
wp_enqueue_scriptwith thedeferstrategy, decorated via thescript_loader_tagfilter. No more inline<script>injection. - Compliance: settings-page admin JS extracted to
assets/admin-settings.js, enqueued viawp_enqueue_script+wp_localize_script. No more inline<script>in the admin page. - Compliance: declared
Requires Plugins: woocommerceso WP correctly blocks activation without WooCommerce. - Readme: added the “External services” disclosure, clarified Scout/Tactical naming in the pricing section, updated Contributors.
- Bumped
Requires at leastto WP 6.3 (needed forwp_enqueue_scriptdefer/async strategy).
1.0.0
- Initial release.
- Snippet injection on the storefront when an API key is configured.
- Settings page with API key, store domain, and “Verify connection” button.
- Auto-registration of WooCommerce webhooks for order and product topics.
- Uninstall removes options + Tactical-managed webhooks.
