Seatext library / BotRefund evidence
Common Mistakes When Filing Invalid Click Refund Requests (and How to Avoid Them)
Top mistakes include submitting incomplete logs, claiming clicks already auto-credited, using screenshots instead of raw server logs, missing the 60-day window, and not correlating click IDs across Google Ads and analytics. This guide adds...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
Filing an invalid click refund request sounds straightforward, but most claims get rejected due to preventable errors. The most common mistakes are submitting incomplete logs, claiming clicks that Google already auto-credited, using screenshots instead of raw server logs, missing the 60-day filing window, and failing to correlate click IDs across platforms. Here's how to diagnose and fix each one.
Why Your Refund Claim Might Be Rejected
Google and Meta issue credits for invalid clicks, but the process is not automatic. The platforms require concrete evidence that the clicks were not human. Many advertisers submit incomplete or incorrect evidence, leading to automatic denials. Understanding the common pitfalls helps you build a stronger case. Industry data shows that Google's automated filters catch less than 50% of invalid traffic, leaving the rest as sophisticated invalid traffic that requires manual evidence submission (S1). Global ad fraud losses exceeded $100 billion in 2026 (S1, S6). The average invalid click rate across Google Ads campaigns is 11% to 14% (S1). Advertisers who submit proper evidence see an 83% refund success rate (S2).
Mistake 1: Submitting Incomplete Logs
Raw server logs are the gold standard for proof. They must include timestamps, IP addresses, user agents, and click IDs. Many advertisers submit only a summary or a filtered CSV. Google's review team needs the full log to verify patterns. Fix: Export your server logs in their original format, covering the entire disputed period. Include every request header, response code, and byte count. Do not strip fields. A complete log lets reviewers see the full sequence of events, not just the clicks you think are suspicious.
Mistake 2: Claiming Clicks Already Auto-Credited
Google automatically credits some invalid clicks before you file a claim. If you request a refund for those clicks, your claim will be flagged as duplicate. Fix: Check your Google Ads account under "Invalid activity" credits before filing. Only claim clicks that were not automatically refunded. The invalid activity report shows credits issued in the last 60 days. Cross-reference each GCLID you plan to dispute against that report. If a credit already exists, remove that click from your submission.
Mistake 3: Using Screenshots Instead of Raw Server Logs
Screenshots are static and can be edited. Google and Meta require structured data that can be verified programmatically. A screenshot of a dashboard does not count as evidence. Fix: Always provide raw log files (CSV, JSON, or server logs) with timestamped click events. The file must be machine-readable. If you use a CDN or load balancer, include logs from every hop. Screenshots can supplement but never replace raw data.
Mistake 4: Missing the 60-Day Window
Google requires you to file refund requests within 60 days of the click date. After that, the click is considered final. Fix: Set up a monthly audit routine. If you detect suspicious traffic, act immediately — don't wait until the end of the quarter. Calendar a recurring task to review invalid activity reports on the 1st and 15th of each month. That gives you time to gather evidence before the window closes.
Mistake 5: Not Correlating Click IDs Across Platforms
Google uses GCLIDs (Google Click IDs) to track each click. Your server logs must include the GCLID for each disputed click. Without that correlation, Google cannot link the click to your ad. Fix: Ensure your website captures GCLIDs from the URL parameter and stores them in your analytics or server logs. For Meta, capture FBCLIDs. Use a consistent naming convention in your database: gclid, fbclid, msclkid, etc. Join on these IDs when you export evidence.
Mistake 6: Lack of Behavioral Evidence
Raw IP logs are often not enough. Google expects behavioral data — mouse movements, session duration, scroll depth — to prove the visitor was not human. Fix: Use client-side tracking that records mouse behavior, click patterns, and session length. This data makes your case much stronger. BotRefund's detection looks for absence of humanlike mouse tremor, superhuman input speed under 1ms, grid-aligned movement patterns, and unnatural session durations (S2). Include these signals in your evidence packet.
Pre-Submission Audit Checklist
| Common Mistake | Red Flag | What to Submit | Fix |
|---|---|---|---|
| Incomplete logs | Log file missing timestamps, IPs, or user agents | Full raw server logs in original format (CSV, JSON, .log) | Export from server/CDN without filtering; verify column count matches live traffic |
| Duplicate auto-credited clicks | GCLID appears in Google Ads "Invalid activity" report | Only GCLIDs not already credited | Download invalid activity report; remove matched GCLIDs from your list |
| Screenshots as evidence | Submission contains only PNG/JPG/PDF of dashboards | Machine-readable log files + optional annotated screenshots | Replace screenshots with raw exports; keep screenshots as appendix only |
| Missed 60-day window | Click date older than 60 days from filing date | Clicks within 60-day window only | Run monthly audit; file within 30 days of detection to leave buffer |
| Missing click ID correlation | Server logs lack GCLID/FBCLID column | Logs with click ID for every disputed row | Implement URL parameter capture; backfill via analytics if possible |
| No behavioral data | Only IP/timestamp/user-agent present | Mouse movement, scroll depth, session duration, click timestamps | Add client-side tracker (e.g., BotRefund script) before next audit cycle |
| Uncorrelated analytics | Google Analytics session ID not linked to GCLID | GA4 export with gclid parameter joined to server log | Enable auto-tagging; export GA4 BigQuery table; join on gclid |
| Inconsistent time zones | Server logs in UTC, Google Ads in account time zone | All timestamps converted to single time zone (UTC recommended) | Convert before export; note conversion method in cover letter |
How to Build Your Refund Evidence Packet
An evidence packet is a single ZIP file containing every file the reviewer needs. Follow this structure exactly.
Required File Formats
- Server logs: CSV (UTF-8) or JSON Lines (.jsonl). One row per HTTP request.
- Behavioral logs: JSON Lines. One row per session event.
- Click ID map: CSV with columns
gclid, session_id, timestamp, ip, user_agent. - Cover letter: Plain text (.txt) or PDF. One page. Summarize claim, list GCLID count, date range, and total spend disputed.
- Invalid activity report export: CSV from Google Ads (download via Tools > Billing > Invalid activity).
Required Fields in Server Logs
| Field | Example | Required? |
|---|---|---|
| timestamp_utc | 2025-01-15T14:32:11.123Z | Yes |
| ip_address | 203.0.113.45 | Yes |
| user_agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64)... | Yes |
| request_method | GET | Yes |
| request_path | /landing-page?gclid=ABC123 | Yes |
| response_status | 200 | Yes |
| response_bytes | 14523 | Yes |
| referrer | https://www.google.com/ | No (recommended) |
| gclid | ABC123 | Yes (extract from query string) |
Concrete Example: Correctly Correlated GCLID Log Entry
timestamp_utc,ip_address,user_agent,request_method,request_path,response_status,response_bytes,referrer,gclid
2025-01-15T14:32:11.123Z,203.0.113.45,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",GET,"/landing-page?gclid=TeSter123",200,14523,"https://www.google.com/",TeSter123
This row shows the exact click. The GCLID TeSter123 appears in both the URL and the extracted column. The reviewer can paste TeSter123 into Google Ads to verify the click exists and was billed.
Behavioral Log Example (JSON Lines)
{"session_id":"sess_abc123","gclid":"TeSter123","event":"mousemove","x":102,"y":245,"t":12}
{"session_id":"sess_abc123","gclid":"TeSter123","event":"scroll","depth":15,"t":45}
{"session_id":"sess_abc123","gclid":"TeSter123","event":"click","target":"button.cta","t":78}
{"session_id":"sess_abc123","gclid":"TeSter123","event":"session_end","duration":82,"t":82}
Each line is a discrete event. The t field is milliseconds since session start. No mouse tremor, linear path, and 82ms total duration are red flags for bot behavior (S2).
What Happens After You Submit
Review Timelines
Google typically reviews claims within 30 to 60 days. Complex cases with many GCLIDs or cross-platform evidence may take longer. Meta's billing dispute process follows a similar 30- to 60-day window (S4). You will receive an email when the review starts and another when a decision is made.
Appeal Options
If Google rejects your claim, you can appeal once. The appeal must include new evidence not in the original packet. Common new evidence: additional behavioral logs from a longer date range, a third-party audit report, or corrected time-zone conversions. Success rates drop without solid new proof. Prepare the appeal packet using the same file structure as the original.
Confirming a Click Was Not Already Auto-Credited
Before appealing, re-check the Invalid Activity report for the disputed date range. Download the latest CSV. Search for each GCLID in your original submission. If any appear with a credit date after your filing, that click was auto-credited during review. Remove it from the appeal. Only appeal clicks that show no credit at all.
Tracking Status
Google Ads does not provide a public claim tracker. Save your submission confirmation email. If you use BotRefund, the dashboard shows claim status, platform responses, and credited amounts (S2). For manual filings, set a calendar reminder for 45 days post-submission to follow up if no response.
Key Facts About Invalid Click Refunds
| Fact | Detail | Source |
|---|---|---|
| Average invalid click rate | 11% to 14% across all Google Ads campaigns | S1 |
| Google's automated detection rate | Catches less than 50% of invalid traffic | S1, S3 |
| Refund success rate with proper evidence | 83% for high-volume advertisers using BotRefund | S2 |
| Global ad fraud losses (2026) | Over $100 billion | S1, S6 |
| Filing window | 60 days from click date | S3 |
| Non-human internet traffic | 43% of all internet traffic (Imperva Bad Bot Report) | S6 |
| Invalid traffic share of programmatic spend | 10% to 30% (World Federation of Advertisers) | S1, S6 |
| BotRefund detection signals | Mouse tremor absence, <1ms input speed, grid-aligned paths, unnatural session durations | S2 |
Frequently Asked Questions
- How long does the refund process take? Google typically reviews claims within 30-60 days, but complex cases may take longer.
- Can I get refunds for Meta ads too? Yes, Meta has a similar billing dispute process for invalid clicks on Facebook and Instagram (S4).
- What evidence do I absolutely need? Raw server logs with timestamps, IPs, user agents, and click IDs (GCLID for Google, FBCLID for Meta). Behavioral evidence is strongly recommended.
- Is there a minimum spend to file a claim? No official minimum, but the effort is only worthwhile for accounts with significant invalid traffic.
- Do I need a third-party tool? Not strictly, but tools like BotRefund automate evidence collection and increase approval rates (S2).
- What happens if Google rejects my claim? You can appeal with additional evidence, but success rates drop without solid proof.
- Does this apply to all types of invalid clicks? Yes, including bot clicks, accidental clicks, and competitor click fraud (S3).
- How does click fraud affect ROAS? Invalid clicks inflate spend without conversions, dragging down ROAS. Fake conversions from bots can mask the damage (S7).
- What is pixel poisoning? Bots trigger conversion pixels, corrupting your optimization data. BotRefund blocks this in real time (S2, S5).
- Can I recover spend from before 2024? BotRefund recovers Google and Meta spend dating back to 2017 (S2). Manual claims are limited to the 60-day window.
Limitations and When This Advice Does Not Apply
This guide is for advertisers who want to manually dispute invalid clicks. If your account is small (under $1,000/month) or your traffic is mostly human, the effort may not be worth it. Also, Google's automated credits already cover some obvious invalid activity. If you are already using a click fraud prevention tool, you may have fewer claims to file. Always check your account's "Invalid activity" report first. The 83% success rate applies to high-volume advertisers using BotRefund's full evidence pipeline (S2). Results vary by evidence quality and traffic mix.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
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.