Why bot traffic makes your numbers look better than they are
Bot traffic is any visit to your website made by software instead of a person. Some of it is harmless, such as search engine crawlers. The kind that hurts a small team is the bots that look like visitors in your analytics. They load your pages, click around, and sometimes fill in your signup or demo form. Your traffic goes up, your conversion rate looks healthy, and your signup count climbs, but none of those visitors will ever become customers.
The damage goes beyond a vanity metric. If bots make a landing page look like it converts at 8 percent, you'll put more ad money behind it. If half of last month's signups were fake, your activation rate looks terrible, and you might rebuild an onboarding flow that was working fine for real people. Every decision you make from that funnel inherits the error.
Both Google Analytics and PostHog already drop the best-known crawlers before you see your reports. So the bots left in your data are, almost by definition, the ones built to pass as people. You can't find them with a list of bot names. You find them by behavior: visits that never scroll, traffic that arrives all at once from one city, browsers nobody has used in years, and signups that show up with no visit to the signup page beforehand. If you want the background on where this traffic comes from, see What is bot traffic, and how do small teams filter it out of their analytics? Coming soon .
Reading for those patterns is slow work. You have to break traffic down by every dimension that might give a bot away, compare it with a normal period, follow suspicious visits into your signup data, and then decide what to exclude without throwing out real customers. It's the kind of careful, many-angled analysis an AI marketer handles well, because it can check every breakdown with the same attention.
Kite is an AI marketer. It researches your business, builds a growth strategy, and ships the work that brings you new customers. Here's how it finds and filters out bot traffic.
How Kite finds and filters out bot traffic
Kite starts by reading your traffic in the analytics account you connect, either PostHog or Google Analytics. It breaks your visits down by source, location, browser, and device, compares the result with an earlier period, and looks for the patterns that separate software from people.
Next, Kite follows the suspicious traffic into the part of your funnel that matters most: your signups and conversions. It checks what each signup did before and after it arrived, and it sorts them into likely bots and real people who didn't get started.
Then Kite rebuilds your funnel with the fake activity removed, so you can see your real conversion rate. In PostHog, it can tag the suspected bots and filter them out of your charts once you approve. Finally, it keeps checking on a schedule, so a new wave of fake traffic gets caught early.
- How to tell whether your website traffic is coming from bots
- Find out why so many signups never do anything
- Rebuild your funnel without the fake activity
- Filter bot traffic out of your analytics going forward
- Keep watching for the next wave
How to tell whether your website traffic is coming from bots
Bot traffic gives itself away when a slice of your visitors behaves in a way no group of real buyers would. Kite looks for those slices by breaking your traffic down and comparing each piece with the period before. It reads visitors, sessions, bounce rate, and time on site, grouped by:
- traffic source and referring site
- country and city
- browser and browser version
- device type and, in Google Analytics, screen resolution
- landing page.
A real change in interest usually spreads across several of these. A bot campaign tends to pile up in one. Here are the patterns Kite treats as warning signs:
- A sudden jump in traffic from one city, especially a data center town such as Ashburn, Virginia, with sessions that last a second or two.
- A referring site you've never heard of that sends hundreds of visits, none of which go past the first page.
- Visits from a headless browser, which is a browser run by software with no screen, or from browser versions several years out of date.
- Direct traffic to a single page, such as your signup form, with no visits to the rest of your site.
- Traffic that arrives at the same minutes every hour or at a steady rate through the night.
In PostHog, Kite can also read the session recordings behind a suspicious slice. It doesn't watch the video. It reads each recording's length, starting page, and activity, so it can see when hundreds of sessions show no mouse movement and no scrolling. In Google Analytics, Kite can run a realtime report while a spike is still happening, which helps when the burst stops before the next day's numbers come in.
For each pattern it finds, Kite tells you how many visits it covers, the dates, and why it thinks those visits aren't human. When the evidence is mixed, it says so. A spike from one country might be a bot, or it might be a newsletter mention in that country, and Kite checks the referrers and landing pages before calling it either way.
Find out why so many signups never do anything
Signups that never do anything come from one of two places: bots filling in your form, or real people who signed up and then got stuck. Kite tells the two apart, because the fix for one is useless for the other. Blocking bots won't help people who are confused by onboarding, and rewriting onboarding won't stop a script.
Kite checks what happened around each signup in your PostHog project. It looks at what the visitor did before signing up and what the account did afterward. These patterns point toward a bot:
- the signup arrived within seconds of the first page view
- the visitor never loaded the page the signup form sits on
- many signups arrived within a few minutes from the same browser and location
- the names are random strings, or the email addresses follow a machine pattern or come from throwaway email services
- the account never confirmed its email address or opened your product.
Real people who don't get started leave a different trail. They usually read a few pages first, often your pricing page, and many open your product once before they drift away. When Kite sees that pattern, it tells you the signups are real and points you to where they stop, such as the step after account creation. That turns "why do so many signups never do anything?" into a specific answer: for example, 140 of last month's 400 signups look like bots, and most of the real ones stall at connecting their first data source.
Rebuild your funnel without the fake activity
Once Kite knows which traffic and signups are fake, it rebuilds your funnel without them so you can see your real numbers. In PostHog, it builds the same funnel twice, once as your reports show it today and once with the suspected bots excluded. In Google Analytics, it runs your traffic and conversion reports with the suspicious sources, locations, or browsers left out.
The two versions side by side show exactly how much the bots were distorting your picture. A landing page that seemed to convert at 8 percent might convert at 3 percent once the fake form fills are gone. A campaign that seemed to bring in a flood of signups might have brought in a handful of real ones. Kite marks which conclusions change, such as which channel looks best, and which ones still hold.
Kite also checks whether the bots skewed your past decisions. If a bot wave started the same week you launched a new page, the launch may have looked like a success when it wasn't. In PostHog, Kite can add a note to your charts on the day the bot traffic started, so anyone reading the trend later knows why it jumped.
Filter bot traffic out of your analytics going forward
Filtering bots out of your reports for good works differently in each tool, and Kite does what each one allows.
In PostHog, Kite can mark each suspected bot by setting a property on that person's profile and collecting them into a cohort, which is a saved group of people. It then adds a rule to your project's filter for internal and test users, so every chart and funnel that uses that filter leaves those people out. Kite shows you the exact rule before it changes your project settings. Nothing is deleted. The tagged people stay in your project, so if Kite flagged a real customer by mistake, removing the tag puts them back in your numbers.
Google Analytics gives you fewer controls. It already removes known bots on its own, and it doesn't let you add your own rules for excluding them from collected data. Kite works around that in two ways. It runs your reports with the bot traffic excluded and gives you the corrected numbers. It also tells you which Google Analytics settings to change, such as adding a spam referral site to your list of unwanted referrals, and it explains what each change will and won't fix.
Keep watching for the next wave
Bot traffic tends to come back, often from a new source or with a slightly different pattern. You can ask Kite to repeat the check on a schedule, such as every Monday. Each run compares the week with the one before, flags any new slice of traffic that looks automated, and reports how many signups looked fake. Results come to your Slack channel, by email, or to the Kite web app.
If your product sends signups to PostHog, Kite can also look at each new signup as it arrives. When a burst of bot signups starts, Kite tells your team right away instead of waiting for the weekly check. That gives you time to protect the form before a week of fake leads lands in your CRM.
What you get
A bot traffic report
Each suspicious slice of your traffic, with the number of visits, the dates, and the evidence that it isn't human.
A verdict on your signups
Which signups look like bots, which are real people who didn't get started, and where the real ones stop.
A corrected funnel
Your funnel shown with and without the fake activity, with a note on which conclusions change.
Cleaner reports going forward
In PostHog, suspected bots tagged and excluded from your charts. In Google Analytics, corrected reports and the specific settings to change.
An ongoing check, if you want one
A recurring review that flags new bot traffic, plus alerts on suspicious signups as they arrive.
How to get started
You can work with Kite in the Kite web app or in Slack. Start with a plain question, such as "Is bot traffic inflating our signups?" or "Our traffic doubled last week but sales didn't move. Is it real?"
Kite needs access to the analytics account that holds your traffic and signup data. Connect PostHog or Google Analytics through its usual sign-in, and tell Kite which project or property to read. If you use both, connect both: PostHog usually holds the signup and product activity, and Google Analytics often holds the longer traffic history.
Kite reads your data and sends back what it found before it changes anything. Reading reports, building funnels, and comparing periods happen as part of the analysis. Kite asks for your approval before it tags people in PostHog or changes your project's filters. Once you trust how it handles your data, you can give it more room to act on its own.
Integrations used to find and filter out bot traffic
Kite finds bot traffic in the analytics tool you already use. PostHog lets Kite go furthest, because it holds both your traffic and what each signup did afterward, and it lets Kite filter suspected bots out of your charts. Google Analytics gives Kite your traffic and conversion reports to analyze and correct.
Read your traffic and signups

