How Much of Your Ad Budget Goes to Bots, and How to Calculate It

"About ten percent of our traffic is bots" is a feeling, not a number. You can calculate losses from junk traffic using your own stats, and they are usually bigger than the invalid click share times your CPC.

Bots and Fraud10 min read
Contents
  1. Why the losses are bigger than they look
  2. Step 1. Find the invalid click rate
  3. Step 2. Calculate direct losses
  4. Step 3. Calculate lost conversions
  5. Step 4. Estimate the cost of skewed optimization
  6. A worked example with made-up numbers
  7. Calculation pitfalls
  8. How to track the junk traffic share regularly
  9. How ArtisanClo helps
  10. Bottom line

Almost every media buyer suspects that part of the budget goes to bots. Far fewer know exactly how much. Without a number it is hard to decide whether to block a placement, request a refund, tweak the filter settings, or treat it as acceptable noise that is not worth your time.

This article covers how to calculate losses from junk traffic using your own stats: what they are made of, where to get the data, a worked example with made-up numbers, and how to track this share regularly instead of once every six months.

Why the losses are bigger than they look

The first instinct is to count the paid clicks made by bots and multiply them by the CPC. That is the right starting point, but not the whole amount. Junk traffic hits your budget in three ways:

  1. Direct losses: you paid for a click that could never turn into a purchase.
  2. Lost conversions: the same money could have bought real clicks, and some of them would have brought revenue.
  3. Skewed optimization: fake signals spoil your stats and the ad algorithm's learning, so you spend the next dollars worse than you could.

The first layer is the easiest to calculate and the third is the hardest. But the third one often turns out to be the most expensive.

Step 1. Find the invalid click rate

Everything starts with one number: what share of paid clicks came from bots, click farms, proxies and other invalid traffic. There is no single source for it, so it is better to assemble it from several.

The ad platform's report

Large ad platforms filter out some invalid clicks themselves and do not charge for them, and refund some clicks retroactively. This report is useful, but it only shows what the platform itself admitted. Whatever it missed is not there. How to read such reports in search ads is covered in the article on invalid clicks in Google Ads.

Your own traffic filter log

If there is a filter in front of the landing page, it has a log: how many visits were filtered out and why, whether data center, VPN, automated browser or repeats from one IP. This is the most detailed source, because it sees every visit.

The click vs visit gap

Compare the number of clicks in the ad account with the number of landing page visits for the same period and campaigns. Part of the difference is normal loss: the person closed the tab, the connection dropped, the page loaded slowly. But if one placement shows a gap several times bigger than the others, it probably has lots of clicks that never even reached the site.

Conversions with no money

Separately, count the share of conversions that the affiliate network later rejected or that never reached payment. High sign-ups and zero sales on one source are a common trace of click farms and incentivized traffic.

The output of this step is the invalid click rate for each source, not one number for the whole account. An account-wide average hides the problem: ten good sources and one bad one produce a decent average.

What share counts as normal

There is no universal norm. In search ads with verified click IDs the junk share is usually small; on native, push and pop networks it can be several times higher, and within one network it varies a lot from zone to zone. So compare a source not with a number from someone else's article, but with your own sources in the same geo and with the same source a week ago. A sharp rise matters more than the absolute value.

Step 2. Calculate direct losses

The formula is simple:

Direct losses = paid clicks × invalid rate × average CPC

If you pay for impressions rather than clicks, the logic is the same: invalid impression rate × impressions × CPM / 1,000. With pay-per-install or pay-per-lead it is the share of fake installs or leads × their price.

Subtract whatever the platform has already refunded. Otherwise you will count money that came back to you as lost.

Step 3. Calculate lost conversions

The money spent on bots could have bought real traffic. To estimate what it would have delivered, you need the conversion rate on valid clicks, not on all clicks.

Lost conversions = invalid clicks × CR on valid clicks

Lost revenue = lost conversions × average revenue per conversion

An important detail: the CR on all clicks is dragged down by the bots themselves. If you calculate losses with it, you will underestimate the damage. So remove invalid clicks from the denominator first, then calculate.

This estimate is approximate: nobody guarantees that the extra budget would have bought traffic of the same quality. But as an order of magnitude it is honest, and it is enough to decide whether to block a placement.

Step 4. Estimate the cost of skewed optimization

There is no exact formula here, but there is a way to see the scale.

Ad algorithms learn from the events you send them. If sign-ups go to the ad account and a noticeable share of them come from farms and bots, the algorithm learns to find exactly those "customers". How to set up event sending properly is covered in the article on sending conversions to ad accounts.

To estimate the damage, compare two cost-per-action figures for each source or campaign:

  • CPA on all conversions the ad account sees;
  • CPA on approved conversions, the ones that actually brought money.

If a source has the best CPA in the account on all conversions but the worst on approved ones, the budget was flowing there because of fake signals. The amount you put into that source beyond what you would have with honest stats is the cost of skewed optimization.

A worked example with made-up numbers

Let's take a simplified campaign over one month. All numbers are made up and only illustrate the method.

Metric Value
Spend $10,000
Average CPC $0.50
Paid clicks 20,000
Invalid click rate 15%
Invalid clicks 3,000
Valid clicks 17,000
Approved conversions 255
CR on valid clicks 1.5%
Revenue per conversion $50
Revenue $12,750

