Internet Bots
A bot is an automated software application that makes requests over the internet. For a fuller overview, see the Wikipedia article on internet bots.
Some bots are good bots with a regulated pattern, and therefore beneficial to online businesses. Others have malicious intents and are mostly unregulated.
Segment doesn't offer an out-of-the-box solution to filter or ignore bot traffic.
As such, you generally have two options:
- Handle the filtering at the destination level. Some of Segment's destination partners, like Mixpanel, filter bots automatically. Others, such as Hubspot, allow you to set up bot filtering manually.
- Write custom logic that suppresses bot activity from being sent to Segment.
The advantage of filtering bots at a destination level is that it lets you implement a robust, easy-to-maintain solution. The downside is that bot traffic will still make it to Segment, affecting your MTU count.
To prevent bot traffic from reaching Segment in the first place, write your own custom code. The logic, in pseudo-code, would look something like this if you know a particular characteristic of the bot traffic to filter out, such as the userAgent:
1var robots = [useragent1, useragent2]2if ! window.navigator.userAgent in robots3// send analytics calls4analytics.track
The benefit here is that you would be able to limit the impact that bots have on your MTU count. On the flip side, it's much harder to implement and maintain a custom filter.
As a matter of policy, Segment doesn't provide refunds for bot-related MTU spikes, as bot traffic is out of Segment's control. However for extenuating circumstances, you can petition for a refund, assuming you're able to provide proof of the bot's effect.
Segment uses Amazon's hosting services, which are based in Boardman, Oregon. However many bots also originate from AWS in Boardman as well.
One way you can confirm whether or not traffic is coming from Segment vs. a bot is to check the userAgent of the inbound call. Segment's is:
1'Mozilla/5.0 (' + deviceModel.slice(0, -3) + '; CPU ' + osName + ' ' +2osVersion.replace(/\./g, '_') + ' like Mac OS X) AppleWebKit/600.1.4 (KHTML,3like Gecko) Version/' + osVersion.charAt(0) + '.0 Mobile/10B329 Safari/8536.25'