Invalid Traffic
Stop bots before they hit Meta CAPI, Google Ads, and your warehouse
Up to half of programmatic ad traffic is invalid. When bot conversions reach Meta CAPI or Google Ads server-side, they corrupt Smart Bidding, inflate ROAS, and waste delivery quota. Datafly Signal filters bots at the Signal Core, before any vendor delivery, with rules you control per pipeline.
20-50%
Of programmatic traffic is bots
Industry estimates from HUMAN Security and Pixalate IVT reports
$0
CAPI quota spent on bots
Bot events stripped before vendor delivery, not after
6 layers
Of detection
Identity cache, signatures, browser signals, IP and ASN, velocity, impossible travel
Per pipeline
Configurable rules
Web, mobile, and server pipelines tuned independently
Why client-side bot detection isn't enough
Most bot filtering happens after the fact, in vendor dashboards or analytics tools, after the bot conversion has already polluted Smart Bidding signals and burned your delivery budget. By the time you spot it, the damage is done.
Vendor APIs don't reject bots well
Meta CAPI, Google Ads, TikTok Events API, and LinkedIn CAPI accept whatever events you send them. They have their own IVT detection downstream, but a bot conversion arriving with a valid event ID and matching hashed PII will be ingested. Smart Bidding learns from it. Lookalike audiences use it. The pollution happens upstream of any vendor-side filtering.
gtag.js and Meta Pixel run inside the bot
If a headless Chromium scraper visits your checkout page, it executes gtag.js, fires the purchase event, and the conversion is recorded. Client-side tags can't reliably distinguish bots because they run in the same JavaScript context the bot is driving. The browser fingerprint looks legitimate because it is a real browser, just one being remote-controlled.
Bot CAPI events still cost you quota
Vendor APIs are rate-limited and metered. Every bot event pushed to Meta CAPI counts against your quota whether the conversion is later flagged invalid or not. For high-traffic pipelines this means burning real budget on traffic you should never have delivered, and risking legitimate events being throttled at peak.
How Datafly Signal filters invalid traffic
Capture every event server-side
Datafly.js sends every event to your own first-party subdomain. The Ingestion Gateway captures the raw HTTP request, including headers, IP, user agent, and timing data that a client-side tag wouldn't have access to.
Run the bot filter at the Signal Core
Before any pipeline transformation, the Signal Core evaluates the event against the bot filter ruleset. Six layers of detection run against it: a cache of identities already judged to be bots, known-bot user-agent signatures, browser-signal validation, IP and autonomous-system classification, request velocity, and impossible travel.
Observe before you enforce
Every detection layer can run in observe mode first. The layer still scores each event into bot_score and reports exactly what it would have caught, but its score never counts toward the drop decision, so no real conversion is ever lost while you evaluate it. Watch a new layer on live traffic, confirm it isn't flagging real users, then switch it to enforce per layer when you're confident. New environments start with every layer in observe mode, so the first deploy measures bot rate without changing delivery.
Drop, quarantine, or tag
Once a layer is enforcing, each rule has a configurable action. Drop removes the event entirely. Quarantine routes it to a separate warehouse table for analysis without delivering to vendors. Tag passes the event through with an is_bot flag for downstream filtering.
Real-time metrics and audit
Every filtered event is logged with its match reason. The management UI shows the bot-filtered rate per pipeline in real time, alongside delivered and consent-filtered counts. Drill into any specific event to see which rule matched.
Network intelligence refreshes itself
Cloud provider IP ranges, Tor exit nodes, Spamhaus lists, and autonomous system data refresh automatically inside your own deployment, with no redeploy and no call to us. Every source can be pointed at an internal mirror, so this works air-gapped. The user-agent signature list ships with platform releases.
Bot filter configuration
Rules are versioned alongside the rest of your pipeline configuration. Change them via the management UI or by committing to your blueprint repo. Every rule change is auditable.
# bot-filter.yaml
# Bot filtering is evaluated at the Signal Core, before any
# transformation or vendor delivery. Each layer contributes a
# weighted score; the thresholds decide what happens.
enabled: true
preview_mode: false # true = nothing is dropped, scores still recorded
flag_threshold: 0.5 # score >= this -> tagged, still delivered
block_threshold: 0.7 # score >= this -> dropped
log_blocked_events: true # dropped events routed to the bot-events topic
server_side_bypass: true # skip for HMAC-authenticated server events
layers:
# Identities already judged to be bots short-circuit the rest.
identity_cache:
enabled: true
auto_write: true
ttl_seconds: 86400
# IAB/ABC spiders and bots, plus automation framework tokens.
iab_patterns:
enabled: true
custom_patterns:
- "my-internal-crawler*"
# What a real browser reports and automation often does not.
signal_validation:
enabled: true
require_screen_dimensions: true
require_timezone: true
require_user_agent: true
check_tz_geo_mismatch: true
# One question, two sources: published ranges, then the
# autonomous system for the hosting providers they miss.
ip_classification:
enabled: true
observe: false
block_spamhaus: true
block_tor: true
block_datacenter_ips: true
allowlisted_cidrs: ["203.0.113.45/32"]
check_asn: true
allowlisted_asns: [64496] # your own corporate network
blocked_asns: []
# Per-identity sliding window: velocity and impossible travel.
behavioural:
enabled: true
window_seconds: 5
max_events_per_window: 50
impossible_travel_enabled: true
max_km_per_hour: 1000
allowlisted_user_agents:
- "DataflyHealthCheck*"Six layers of detection, one config
No single signal catches every bot. Datafly Signal layers detection so each rule covers what the others miss.
Known-bot signatures
Catches the declared crawlers and the automation tools that name themselves in the request: headless Chrome, Selenium, Puppeteer, Playwright, PhantomJS. Built on the IAB/ABC Spiders and Bots list, and you can add your own patterns per pipeline.
IP and autonomous system
Real customers do not shop from a data centre. Spamhaus, Tor and the published cloud ranges are covered, and autonomous-system lookup catches the hosting providers those ranges never list. Allowlist your own networks by range or AS number.
Browser-signal validation
Real browsers report a screen size, a timezone, a locale and a language. Automation frequently does not, and rarely keeps its browser version current. A timezone that contradicts the location of the IP is another tell. Each is weighted, so no single quirk condemns a real visitor.
Velocity
Some bots look perfect. Genuine browser, residential address, clean user agent, and 400 events in ten seconds. A sliding window per visitor identity catches the traffic that passes every static check but behaves like nothing human.
Impossible travel
One visitor in London and Skopje 37 milliseconds apart is not a visitor. Catches residential-proxy rotation across countries while the cookie persists, which every other layer here would wave through.
Observe mode + quarantine
Run any detection layer in observe-only mode: it scores events and shows what it would catch, without dropping a single one. Flip it to enforce per layer once you trust the numbers, and quarantine filtered events to a warehouse table for analysis.
What gets filtered, by detection layer
Each detection layer targets a different category of invalid traffic. They run in parallel at the Signal Core, with the first match determining the outcome.
| Layer | What it catches | Default action |
|---|---|---|
| Identity cache | Identities already judged to be bots, without re-running the rest | Drop |
| Known-bot signatures | Declared crawlers, and automation frameworks that name themselves | Drop |
| Browser-signal validation | Missing screen, timezone or locale; stale browser; timezone contradicting the IP | Score |
| IP and autonomous system | Spamhaus, Tor, cloud ranges, and hosting networks those ranges miss | Score |
| Velocity | Scripts hammering the endpoint from one browser identity | Score |
| Impossible travel | Residential-proxy rotation across countries on a persistent cookie | Score |
Frequently asked questions
- What is invalid traffic and why does it matter for paid media?
- Invalid traffic (IVT) is bot, scraper, datacenter, and automation traffic that reaches your site without a real user behind it. Industry estimates from HUMAN Security and Pixalate put IVT at 20-50% of programmatic ad traffic. When bot conversions reach Meta CAPI, Google Ads, or TikTok server-side, they corrupt Smart Bidding, inflate ROAS calculations, and burn delivery quota that should be available for real customers.
- How is server-side bot filtering different from gtag.js or Meta Pixel?
- Client-side tags run inside whatever browser context loads them, including headless Chromium scrapers and Selenium-driven bots. They cannot reliably distinguish a bot from a real user because the JavaScript fingerprint is genuine, just remote-controlled. Datafly Signal filters at the Signal Core, after events arrive at your gateway, using server-observed signals (IP and autonomous system, request velocity, geography, and headers) that client-side tags do not have access to.
- Will filtering bots reduce my reported conversions?
- In dashboards yes, in true performance no. Reported conversion counts may drop because bot conversions stop being counted. The conversions that remain are real, which is what Smart Bidding and lookalike audiences should be optimising on. Most teams see CAPI match rates and ROAS calculations improve once bots are filtered upstream.
- Can I see which events were filtered and why?
- Yes. Every filtered event is logged with the rule that matched, the action taken (drop, quarantine, or tag), and the original event payload. The management UI shows bot-filtered rate per pipeline in real time and lets you drill into specific events for investigation. You can route filtered events to a quarantine warehouse table for offline analysis instead of dropping them entirely.
- Can I trial a new bot rule without risking real conversions?
- Yes. Every detection layer has an observe mode. In observe mode the layer still scores each event and reports what it would have filtered, but its score never counts toward the drop decision, so no real conversion is ever lost while you evaluate it. The management UI shows the would-be filter rate per layer in real time. When the numbers look right, you switch that layer from observe to enforce. New environments start fully in observe mode, so your first deployment measures bot rate before it changes any delivery.
- Does Datafly Signal replace IVT detection at the vendor level?
- No, it complements it. Vendors like Meta and Google have their own downstream IVT detection. Datafly Signal filters upstream so the bot conversion never reaches the vendor in the first place, saving your CAPI quota and preventing the bot signal from polluting Smart Bidding before vendor-side IVT catches it. The two layers stack.
- Can I bring my own bot signature list?
- Yes. You can add your own user-agent patterns, IP allowlists, and ASN allow and block lists per pipeline, and tune the velocity and impossible-travel thresholds. Network intelligence (cloud provider ranges, Tor exit nodes, Spamhaus, and autonomous system data) refreshes automatically in your own deployment without a redeploy. The user-agent signature list ships with platform releases. Every rule is version-controlled alongside your blueprint.
Related
Consent Mode v2
Filter events on consent state, evaluated server-side per vendor.
PII Handling
Hash, mask, or strip personal data at the same Signal Core layer.
Attribution
Eliminate duplicate conversions and clean attribution signal end to end.
Meta Conversions API
Server-to-server delivery to Meta with pre-filtered events.
Stop paying for traffic that doesn't convert
Request a technical walkthrough. We'll show you the bot rate on a sample of your current event stream and what filtering it server-side would recover in CAPI quota and Smart Bidding signal quality.