Before you start
Create an ingest key in your project under Agent analytics → Integration. It’s shown only once, so copy it straight away. Only organization admins can create keys. Use a separate key for each site.The request
Crawler visits: events
One entry per request your site served. You can send all your traffic: anything that isn’t a recognised AI crawler is dropped on arrival and never stored.
integer
required
The HTTP status code your site returned, 100–599. This is what shows a crawler being blocked (403) or sent to a missing page (404).
string
required
The request’s user agent. It’s how the crawler is recognised. Up to 512 characters are kept.
string
The address the request came from. Needed to verify the crawler is genuine — without it, a visit can’t be verified and isn’t counted. Deleted after 30 days.
string
The path requested, e.g.
/pricing. The query string is removed before storing. Defaults to /.string
When the request happened, in ISO 8601. Defaults to the time of your request.
Your total traffic: totals
One entry per day with the total number of requests your site served — people and bots together. It’s what lets the Overview show AI crawlers as a share of all your traffic. Nothing else about those requests is sent.
string
required
The UTC day, as
YYYY-MM-DD.integer
required
Requests served that day. Re-sending a day keeps the higher figure, so you can send a running total.
People arriving from an assistant: referrals
One entry per visit from someone who clicked a link in an AI assistant’s answer. Only these three fields are sent — nothing about the visitor.
string
required
Which assistant sent them. Use one of the identifiers below so it’s labelled correctly.
string
The page they landed on. The query string is removed.
string
When they arrived, in ISO 8601. Defaults to now.
utm_source parameter too (ChatGPT adds utm_source=chatgpt.com to its links):
Limits
Visits outside the time window are skipped rather than rejected.
The response
A successful request returns200 with what was done with the batch:
integer
Crawler visits stored.
object
How the stored visits fared in verification.
verified came from the crawler’s published addresses. pending is waiting on a DNS check, which runs after the request. spoofed used a crawler’s name from an address that isn’t its own. unverifiable is a crawler whose operator publishes nothing to check against. unchecked means no usable IP was sent — a private address, or none. Only verified visits are counted in the app.integer
Arrivals from assistants stored.
integer
Ordinary page views, sent only when the WordPress plugin is set to report every request.
0 otherwise.integer
Events that weren’t from a recognised AI crawler — usually people. Not stored.
integer
Events dropped for a bad timestamp, a time outside the window, or an invalid status code.
Errors
On a
402, drop the batch rather than queueing it — it won’t be accepted until the plan or month changes.