We noticed the traffic before we noticed the deal. A burst of requests hit our pricing page in a tight three minute window: every plan loaded, no scroll, no mouse movement, no time spent reading. No human buyer does that. When we pulled the user agent strings, we found GPTBot and a handful of unlabeled crawlers pulling our pricing, docs, and security pages back to back, then disappearing. Two weeks later, a lead got on a call already knowing our per seat price, our annual discount, and the line where we mention SOC 2. He had never talked to a salesperson. He had talked to an AI agent that ran the first pass evaluation for him. Here is what we found in the logs, why it is happening now, and what we changed on the page because of it.
The traffic that did not look human
AI agent traffic on a pricing page shows up as a dense burst of requests with zero scroll depth, zero mouse movement, and no referrer, the opposite pattern of a person actually shopping for a vendor.
Google Analytics never flagged it, because GA4 only counts a visit once a browser fires a JavaScript event, and most of these requests were not coming from a browser at all. We only found the pattern by pulling raw CDN logs and filtering on user agent string. GPTBot, ClaudeBot, and PerplexityBot showed up repeatedly, alongside a handful of agents with no identifying string at all. Each one hit /pricing, /docs, and /security in sequence, inside a two to four minute window, then never came back. A human evaluating a vendor spreads that same research across several sessions over days. A bot does it once, fast, and leaves with everything it needs in one pass.
Why this matters for founders now, not later
That is not a future problem. It is already showing up in the logs of a small B2B SaaS company that has never bought an ad. Procurement research is quietly splitting into two audiences: the person who eventually signs, and the agent that does the first pass reading for them and hands back a summary. We've written before about why AI agents are increasingly the first reader of a SaaS pricing page, and this is the log data behind that shift. If your pricing page only makes sense to a human scrolling through it, you are invisible to the layer that increasingly decides who makes the shortlist before a human ever looks.
What was actually wrong with our page for a bot
We found four specific problems once we looked at the page the way an agent would read it, not the way a person would look at it.
- Enterprise pricing was gated behind a book a demo form, so nothing about that tier existed as extractable text for an agent to parse.
- There was no Schema.org Product or Offer markup, so the price that did exist was just styled text inside a div, easy for a human eye to read and easy for a parser to misread or skip.
- The plan comparison table was a screenshot, not real HTML, which meant it was invisible to anything that was not looking at pixels.
- Our SOC 2 report and DPA lived behind a gated PDF download, so any agent trying to answer is this vendor compliant came back with nothing.
None of these were human usability problems. A person could get through all four workarounds without noticing. An agent parsing the page in one pass simply skipped them.
What we changed
We fixed all four in an afternoon, and none of it required a redesign.
- Put an actual number on every tier, including enterprise, with a footnote for custom volume pricing instead of a form gate.
- Added JSON-LD Product and Offer schema with price, currency, and billing period next to the existing display copy.
- Rebuilt the comparison table as a real HTML table instead of an image.
- Moved our SOC 2 summary and DPA onto text-readable pages instead of gated PDFs.
We wrote up the exact JSON-LD block we used, along with the three mistakes that get schema ignored, since that part took the most trial and error.
What happened after
It is early, and we are not going to pretend three weeks of data proves a trend. But the shape of inbound changed. Leads now show up already citing a specific number from the pricing page instead of asking us what it costs, and two separate calls opened with a prospect referencing our SOC 2 status without us mentioning it first. That is consistent with what an agent-readable page should produce: less time spent explaining basics, more time spent on the actual objection. We are still watching the raw log traffic to see whether the agent visits themselves increase now that there is more for them to read.
Frequently asked questions
How do I know if AI agents are visiting my pricing page?
Check raw server or CDN logs for user agent strings like GPTBot, ClaudeBot, and PerplexityBot. Google Analytics will not show this traffic because most of it never fires a JavaScript event.
Do I need to redesign my pricing page for AI agents?
No. Add machine-readable pricing text and Schema.org Offer markup, replace image-based tables with real HTML, and un-gate anything you want summarized. All of it fits inside an existing design.
Does this replace the sales conversation?
No. Buyers still want a human to validate what an AI agent told them before they commit. The agent just decides who gets that conversation in the first place.
Is this only relevant for enterprise SaaS?
No. The same pattern shows up on self-serve and mid-market pricing pages, anywhere a buyer would normally research before reaching out.
What is the single fastest fix?
Un-gating the number. If a price only exists behind a form, an agent parsing your site in one pass has nothing to extract.
We spent years optimizing this page for the person reading it and never noticed a growing share of the first read was not a person at all. The fix is not complicated. It is just easy to miss until you go looking at your own logs the way we did.