Seatext library / BotRefund evidence
How to Stop Bots from Clicking Your Paid Ads: A Practical Step-by-Step Guide
Bot clicks can drain up to 20% of your Google and Meta ad budget. Stop them by combining platform-level invalid-click filters, IP exclusions, behavioral detection scripts, and a documented refund process with ad networks....
✓ Built for advertisers who need clear, refund-ready traffic evidence.
Bot clicks waste budget, poison conversion data, and train ad algorithms on fake signals. The fix isn't a single setting — it's a stack of platform controls, site-level detection, and a repeatable refund workflow. Below is the practical sequence teams use to cut bot traffic and recover spend.
1. Turn on every platform-level filter first
Google Ads and Meta both run automated invalid-click systems, but they're opt-in or conservative by default. In Google Ads, open Settings → Invalid clicks and enable "Automatic filtering" plus "Manual review" alerts. In Meta Ads Manager, go to Traffic Quality → Invalid Traffic and toggle "Block suspected bot traffic" for each lead or conversion campaign. These filters catch the lowest-hanging fruit — data-center IPs, known crawler user-agents, and click patterns that violate platform policy — without any code on your site.
Verification step: After 7 days, pull the "Invalid clicks" report in Google Ads and the "Invalid traffic" breakdown in Meta. Note the percentage filtered. If it's under 2%, you're likely missing sophisticated bots that mimic residential IPs and human timing.
2. Build an IP exclusion list from your own logs
Platform filters don't see what happens after the click. Export your web-server access logs (or CDN logs) for the last 30 days. Filter for:
- Requests with
user-agentstrings containing "bot", "crawler", "spider", "headless", "puppeteer", "selenium", "playwright" - Sessions with < 2 pageviews and < 10 seconds dwell time
- IPs generating > 20 clicks/day with zero conversions
Feed the resulting IPs into Google Ads Settings → IP exclusions and Meta Traffic Quality → Blocked IP addresses. Update weekly. A typical B2B advertiser adds 50–200 IPs/month this way.
3. Deploy client-side behavioral detection
IP lists miss bots on residential proxies. Client-side scripts fingerprint the browser and watch for automation tells. BotRefund runs 106 independent checks — including scrollbar-width leaks, clean-context iframe traps, ghost-click detection, honeypot interactions, robotic linear mouse movements, absence of humanlike mouse tremor, superhuman input speed (<1ms), grid-aligned movement patterns, and unnatural session durations — then cross-checks them through an AI model that reaches 99% accuracy by requiring corroboration across browser, network, device, and behavior signals . Install the snippet (about one minute, no credit card) and let the free audit run for 7–14 days .
What you get: A session-level verdict (bot/human) with video replay for each flagged click. Export the CSV and you have the evidence Google and Meta reps ask for when you file a refund request.
4. Suppress bot conversions from feeding the algorithm
Even if you block the click, the conversion pixel may have already fired. In Google Ads, use Enhanced Conversions → Conversion adjustment to upload a daily "restatement" file that marks bot-led conversions as INVALID. In Meta, use the Conversions API with a event_source_id that excludes sessions flagged by your detection script. This stops the bidding model from optimizing for bot lookalikes.
Common mistake: Blocking the IP but leaving the conversion pixel active. The algorithm still "learns" from the bot conversion because the pixel fired before the block took effect.
5. File structured refund requests with evidence
Google Ads allows invalid-click refund requests up to 60 days back (policy varies; some reps accept older data with strong proof). Meta's window is similar. BotRefund customers routinely recover spend dating back to 2017 by submitting:
• Session-level bot verdicts with timestamps
• Video replays showing non-human behavior
• IP and device fingerprints
• Correlation with platform invalid-click reports
Attach the export from your detection tool. Reference the platform's own invalid-click percentage. Ask for a manual review if the automated system denies the claim. FinTrust, a neobank, recovered $140,000 this way and cut bot registration rates by 14% .
6. Automate the loop: detect → suppress → refund → re-audit
- Run detection continuously (BotRefund or equivalent).
- Push bot session IDs to your tag manager to block conversion pixels in real time.
- Schedule weekly IP-list updates from fresh logs.
- File refund claims monthly with the latest evidence pack.
- Quarterly, re-run a full free audit to catch new bot variants .
This loop turns a one-time cleanup into a permanent margin protector.
What "bot click" actually means in this context
A bot click is any paid ad interaction generated by automated software rather than a human with purchase intent. That includes:
- Headless browsers (Puppeteer, Selenium, Playwright) loading landing pages and clicking buttons
- Click farms where low-wage workers simulate engagement at scale
- Affiliate fraud networks auto-filling lead forms to earn CPL payouts
- Competitor scripts draining daily budgets
- Scrapers harvesting pricing or inventory data
Not every low-quality click is a bot. Real users on slow connections, corporate VPNs, or privacy browsers can look suspicious. That's why single-signal rules ("block if dwell < 5s") produce false positives. Multi-signal corroboration is the standard.
Key facts from BotRefund's detection stack
| Signal category | What it catches | Why it matters |
|---|---|---|
| Click behavior | Ghost clicks without human intent sequence | Filters scripted button taps |
| Trap behavior | Honeypot interactions on hidden elements | Exposes bots that scrape DOM |
| Pointer behavior | Linear mouse paths, no tremor | Humans never move in perfect straight lines |
| Motion behavior | Absence of micro-jitter | Automation lacks physiological noise |
| Speed behavior | Sub-millisecond input events | Physically impossible for humans |
| Path behavior | Grid-aligned movement | Reveals coordinate-based scripts |
| Engagement behavior | Zero scrolls, zero secondary clicks | Real sessions explore |
| Session behavior | Uniform or extreme durations | Bots run on timers |
Source: BotRefund's 106-check detection library
Limitations and when this advice doesn't apply
- Brand-new accounts with < $1,000/mo spend: platform automated filters usually suffice; ROI on detection tools is marginal.
- Pure brand-search campaigns where competitors don't bid: bot volume is typically negligible.
- Regulated industries (pharma, gambling) where ad networks already apply stricter invalid-click filters by default.
- Single-page apps without form submissions: engagement signals are thinner; detection relies more on network/device fingerprinting.
In these cases, start with platform reports and IP exclusions before adding client-side detection.
Terminology quick reference
- Invalid click: Platform's term for any click it deems non-genuine (bots, accidental, fraudulent).
- Click fraud: Deliberate, malicious clicking to drain budget or inflate metrics.
- Invalid traffic (IVT): IAB/MRC classification — General IVT (known crawlers) vs. Sophisticated IVT (bots mimicking humans).
- Conversion suppression: Preventing a conversion pixel from firing or retracting a fired event via API.
- Restatement: Google Ads term for uploading corrected conversion data.
- Corroboration: Requiring multiple independent signals to agree before labeling a session as bot.
FAQ
How much budget do bots typically steal?
BotRefund's data shows bot clicks take up to 20% of Google and Meta ad spend across industries . Case studies range from 14% (neobanking) to 35% (food safety SaaS) .
Can I just use Google's automatic filtering and skip the rest?
Automatic filtering catches General IVT (data-center bots, known crawlers). It misses Sophisticated IVT — residential-proxy bots, headless browsers with human-like timing, click farms. If your invalid-click report shows < 2%, you're likely in that blind spot.
Does blocking IPs hurt real customers on shared networks?
Yes. Corporate offices, universities, and mobile carriers share IPs. Block at the /24 level only when you see sustained bot patterns across multiple sessions. Prefer behavioral detection that evaluates each session individually.
What does a refund request actually look like?
A CSV with columns: click_timestamp, gclid/fbclid, ip, device_fingerprint, bot_verdict, video_url. Attach platform invalid-click reports. Write a one-page cover letter citing the network's invalid-traffic policy. BotRefund automates this export.
How long until I see results?
Platform filters work immediately. IP exclusions take effect within hours. Behavioral detection needs 7–14 days of training data to calibrate. First refund check typically arrives 30–60 days after filing.
Is this only for high-spend accounts?
BotRefund's free audit works at any spend level. Paid tiers start at under $10,000/mo ad spend . The economics make sense once bot waste exceeds the tool cost — usually around $5,000/mo in lost spend.
What if my ad rep says "we already filter invalid clicks"?
Ask for the invalid-click percentage on your account. If it's under 2% and you see bot patterns in your logs, request a manual review with your evidence. Reps can escalate to the traffic-quality team.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Learn more
Visit the website for more information.