Commerce Protocols · Emerging · Low impact
Agent traffic measurement
If agent traffic is not measured separately, the channel's return is invisible and never funded.
- Emerging
- Low impact
- Draft standard
| Property | Value |
|---|---|
| Check id | agent-analytics |
| Dimension | Commerce Protocols (15%) |
| Tier | Emerging — pool 5 pts |
| Weight inside tier | 1 |
| Impact | Low |
| Maturity | Draft — A published specification that is not yet ratified. |
| Conditional | Yes — scored only on commercial sites |
| Publishing skill | agent-analytics |
| Standards | — |
What is measured
Conditional: reported n/a unless the scanner has already detected a commercial signal (Product/Offer JSON-LD, add-to-cart or buy-now copy, a cart/checkout link). It reads the homepage document as lowercase text and looks for an analytics platform signature (segment, plausible, posthog, matomo, amplitude, mixpanel, googletagmanager or yandex.metrika) together with a marker that agents are segmented separately, such as an agent_category custom dimension or an explicit agent event - a vendor signature plus that agent marker passes, a vendor with no agent segmentation is a partial (0.8), and no vendor signature at all is a partial (0.5) because nothing about the channel can be attributed.
Reproduce it yourself
You do not have to take our word for any of this. Run the same measurement against your own domain:
DOMAIN=shop.example.com
curl -sL "https://$DOMAIN/" | grep -Eoi 'segment|plausible|posthog|matomo|amplitude|mixpanel|googletagmanager|yandex\.metrika|agent_category' | sort -u
The fix
This is the artifact to ship. It is the complete change, not a description of one.
// Agent traffic as its own analytics segment. Verified agents arrive with a signed request and
// unknown crawlers are matched on user-agent; both are tagged, humans are tagged too.
const AGENT_UA = /GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|PerplexityBot|Google-Extended|Applebot-Extended/i;
const ua = navigator.userAgent;
const match = ua.match(AGENT_UA);
const agent_category = match ? 'agent' : 'human';
// Plausible here; swap for your own vendor (gtag, segment.track, posthog.capture).
window.plausible = window.plausible || function () { (window.plausible.q = window.plausible.q || []).push(arguments); };
plausible('pageview', { props: {
agent_category: agent_category,
agent_vendor: match ? match[0] : 'none'
} });
// Register agent_category as an event-scoped custom dimension, then report weekly on agent
// sessions, agent-assisted orders and revenue per agent vendor.
Related checks
| Check | Tier | Impact | Same skill |
|---|---|---|---|
product-schema — Product/catalog schema | Essential | Critical | — |
payment-protocols — Agent payment standard support (AP2/ACP/x402/UCP) | Recommended | High | — |
agent-purchase — Agent purchase policy | Recommended | High | — |
ucp-manifest — UCP manifest (/.well-known/ucp) | Emerging | Medium | — |
returns — Return and shipping terms machine-readable | Recommended | Medium | — |
inventory-freshness — Inventory and price freshness | Recommended | High | — |
seller-identity — Seller identity declared | Recommended | Medium | — |
shipping-costs — Shipping cost and delivery declared | Recommended | High | — |