# How do I track ChatGPT and AI agent orders in WooCommerce?

Read the order request, not the traffic report. Agent Stamp writes the buyer on each order when it is placed: Human, a named agent such as ChatGPT or Claude, Unattended, API, or Unknown. The Buyer column shows it, and one page totals the orders that were not a person in the last 30 days. A table breaks that down by buyer.

## Visit, order, payment, totals, funnel

These are five different questions:

| Question | Where it is recorded | What it means |
| --- | --- | --- |
| **Visit** | WooCommerce → Agent Stamp → Agents | A declared or signed agent opened a product, cart, or checkout page. Crawlers are skipped. A ChatGPT-User visit is a user-triggered page fetch, not purchase evidence. |
| **Order stamp** | Buyer column on the order | Initial stamp when WooCommerce places the order. Strong gateway signals can update it unless already signed. Declared is self-reported. Signed authenticates the request operator, not buyer intent. |
| **Payment attribution** | Order box, after checkout | When the order moves to processing, completed, or on-hold, the plugin reads gateway meta. Payment confidence is gateway attribution, not proof of settlement. Strong signals from Stripe agentic checkout, PayPal agentic checkout, or Stripe agent_details can restamp the order unless it was already signed. Stripe Link alone is weak evidence and never changes the stamp. |
| **Order totals** | WooCommerce → Agent Stamp → Orders | Counts stamped orders in the period that were not Human. Includes processing, pending, on-hold, completed, and refunded orders. Excludes failed, cancelled, and checkout-draft only. Sums each order's total. Not paid-only: unpaid and refunded orders can be included. |
| **Paid funnel** | Agents tab, Paid and Revenue columns | Paid counts agent sessions marked ordered in the visit funnel: a thank-you page view or a paid-order event. It is a session count, not paid evidence alone; reaching the thank-you page does not prove payment. Revenue beside it sums stage=ordered events only, written when status moves to processing, completed, or on-hold with payment recorded. On-hold waiting for bank transfer does not get an ordered event until WooCommerce records payment. Separate from Orders tab totals. |

## Why analytics miss them

Traffic reports sort visits by referrer and by tags in the link. A chat app often sends no referrer. An agent that checks out may never run the theme’s analytics script. The order still arrives, and the report files it as Direct. [That is why AI orders look like Direct.](https://getagentstamp.com/blog/direct-traffic)

## How the stamp is written

1. **Classifier** reads the user-agent and checks any Web Bot Auth signature. Signed names the operator from the key host. Declared names a published token such as ChatGPT-User. Crawlers such as GPTBot become Unknown.
2. **Witness** merges checkout presence and browser signals. No person at Place order becomes Unattended. Two automation signals on a trusted click become Likely agent.
3. **Payment** runs when the order moves to processing, completed, or on-hold, before bank settlement is proven. Strong gateway signals can update the stamp to payment confidence. A signed stamp is kept. Link wallet payments are recorded as weak evidence only.
4. **Orders tab totals** sum stamped order totals for the period. They are not paid-only.
5. **Agents tab Paid** counts sessions the funnel marks ordered (thank-you page or paid-order event). **Revenue** beside it sums stage=ordered events only; a thank-you visit alone adds no revenue.

## What gets written on the order

- **Human**: an ordinary browser, a person at the place-order control, and no agent signature.
- **ChatGPT (declared)**: the user-agent was ChatGPT-User and nothing was signed. Self-reported, not purchase evidence by itself. Claude-User, Perplexity-User, Google-Agent, and GrokAgent work the same way.
- **Claude (signed)**: the Web Bot Auth signature matched the key its operator published. Authenticates the operator, not buyer intent or payment.
- **Likely agent**: a trusted click placed the order, but the page saw at least two signs that a program drove the browser. Not proof, and no name.
- **Unattended**: the checkout page saw no person, or the browser reported itself as automated.
- **API (python-requests)**: the order came through the REST API or a commerce protocol channel such as UCP, ACP, or MCP, not the checkout page.
- **Unknown**: anything else, such as a signature that failed, or a crawler such as GPTBot claiming to check out.

The user-agent is kept on the order next to the stamp, so the line can be checked later. [The published tokens are a fixed list.](https://getagentstamp.com/blog/which-agents)

## Seeing the total

Open WooCommerce, then Agent Stamp, then Orders. It says how many stamped orders in the last 30 days were not a person, and the sum of their order totals. That total is not paid-only. A table lists them by buyer, with orders, revenue and share. [How much did AI agents buy?](https://getagentstamp.com/blog/ai-revenue) Pro adds a Buyer filter to the orders list, and Not a person shows every order that was not stamped Human. Once a week, if any order was not a person, the store admin gets one email that counts those orders by kind and lists each one with its total. The email leads with the revenue from them.

## What it does not count

Visits that did not buy are not orders, so they get no stamp. A crawler such as GPTBot reads pages and does not check out. [GPTBot is not an order.](https://getagentstamp.com/blog/gptbot-is-not-an-order) Orders placed before Agent Stamp was active were never stamped, and failed or cancelled orders are left out of the totals.

Canonical page: https://getagentstamp.com/blog/track-ai-orders
