Pulsar · Metrics playbook · No. 09 · Bot & junk traffic. Real bot share measured on the test pixel, 30-day window.
Are You Paying for Bots?
A big slice of your “traffic” isn’t human. Count bots as customers and you optimize toward nobody.
Companion to No. 02 — Quantity vs. Quality (counting real people), No. 03 — Garbage In, Lookalike Out (a clean seed) and No. 05 — Who Really Made the Sale? (clean attribution), plus No. 01 — Efficiency & Fatigue, No. 04 — The Invisible Sales, No. 06 — Your Ad Is Dying, No. 07 — The Leak Map and No. 08 — Almost Bought.
Contents
01 Visits ≠ people · 02 The real share · 03 Paying three times · 04 Where bots come from · 05 Bot or buyer? · 06 Clean data · 07 The fix
Not every visit is a person
Crawlers, scrapers, click farms, link-preview fetchers, uptime monitors and the platforms’ own crawlers all fire pixel events. They load your page, they trigger your tag, they show up in your counts — and none of them will ever buy anything. Count them as customers and every number downstream is poisoned.
You can’t sell to a bot — but you can absolutely pay to reach one, and then pay again to find more just like it.
This deck measures how big that slice really is on a real pixel, walks through the three ways a single bot costs you money, and shows how to keep the machines out of the metrics. Every earlier playbook — the funnel in No. 02, the seed in No. 03, the attribution in No. 05 — silently assumes the data is human. This is the deck that makes that assumption true.
The real share — real data
The test pixel, 30-day window: 16,340 total events, of which 4,138 came from bots — that’s 25.3%. One in four events was not a person.
One in four “visitors” was a machine
Real 30-day measurement on the test pixel. Toggle the two worlds — the sample CVR / cost-per-person pair below is illustrative of the distortion, computed with the real 25.3% bot share.
isBot) and excludes by default. Unflagged, they’d be sitting inside your CTR, your CVR and your audiences right now.The donut is interactive in the HTML version. It splits 16,340 events into 4,138 bot events (red, 25.3%) and 12,202 human events (green, 74.7%). A toggle recomputes an illustrative sample-campaign pair: counting bots — 10,000 “visits”, CVR 1.20%, $0.50 per “visit”; bots excluded — 7,468 real people, true CVR 1.61%, true cost per human $0.67. Same spend, same sales — only the counting changed.
Why you’ve never noticed: bot traffic doesn’t look broken. Visits are up, the chart goes up and to the right, everyone’s happy. The damage only shows up later — in a CVR that won’t climb and a CPA that won’t fall — and by then nobody suspects the traffic itself.
How one bot costs you three times
Bots don’t just waste a click — they corrupt decisions. Each bot event does damage at three different layers of your operation:
A bot costs you three times: the click you paid for, the decision it skews, and the worse audience it trains.
Feel the damage — drag the bot share
Illustrative sample campaign (7,500 real humans, true CVR 2.00%, $0.50 per click) — the slider’s default is the real measured share: 25.3%. The humans and sales never change; only the junk on top does.
The slider is interactive in the HTML version. At 0% bots the sample campaign reads true: CVR 2.00%, $25.00 per sale. At the real measured share, 25.3%, the same campaign reads CVR 1.49% and really costs $33.47 per sale, with about $1,270 of a $5,020 spend going to machines. At 50% bots the measured CVR halves to 1.00% and the true cost per sale doubles to $50.00 — while the humans and their 150 purchases never changed.
Where the bots come from
“Bot” isn’t one thing. Four very different populations fire your pixel — from harmless infrastructure to outright fraud — and every one of them must stay out of your metrics.
| Source | Verdict | What it is |
|---|---|---|
| PLATFORM CRAWLERS | BENIGN · EXCLUDE | Meta / Google fetching your page for link previews and indexing. Often benign — but they must be excluded from your metrics, because they can dwarf everything else. |
| SCRAPERS & MONITORS | NOISE · EXCLUDE | Price scrapers, SEO tools, uptime checkers — machines doing their jobs on your pages, inflating your counts as a side effect. |
| CLICK FRAUD | HOSTILE · EXCLUDE | Bot farms paid to click ads and drain competitor budgets. The only population actively trying to cost you money. |
| YOUR OWN TRAFFIC | INTERNAL · EXCLUDE | Team, developers, QA, staging hits — friendly fire. Real humans, but not customers, and heavily overrepresented on your own site. |
How extreme can it get? Pulsar has seen the Meta crawler alone reach ~99.7% of all events on some WordPress / WooCommerce sites. On a site like that, an unfiltered dashboard is measuring almost nothing but one robot — always check the bot share before trusting a volume number.
How to tell a bot from a buyer
No real bot passes all the human tests. Each signal alone is circumstantial; stacked together, they’re a verdict. The giveaway is always the same: a “visitor” with no downstream funnel steps — it never scrolls, never views a product, never carts.
The bot-vs-human checker — score a sample visit
Click a signal to flip it between its human reading and its bot reading, or use a preset. The meter is the same intuition Pulsar’s server-side isBot tagging applies to every event.
isBot server-side from these signals, so your real metrics exclude bots by default — you never have to run this checker by hand.The checker is interactive in the HTML version. Five signals — session dwell, funnel depth, user-agent, IP type, speed — each flip between a human reading and a bot reading, moving a likelihood meter from LIKELY HUMAN through SUSPICIOUS to LIKELY BOT. Funnel depth, user-agent and IP type carry the most weight: no-funnel-depth + datacenter-IP + bot-UA lands firmly on LIKELY BOT.
What clean data changes
Strip the bots and the true picture appears: real CTR, real CVR, real CPA, a clean lookalike seed, honest attribution. Every earlier lecture assumes the data is human — this is what makes that true.
| Artifact | Counting bots | Bots excluded | Playbook |
|---|---|---|---|
| CTR & VISITS | Inflated — machines click too | Smaller, but real — every unit is a person | No. 01 |
| CVR & CPA | CVR dragged down, CPA pushed up | True efficiency — rates computed on buyers-in-waiting | No. 02 |
| LOOKALIKE SEED | Teaches Meta the wrong pattern | Clean seed — the algorithm hunts humans, not crawlers | No. 03 |
| ATTRIBUTION | Junk sessions muddy the paths | Honest credit — journeys belong to people | No. 05 |
Optimize on people, or you will optimize for bots.
This is why the filter can’t be an afterthought or a monthly cleanup script. It has to happen before the metric is computed, before the audience is built, before the platform learns — because every one of those steps happily consumes junk and hands you back confident-looking garbage.
The fix — four habits, in order
Filter first, seed clean, watch the share, and never trust a volume spike at face value.
FILTER bots out of every metric by default
Never optimize on polluted data. The filter belongs at the source — on the event, before the dashboard — not as a checkbox someone has to remember on every report.
EXCLUDE crawler / datacenter traffic from audiences and seeds
A lookalike seed is a lesson you teach the algorithm. Let crawlers into the seed and Meta goes looking for more of them (No. 03). Keep audiences human-only.
WATCH the bot share
A sudden spike is a signal, not noise. It can mean click fraud on your ads, or a broken tag firing on crawlers. Either way, money is leaking — the share itself is a health metric.
VERIFY volume before you trust it
A traffic jump may just be bots. Before celebrating — or scaling budget into — a spike, check what share of it is human. Growth that can’t buy anything isn’t growth.
Where Pulsar fits: it flags isBot on every event server-side, excludes bots from analytics and audiences by default, and surfaces the bot share so you can actually see it — here, 25.3%.
Cross-reference — No. 02 — Quantity vs. Quality is where the funnel counts real people; No. 03 — Garbage In, Lookalike Out is why the seed must be clean; No. 05 — Who Really Made the Sale? is the attribution these filters keep honest.