Skip to main content
Not on WordPress? Anything that can make an HTTPS request can report to Agent Analytics — your web server, a CDN or edge worker, a log shipper, or a scheduled job reading your access logs. You send batches of requests your site served. Growth Mention keeps the ones from recognised AI crawlers, checks them, and discards the rest.

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

All three arrays are optional — send whichever you have.

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.
Send the real client IP, not your load balancer’s or CDN’s. Behind a proxy that’s usually in a header such as X-Forwarded-For or CF-Connecting-IP. With the wrong address, genuine crawlers fail verification and aren’t counted.

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.
To decide whether a visit came from an assistant, check the request’s referrer host and, because many links arrive without one, the 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 returns 200 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.

Verification

Each crawler visit is checked against the addresses its operator publishes. Only verified visits appear in Agent Analytics. Crawlers whose operators publish nothing can’t be verified, so their visits aren’t counted — see Recognised crawlers.