Pulsar
metrics playbook · paying for bots
Present: ← → Space · Esc back to Doc

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

01

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.

02

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.

The same traffic, two ways of counting
CLEAN

Loading…

Important: these 4,138 are the events Pulsar already flagged as bots (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.

25.3%
of events — 4,138 of 16,340 — were bots. One in four “visitors” could never buy anything.
12,202
human events — the real audience every metric should be computed on.
16,340
total events, 30-day window — the raw number an unfiltered dashboard would proudly report.

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.

03

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:

×1 · INFLATED TOP-LINEVisits and CTR look healthier than reality. Bots visit and even click — the vanity numbers glow while nothing real happens underneath.
×2 · WRECKED EFFICIENCYCVR drops, CPA climbs. Bots never buy, so they pad the denominator of every rate — you paid to reach a non-buyer, and the books say your ads got worse.
×3 · WORSE TARGETINGMeta learns to find more bot-like traffic. If the pixel counts bot “engagement”, the algorithm optimizes toward it — and a bot-polluted lookalike seed (see No. 03) teaches the wrong pattern.
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.

25.3%
25.3%

Loading…

The sales never moved. The same 150 humans buy at every slider position — but the bots inflate what you pay and deflate what you appear to earn. That gap is pure, invisible waste.

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.

04

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.

The four bot populationsDifferent intent, same rule: none of them belongs in a metric you optimize on.
SourceVerdictWhat it is
PLATFORM CRAWLERSBENIGN · EXCLUDEMeta / 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 & MONITORSNOISE · EXCLUDEPrice scrapers, SEO tools, uptime checkers — machines doing their jobs on your pages, inflating your counts as a side effect.
CLICK FRAUDHOSTILE · EXCLUDEBot farms paid to click ads and drain competitor budgets. The only population actively trying to cost you money.
YOUR OWN TRAFFICINTERNAL · EXCLUDETeam, 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.

05

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.

SESSION DEPTHA single hit, no dwell time. Humans linger and click around; most bots fire once and vanish.
IP TYPEDatacenter / known-bot IP ranges. Buyers browse from homes and phones, not from AWS.
USER-AGENTKnown bot or headless UA strings. Many crawlers announce themselves; headless browsers leak tells.
SPEED & REGULARITYImpossible speed or metronome timing. No human hits five pages in two seconds, every 60 seconds, forever.
FUNNEL DEPTHNO downstream steps — the giveaway. A “visitor” that never scrolls, views or carts isn’t shopping. It’s fetching.

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.

Signals on this visit · click to flip · red = bot-like
Presets
HUMAN

Loading…

The rule of thumb: no funnel depth + a datacenter IP + a bot user-agent = bot, every time. Pulsar tags 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.

06

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.

The same numbers, before and after the filterDirectional summary — how each downstream artifact changes once the 25.3% of machine events stop being counted as people.
ArtifactCounting botsBots excludedPlaybook
CTR & VISITSInflated — machines click tooSmaller, but real — every unit is a personNo. 01
CVR & CPACVR dragged down, CPA pushed upTrue efficiency — rates computed on buyers-in-waitingNo. 02
LOOKALIKE SEEDTeaches Meta the wrong patternClean seed — the algorithm hunts humans, not crawlersNo. 03
ATTRIBUTIONJunk sessions muddy the pathsHonest credit — journeys belong to peopleNo. 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.

07

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.

1 / 8