Paid media · 8 min read ·
Bot clicks on ChatGPT ads: 6 lessons for protecting your spend on a new ad platform
By Precious Chindongo, Co-Founder & Managing Director, Prebo Digital
In October, an advertiser put about $900 into ChatGPT ads to see how much of the traffic was real. Over 48 hours, OpenAI billed 923 clicks. His server logged 1,356 visits carrying OpenAI’s click parameters. His detection flagged 788 of them as bots, and 665 came from Microsoft Azure cloud servers. Most of the flagged visits left in under a second and a half.
I shared those numbers on LinkedIn and the post took off. The reaction told me something. Many advertisers are testing ChatGPT ads right now, other advertisers reported similar patterns in their own accounts, and very few have a way to check what they are actually paying for.
So I want to treat this test as what it is: an early warning. You don’t need to wait for an industry benchmark to act on it. Here is what I take from it as someone who builds growth systems for a living, and the audit my team would run before trusting a new channel with real budget.
Why new ad platforms attract invalid traffic
Every new ad platform goes through the same phase. The buying tools ship first. The filtering, reporting and refund processes catch up later.
Google and Meta have spent many years building invalid-click detection, and they still miss plenty. A platform that opened to advertisers this year can’t have that history. Its filters haven’t seen every bot pattern yet, and its reporting gives advertisers less detail. At the same time, people who run click fraud follow the money. A new auction with fresh budgets and weak defences is exactly where they go first.
TrafficGuard’s data points the same way. Across 40,021 ChatGPT ad clicks from 47 advertisers, it found invalid rates ranging from almost none to 34% depending on the account. It also found ChatGPT clicks coming from hosting and proxy networks at 3.6 times the rate of the same advertisers’ Google Ads traffic.
Two things follow from that. A channel average tells you very little about your own account. And on a new platform, checking invalid traffic is your job, not the platform’s.
What the patterns tell you
The value of the $900 test isn’t the headline percentage. It’s the fingerprints the bad traffic left behind. Each one is something you can look for in your own data.
Cloud IP addresses. Real people browse from home broadband and mobile networks. They don’t browse from Azure, AWS or Google Cloud data centres. When a large share of paid visits comes from cloud networks, those visits are almost certainly automated. For most businesses, a paid click from a data centre is waste.
Visits under two seconds. A person who clicks an ad waits for the page, looks at it and usually scrolls. A script loads the page and leaves. A cluster of visits under two seconds, with no scrolling, is one of the clearest signals you can get from ordinary logs.
Desktop-only traffic. ChatGPT is used heavily on phones. If your ad traffic is overwhelmingly desktop, especially for a consumer offer, that skew needs explaining. Bots tend to run as desktop browsers on servers, so device mix is a fast first screen before you look at anything technical.
Shared fingerprints across many IPs. Bots rotate IP addresses to look like many different visitors. They are much worse at changing the browser underneath. When hundreds of visits from different IPs share the same browser or TLS fingerprint, you are looking at one operator wearing many masks.
A mismatch between billed clicks and site visits. This is the one I’d watch most closely. In this test, the server saw more ad-tagged visits than the platform billed. A gap in either direction means something:
- More visits than billed clicks means something other than people clicking ads is hitting your landing page through the ad link. That might be automated systems previewing or checking the page. It might be scrapers that picked up your tracked URL.
- Fewer visits than billed clicks means you may be paying for clicks that never load your page, or your tracking is losing data.
Either way, you can’t judge the channel until you know which one it is.
Six lessons for protecting your spend
1. Reconcile billed clicks against server visits every day
Your platform dashboard tells you what you paid for. Your server tells you what arrived. Put both numbers side by side every day of a test.
Use server or CDN logs, not just your analytics tag. Bots that leave within a second often never fire JavaScript, so analytics tools can hide the very traffic you need to see. Match visits to clicks using the platform’s click ID, and check that spend equals clicks multiplied by your average cost per click.
Set a tolerance before you start. If daily visits and billed clicks are more than about 10% apart in either direction, stop scaling until you understand why.
2. Check your mobile and desktop mix
Before you look at IP addresses or fingerprints, look at device share. It takes two minutes. Compare your ChatGPT ads traffic with your organic traffic and your other paid channels. If ChatGPT ads are far more desktop-heavy than everything else, segment the desktop visits and inspect them first. That’s usually where the bad traffic is.
3. Separate AI platform fetchers from real users
AI platforms fetch web pages all the time, to answer questions, build previews and check links. Not every automated visit is fraud. Some of it is the platform’s own machinery. You still need to separate it from real people, because a fetch is not a customer, and you should know whether you’re being charged for it.
OpenAI publishes the IP ranges for its crawlers and user-triggered fetchers. Load those lists into your log analysis and tag matching visits separately. Then put the remaining cloud traffic, from Azure, AWS, Google Cloud and hosting providers, into its own bucket. What’s left is your best estimate of human traffic. Judge the channel on that number.
4. Add bot friction to your landing pages
Detection tells you what happened. Friction changes what happens next. Practical options include:
- Block or challenge known data-centre networks at your CDN or firewall for paid landing pages.
- Use a bot-management or challenge tool that tests suspicious visitors without bothering real ones.
- Add a honeypot field to forms so automated submissions identify themselves.
- Keep fake leads out of your CRM and your ad platform’s conversion data.
That last step matters more than most people think. If bots trigger conversion events, the bidding system learns to find more bots. Protecting your conversion signal protects every rand you spend after it.
5. Test small, with a fixed window
Treat the first two weeks on any new ad platform as a measurement exercise, not a growth campaign. Set a daily cap you’re comfortable losing. Use one landing page you control end to end. Give the channel its own UTM source and campaign names so it never mixes with organic AI referrals, which can be valuable in their own right.
Decide your success criteria before you start: an acceptable invalid-traffic share, the maximum gap between clicks and visits, and a cost per qualified visit. Only scale once the numbers hold for a full week.
6. Document everything, and request credits
If you find invalid traffic, you need evidence the platform can act on. Keep raw logs, not dashboard screenshots. For each suspicious visit, record the timestamp, IP, network (ASN), user agent, click ID, session length and device. Write down your detection rules before you apply them, so your method is consistent.
When you contact support, include:
- Your account ID and the exact date range
- Billed clicks and spend against logged visits, day by day
- The flagged click IDs and the reason each was flagged
- The cloud network breakdown, with platform fetchers shown separately
- A clear request for a click-level log from their side and a credit for invalid clicks
Credits on new platforms can take weeks. Keep the campaign capped while you wait.
The audit playbook
This is the sequence I’d run in week one of any ChatGPT ads test.
Day 0: set up. Confirm your server or CDN logs capture the full query string, IP, user agent and timestamp. Create dedicated UTMs. Load OpenAI’s published fetcher IP ranges and a cloud ASN list into your analysis sheet or script. Set a daily budget cap and a written success threshold.
Days 1 to 3: watch closely. Each morning, export billed clicks and spend, and count ad-tagged visits from your logs. Calculate the gap. Split traffic into four buckets: platform fetchers, other cloud traffic, suspicious behaviour (under two seconds, no scroll, shared fingerprint) and likely human.
Days 4 to 7: decide. Compare your likely-human share and cost per human visit with your other paid channels. Check device mix against your organic baseline. If invalid traffic sits above your threshold, add friction, file a documented credit request and hold spend. If the numbers are clean, raise budget in steps of no more than 20 to 30% and keep the daily reconciliation running.
Ongoing: keep the system running. Bot patterns change. Keep the daily reconciliation as a standing report, not a one-off audit.
Checklist
- Server or CDN logs capture IP, user agent, timestamp and full URL
- Dedicated UTMs for ChatGPT ads, with click IDs preserved
- Daily sheet of billed clicks, spend and logged visits
- Gap tolerance set (for example, 10% either way)
- Mobile and desktop mix compared with organic traffic
- OpenAI fetcher IPs tagged separately from other visits
- Azure, AWS, Google Cloud and hosting networks flagged
- Sub-two-second, zero-scroll visits flagged
- Bot friction live on paid landing pages and forms
- Fake conversions kept out of ad platform signals
- Small daily cap and written success criteria
- Raw evidence saved and credit request ready
ChatGPT ads may become a strong channel. The audience is huge and the intent behind a conversation can be high. But early platforms reward advertisers who measure properly and punish those who trust the dashboard. Build the checks first, and you’ll know whether you’re buying customers or bots.
Sources
- The $900 test (923 billed clicks, 1,356 logged visits, 788 flagged as bots, 665 from Azure) was shared by the founder of BotRefund in r/adops, with more detail on the BotRefund blog.
- TrafficGuard, “Invalid traffic in ChatGPT ads: what 47 advertisers show”: 40,021 clicks across 47 advertisers, invalid rates from 0.1% to 34% by advertiser. Coverage by PPC Land.
- OpenAI’s published fetcher IP ranges: ChatGPT-User, OAI-SearchBot, GPTBot.
- My original LinkedIn post and the discussion under it.