What the campaign looks like without adjusting for bots. Profit is $12,750 − $10,000 = $2,750, ROI is 27.5%. CR on all clicks is 255 / 20,000 = 1.28%. The campaign is in the green and everything seems fine.

Direct losses. 3,000 × $0.50 = $1,500. The platform refunded $200 for the invalid clicks it recognized, so direct losses come to $1,300.

Lost conversions. $1,500 could have bought 3,000 real clicks. At a 1.5% CR that is 45 conversions, and at $50 each, $2,250 in missed revenue. If all the traffic had been real, revenue would have been $15,000, profit $5,000 and ROI 50%.

Skewed optimization. Suppose the ad account saw 300 conversions instead of 255: 45 sign-ups came from farms and the affiliate network rejected them. Almost all of them came from one placement that looked like the best one in the ad account, and the algorithm moved another $1,000 of budget there. On approved conversions the CPA there is twice the average. If that $1,000 brought half the revenue of an average source, the damage is about $500.

Total for the month. $1,300 in direct losses, $2,250 in missed revenue and roughly $500 from skewed optimization. The invalid click rate is 15%, yet the gap between actual and possible ROI is almost twofold. That is why it pays to calculate all three layers, not just the first one.

Calculation pitfalls

  • Not every lost click is a bot. The gap between the ad account and the site is partly natural. Count as invalid only the visits that have a specific reason: data center network, automation traces, repeats, a rejected conversion.
  • Do not confuse filtering with damage. If the filter dropped a visit, you still paid for the click. The filter protects your landing page, stats and optimization, but only the platform can return the money.
  • Do not count refunds twice. A platform refund reduces direct losses but does not give back lost conversions.
  • Look at sources, not the account. The account-wide invalid click rate almost always looks tolerable.
  • Do not mistake fraud for a bad offer. If the traffic is real and there are no conversions, the cause is the offer, the landing page or the audience. The metrics that tell these apart are collected in the article on affiliate marketing metrics.

How to track the junk traffic share regularly

A one-off calculation is useful, but fraud changes: placements add new zones, sources degrade, new schemes appear. So it is worth turning the junk traffic share into a regular metric.

  1. Tag every click. Without source, placement and campaign tags, no share can be tied to the specific place where money is lost. How click tags work is explained in the article on click ID and SubID.
  2. Keep two conversion columns. All conversions and approved ones. The gap between them by source is an early fraud signal.
  3. Check the invalid traffic share by source every week. When launching a new placement, check it daily until you have enough data.
  4. Set a reaction threshold. For example: if a placement's invalid click rate doubled week over week, or its CPA on approved conversions is 1.5 times the average, the placement gets reviewed and blocked if needed.
  5. Calculate losses in money once a month. The same four steps as above. A dollar figure is more convincing than a percentage, both for you and for the network manager when you ask for a refund.
  6. Recalculate ROI with the adjustment. A campaign's real ROI is the ROI on approved conversions. How to calculate it is covered in the article on how to calculate ROI.

How ArtisanClo helps

ArtisanClo filters out bots, data center traffic, VPNs and proxies, and every click in the log shows the reason code behind the decision. So you do not have to eyeball the invalid traffic share: it is visible by source, campaign and reason.

The built-in tracker calculates spend, conversions, profit and ROI by campaign and accepts conversions with different statuses. One report shows how much money went to traffic that could never become a purchase, and which sources bring approved revenue and which bring only sign-ups.

Bottom line

Losses to bots come in three layers: direct money spent on invalid clicks, the conversions you missed out on with that budget, and spoiled optimization that steers money into junk traffic by itself. Start with the invalid click rate for each source, turn it into dollars with simple formulas, and always compare CPA on all conversions with CPA on approved ones. Track the share regularly, set a threshold at which a source gets reviewed, and recalculate the losses in dollars once a month. Then "about ten percent of our traffic is bots" becomes a specific amount and specific decisions.

Frequently asked questions

01

How can I quickly estimate how much money goes to bots?

Take the share of invalid clicks for the period and multiply it by the number of paid clicks and your average CPC. That is your direct loss. Then add the conversions you missed out on with that money, and the difference between optimizing on real versus fake conversions.

02

Where do I get the invalid click rate?

From three sources: the ad platform's invalid clicks and refunds report, your own traffic filter log, and a comparison of clicks in the ad account with visits on the landing page. Combining them works best, because each source sees only part of the picture.

03

Is the gap between ad account clicks and site visits all bots?

Not all of it. Some people close the tab while the page is loading, and some visits are lost to blockers and slow connections. A small gap always exists. It becomes suspicious when one source shows a much bigger gap than the rest.

04

Why are fake conversions worse than empty clicks?

An empty click costs you money once. A fake conversion sent to the ad account teaches the algorithm to find similar visitors, and it will send your next budget into junk traffic on its own.

05

How often should I recalculate losses to bots?

Check the invalid traffic share by source daily while launching and weekly on stable campaigns. A full calculation of the losses in money once a month is enough, plus after every noticeable change in your sources.

Read next

See your traffic for real

Connect ArtisanClo to your site, see who actually arrives from your ads, and why every click got its decision.