How to Detect Bot Traffic Using Voluum

Although Voluum is an amazing tracker,  implementing bot detection techniques on live campaigns has always been quite troublesome.
In order to do that, one needed to either have some PHP server side scripts or a second campaign from where the bot traffic could be filtered, ending up in a chaotic mess of stats.

Here’s how to easily get rid of all the headaches of additional scripts and redirects without adding any delay to your landers and offers loading time.


– Enable Custom Conversion tracking in voluum.
– Use at least one landing page.
– Create your own offer for bot traffic.

– Detect both JS capable and incapable Bot clicks
– No additional delays in your landing page loading speed
– No need to create separate scripts to track your data (like passing parameters from one camp to another)
– Live Bot detection Always ON!

So if you are using Voluum and want to have a bot detection setup in place, try implementing the following setup.

Step 1: Enable Custom Conversion tracking needed to detect JS capable Bots.
Login to your voluum account and create a custom conversion event

Give a name and a value to your custom conversion event then move to Step 2. (screenshot below)

Step 2: Add 2 Multi-offer links to one of your landing pages. – Sends the bot click to the 1st offer in list (our bot detection offer) – Sends the real visitor to the 2nd offer in list (our real offer)

Note: Make sure to set the total number of offers to 2 when adding your new landing page to Voluum so that the traffic will flow accordingly based on the click link.

Because the browser engine will read our lander’s HTML from top to bottom, in this example w e are placing the hidden link right after the opening body tag <body>

<a href="" style="font-size: 6px; color:#423c15; position: absolute; left: -900px;">Click Here</a>

This link is not visible to our visitors, but almost every type of Bot can click on it. So whenever we see clicks to our own bot offer, we know that the visitor is NOT real.

In addition to that, to minimize fake clicks towards our real offer, we will set our lander’s call to action link behind a java script function, so that dummy bots that cannot process java will not be able to land to our real offer.
Here’s an example on how our cta code should look like and the java script function that contains our 2nd multi-offer link.

<a href="javascript:void(0)" rel="noreferrer" onclick="exit_offer();PreventExitPop = false" class="claim">

Add this to the bottom of your page before </body> tag for the cta button to work properly.

<script type="text/javascript">
     function exit_offer() {
            window.location = “”;

Step 3: Create your own JS Parse offer
This offer will fire only the custom conversion that we created on Step 1 without interfering to our campaign’s conversions. This means that each for each lp click that generates a custom conversion, it is coming from a bot that can parse java script, if no custom conversion is fired then this bot cannot parse java.

<!DOCTYPE html>

<script type="text/javascript">
function getToken(variable)
       var query =;
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
var goal = ""+getToken("cid")+"&et=continue";
function redir(){

<body onload="setTimeout(redir, 200);">

When adding JS Parse offer to your voluum, make sure to append the Click ID at the end of its url by adding ‘?cid={clickid}’ after the .html extension

After sending some traffic to your campaign with a similar setup as described above your stats should look like this.

As you can see from the above results, we can quickly view the number of clicks and custom conversions to our bot detection offer.

Lastly, to make this setup even more easy for you below you can find an example lander where we have added the hidden link as well the template of the Bot offer.

Bot Offer Template >>

3 Mobile Pops Landing Page Templates >>

2 Native Ad Landing Page Templates >>


  • June 27, 2019


    This is what I was looking for! Great!
    Can you please explain it how to read the data collected? A LP is visited by humans, dumb and js bots.
    I guess humnas generate visits and real offer clicks, js bots generate conversions, visits and clicks, dumb bots visits + clicks. So how to read the voluum report to spot the placement with bots – js or dumb?