Kite breaks your web traffic down by source, location, browser, and device, reads session recordings and what each signup did next, tags suspected bots, and adds them to your project's filter for internal and test users once you approve.
Kite runs your traffic and conversion reports by source, location, browser, device, and screen resolution, checks live traffic during a spike, and reruns your reports with the bot traffic left out.
Common questions
How do I identify AI traffic, and does it count as bot traffic?
AI traffic comes in two kinds, and only one of them is bots. AI crawlers, such as the ones ChatGPT and Perplexity use to read the web, are bots, but most of them don't run the tracking code on your pages, so they rarely appear in Google Analytics or PostHog at all. People who click a link inside a ChatGPT or Perplexity answer are real visitors, and they're often some of your best. Kite keeps the two apart, so it never filters out a real visitor just because an AI assistant sent them. To measure those visitors on purpose, see Track visitors from AI assistants.
Can Kite stop bots from reaching my website?
Kite's part of this job is finding bots in your data and keeping them out of your reports. Stopping bots before they reach your site is a job for the protection in front of your website, such as Cloudflare's bot protection or the controls your hosting provider offers, and for checks on your forms, such as a CAPTCHA or a hidden field that only software fills in. Kite tells you which pages and forms the bots are hitting, which is the information you need to decide where that protection should go.
Does filtering bot traffic delete any of my data?
No. In PostHog, Kite tags suspected bots and excludes them through your project's filter, so the original data stays in place and you can undo the change by removing the tag or the rule. In Google Analytics, Kite's corrected numbers come from reports it runs with the bot traffic left out, and your property's data stays as it is. PostHog can permanently delete people and their events, but Kite doesn't use that to filter bots, because a mistaken deletion can't be reversed.
How much bot traffic is normal?
Some bot traffic is normal for every website. Imperva's 2025 Bad Bot Report estimated that automated traffic made up just over half of all web traffic in 2024. Most of that never reaches your analytics, because it never runs your tracking code or is already filtered out. What matters is how much gets into the numbers you use for decisions. When a single source, location, or form accounts for a noticeable share of your visits or signups and none of it ever turns into a customer, it's worth finding and filtering out, whatever the overall percentage.
What if Kite flags a real customer as a bot?
Kite only labels activity as likely bot traffic when several signs line up, such as a signup seconds after landing, a throwaway email address, and no activity afterward. One odd signal on its own isn't enough. Before it filters anything, it shows you the list of flagged signups so you can spot a real customer, and in PostHog the tag comes off as easily as it went on. If you tell Kite a flagged account is real, it removes the tag and the account counts in your numbers again.