Seatext library / BotRefund evidence
Why Meta Rejects Invalid-Traffic Refunds Even When You Have Proof
Meta rejects most refund claims because its automated systems only catch a fraction of invalid traffic, and the platform requires behavioral evidence that proves automation — not just suspicious patterns. Advertisers often submit server-level...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
Meta rejects refund requests for invalid traffic when the evidence you provide shows suspicious patterns but does not prove the interactions were automated. The platform's own filters catch only a portion of bot traffic — mostly crude scripts and known data-center IPs. Sophisticated bots using residential proxies, real browser engines, and human-like behavior slip through. When you file a claim, Meta's reviewers look for session-level behavioral proof: no scrolling, no mouse movement, identical form-completion timing, zero meaningful page engagement. Server logs, click IDs, and IP lists alone rarely meet that bar.
The Core Reason: Evidence Must Prove Automation, Not Just Suspicion
Meta's policy states advertisers should not be charged for clicks or impressions it determines are invalid. The gap lies in the word "determines." Meta's automated systems analyze server-side signals — rapid clicking, duplicate click signatures, known bad IP ranges, abnormal click patterns at the server level. These systems are sophisticated but far from perfect. They miss bots that mimic human behavior closely enough to pass server-side checks.
When you submit a claim, you are asking a human reviewer to override the automated determination. That reviewer needs evidence the automated system could not see: client-side behavioral data showing the visitor did not act like a person. A spreadsheet of click IDs and timestamps tells the reviewer the traffic looks odd. A session recording showing zero scroll events, instantaneous form fills, and no mouse movement tells the reviewer the traffic was automated.
How Meta's Detection Actually Works (and Where It Fails)
Meta's invalid-traffic detection operates primarily on the server side. It ingests click events, IP addresses, user-agent strings, and network-level patterns across Facebook, Instagram, and partner inventory. It flags traffic that deviates from statistical norms: bursts of clicks from one IP, known data-center ranges, duplicate signatures. This catches basic scrapers and crude click farms.
It does not catch bots that run real browsers (headless Chrome, Puppeteer, Playwright), rotate residential proxies, simulate mouse movements, scroll pages, and vary timing. These bots generate valid-looking server-side signatures. They click the ad, load the landing page, execute JavaScript, and sometimes even trigger conversion pixels. To Meta's server-side filters, they look like engaged users.
The platform has no incentive to flag its own revenue. Refunds happen after the fact, session by session, only when an advertiser proves the traffic was non-human.
Why "Proof" Often Isn't What Meta's Reviewers Need
Advertisers commonly submit:
- Click IDs (fbclid, gclid) with timestamps
- IP address lists showing geographic anomalies
- Server logs showing high bounce rates or low time-on-page
- CRM data showing leads never respond
None of this proves automation. Real humans bounce quickly. Real humans use VPNs. Real humans give fake phone numbers. Low lead quality is not the same as invalid traffic. Meta explicitly distinguishes between "low-quality leads" (real people not ready to buy) and "invalid traffic" (automated interactions). Treating every unresponsive contact as fraud can make a team exclude a valuable audience.
The Critical Difference Between Suspicious Patterns and Behavioral Proof
Suspicious patterns are statistical anomalies. Behavioral proof is deterministic evidence of non-human interaction. The distinction determines whether a claim is approved.
| Suspicious Pattern (Often Rejected) | Behavioral Proof (Often Accepted) |
|---|---|
| High click volume from one IP | Session recording: zero mouse events, zero scroll, form submitted in 1.2 seconds |
| Leads from unusual countries | Browser fingerprint: headless Chrome signature, missing canvas, automated navigator properties |
| Sudden conversion-rate drop | Identical field-entry timing across 50 sessions (keystroke intervals match to the millisecond) |
| CRM shows zero contactability | No conversion-pixel engagement after landing: pixel fired but no scroll, no click, no focus events |
The second column requires client-side tracking — JavaScript that runs in the visitor's browser and records interaction events. Server logs cannot capture this.
How Pixel Poisoning Makes the Problem Worse Over Time
When bots click ads, visit landing pages, and trigger conversion events, Meta's optimization algorithm treats those events as success signals. The algorithm then seeks more traffic that "looks like" the converters — which includes the bots. If bots make up 30% of early traffic, the campaign learns to target more bot-like behavior. Performance becomes inexplicably worse even though creative, offer, and audience stay the same. At 5% bot share, the contamination is subtle but compounds daily.
This is why preserving attribution before changing the campaign matters. Once you pause or retarget, you lose the ability to trace which placements, creatives, and audiences delivered the automated traffic.
What a Refund-Ready Evidence Package Looks Like
Meta's refund process is less structured than Google's. There is no standard form or guaranteed review window. Claims succeed when the evidence package mirrors what Meta's own reviewers expect:
- Click-level attribution: Every flagged click tied to its fbclid, campaign, ad set, creative, placement, device, and timestamp.
- Session recordings or reconstructed behavioral logs: Showing no scroll, no mouse movement, no focus events, instantaneous form completion, identical interaction paths.
- Browser fingerprint evidence: Headless browser signatures, missing or spoofed APIs, automation framework artifacts (webdriver, __phantom, callPhantom).
- Network signals: Residential proxy detection, data-center IP correlation, VPN exit-node matching.
- Signal-by-signal reasoning: A narrative explaining why each flagged session is automated, not just anomalous.
Reports built in the format platform teams use to review invalid traffic claims — with click IDs, campaign details, timestamps, session recordings, and signal-by-signal reasoning — see an 83% approval rate across filed claims.
Common Rejection Scenarios and How to Avoid Them
| Rejection Reason | Root Cause | Fix |
|---|---|---|
| "Insufficient evidence of invalid activity" | Submitted server logs only; no client-side behavioral data | Deploy client-side tracking before filing; capture browser-level interaction events |
| "Traffic appears to be from real users" | Bots used real browsers and residential proxies; server signals looked human | Include browser fingerprint and behavioral proof that distinguishes automation from human variance |
| "Claim duplicates automatic credit" | Meta already credited the obvious invalid clicks; remaining traffic needs stronger proof | Filter out already-credited clicks; focus claim on sophisticated traffic the automated system missed |
| "Low lead quality, not invalid traffic" | Advertiser conflated unresponsive leads with bot traffic | Separate contactability analysis from automation evidence; only claim the latter |
| "Campaign modified during review" | Advertiser paused ads or changed targeting, breaking attribution chain | Preserve campaign state until claim resolves; document pre-change state thoroughly |
Key Facts
| Fact | Detail | Source |
|---|---|---|
| Meta's automated detection coverage | Catches only a fraction of invalid activity; sophisticated bots with residential proxies and browser automation routinely bypass filters | S5 |
| Evidence standard for approval | Behavioral logs showing traffic was automated — not just suspicious — make the difference between approved and denied claims | S5 |
| Meta vs. Google refund structure | Meta's process is less structured than Google's; no standard form or guaranteed review window | S5 |
| Bot traffic share of paid clicks (industry) | 9%–20% of paid clicks are automated, per industry audits | S7 |
| BotRefund detection confidence | 99% confidence using 110+ behavioral, browser, hardware, network, and attribution signals | S2 |
| BotRefund claim approval rate | 83% of refund claims filed by BotRefund are approved by ad platforms | S2, S7 |
| Brands audited | 2,500+ brands, from fintech enterprises to DTC brands | S2, S7 |
| Total recovered spend | $100M+ in wasted ad spend recovered across client accounts | S7 |
| Fee model | $0 upfront on enterprise recovery — fees come out of what is recovered | S7 |
Limitations and When This Advice Does Not Apply
- Brand-safety or policy violations: If Meta rejects a claim because the ad or landing page violated advertising policies, invalid-traffic evidence is irrelevant.
- Disputed lead quality: Real humans who fill forms but never buy are not invalid traffic. This article addresses automation proof, not lead-scoring disputes.
- Non-Meta inventory: The evidence standards described here are specific to Meta's review process. Google Ads uses a different (more structured) invalid-activity credit system.
- Historical claims beyond lookback: Meta does not publish a fixed lookback window. Claims for traffic older than 60–90 days face higher rejection rates regardless of evidence quality.
- Accounts with policy strikes: Repeated policy violations reduce credibility with reviewers; evidence that would succeed on a clean account may be scrutinized more harshly.
FAQ
Does Meta automatically refund invalid clicks like Google does?
No. Google issues automatic invalid-activity credits for traffic its systems catch. Meta's automated systems also catch some invalid traffic and credit it automatically, but the platform does not publish a comparable automatic-credit process. Most sophisticated invalid traffic requires a proactive claim with behavioral evidence.
What is the minimum evidence Meta needs to approve a refund?
At minimum: click IDs tied to campaigns, client-side behavioral data showing non-human interaction (zero scroll, zero mouse events, instantaneous form fills), and browser fingerprint evidence of automation. Server logs alone are rarely sufficient.
How long does a Meta refund claim take?
Meta does not publish a fixed timeline. Once a claim is approved, the credit typically appears within 5–10 business days, but the review period varies widely — from days to weeks — depending on claim complexity and reviewer workload.
Can I get a refund for accidental mobile clicks?
Yes. Meta's policy includes accidental clicks (unintentional taps) as invalid activity. You still need behavioral evidence showing the interaction was accidental — e.g., immediate bounce, no scroll, no subsequent engagement — rather than a low-intent human visit.
What happens if I modify my campaign while a claim is under review?
Changing targeting, pausing ads, or altering creatives breaks the attribution chain. Reviewers cannot verify which placements and audiences delivered the flagged traffic. Preserve the campaign state until the claim resolves.
Is there a spend threshold below which Meta won't review a claim?
Meta does not publish a minimum-spend threshold. However, claims for very small amounts (under a few hundred dollars) may receive lower review priority. The evidence standard remains the same regardless of spend.
How does BotRefund improve approval rates?
BotRefund deploys client-side tracking that captures 110+ behavioral, browser, hardware, network, and attribution signals per session. It builds refund-ready reports in the format Meta's reviewers expect — with click IDs, session recordings, and signal-by-signal reasoning — achieving an 83% approval rate across 2,500+ audits.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
How BotRefund can help
BotRefund installs a single script tag (~1 minute, no ad-account access required) that captures 110+ client-side signals per session — browser fingerprint, interaction events, hardware and network attributes — to identify automated traffic with 99% confidence. Each flagged click gets a session-by-session explanation, not a generic score. The platform then builds refund-ready reports in the exact format Meta's reviewers use: click IDs, campaign details, timestamps, session recordings, and signal-by-signal reasoning. Across 2,500+ audits, 83% of claims filed through BotRefund are approved. Fees come only from recovered spend (enterprise tier), so there is no upfront cost to test whether your account has recoverable invalid traffic.