Despite best efforts, discrepancies in statistics are still an issue for advertisers and publishers or between the advertiser’s statistics and the advertising platform's statistics. Certain amount of discrepancy is expected when comparing stats from different systems. There are many different reasons why discrepancies occur. For example, counting methodologies can differ between parties, as each party can potentially count an impression at a slightly different point in the delivery of an ad (i.e. publishers can count impressions at the time the ad request is sent, while advertisers can count an impression when the creative/ad is delivered).
Based on this the IAB recommends a tolerance of up to 10% discrepancy for ads viewed on desktop and 15 % for mobile and tablets. Discrepancies on mobile and tablets devices are usually higher compared to desktop campaigns. The mobile industry has not reached the same stability as desktop yet and as a result you can often face higher than usual discrepancy rate on mobile/tablet campaigns
Try focusing on the general trends instead of exact numbers since they always will differ. But if the discrepancies exceeded the IAB recommendations you might want to dig deeper. The following are some things to look for as you try to resolve the issue.
Lag between how long it takes a file to load and how long a user might stay on a page can lead to impression page drop offs. A page drop off occurs when a viewer leaves a page prior to a creative being loaded or a user may click on a link but navigate elsewhere before the landing page has loaded. It could also be occuring when something prevents the creative from loading completely, such as a loss of network connection or a crashed browser. A small amount of page drop off is normal due to typical page load issues and failed requests. The amount of drop off can rise if the creative is heavy, so check the file size during the investigation. For heavy creatives, a technique called polite loading could be used. When polite loading is used the impression count takes place when the page loads, and the heavy content is loaded after the fact. In rare cases, however, advertisers may mistakenly put the view tag, or impression tracking segment in the delayed piece, raising the discrepancy rate considerably.
One of the most common reasons for discrepancies is because reports from different platforms are in different time zones, (e.g. one platform uses CET, while another uses UTC). The time zone in Bannerflow Analytics is controlled by the time zone of your browser. Make sure time zones match in all reports before starting to compare statistics.
Ad blocking software can prevent the banner from being delivered by Bannerflow even though the DSP or publisher already has counted an impression.
Low impression goals
A small numerical discrepancy can cause a high percentage discrepancy if the banner set delivered few total impressions. For example, if you have a campaign delivering 100 impressions per day, a single-day discrepancy of 30 impressions lead to a single-day discrepancy of 30% even though the actual number of missed impressions is low.
Geo Mapping Mismatch
Differences in how geo mapping is determined may cause mismatches. Bannerflow uses MaxMind for geo mapping. It is possible our IP mapping might be different then the platform you compare us with.
Ad servers have different methods for filtering impressions and clicks from spammers, bots, spiders, back-to-back clicks, link analyzers, and other automated or non-representative web traffic. Let’s say you use an intermediary such as Integral Ad Science that quickly look at aspects of the ad call like geography or page content, and if they see something they don’t like, have the power to stop the ad from loading on the page. This most certainly causes an increased discrepancy, but the good news here is that you can often get some type of reporting or information from the verification company on why or on what pages the block happened.
Missing cache buster
Caching is a technique of storing content locally on a viewer’s computer that is commonly used by web browsers to improve the overall speed and performance of loading web pages. If caching is enabled in a viewer’s browser (enabled by default on all major browsers), the browser will save images (including tracking pixels) and other page elements to their computer the first time that a web page is visited. The next time that the same page is visited, the browser will load the images and elements saved locally on the viewer’s computer instead of pulling the content directly from the original server.
Bannerflow automatically implements cache busting to all tracking pixels of its creatives.
With multi-party ad serving, caching can lead to impression discrepancies if not all parties implement cache busting. If a third-party URL or ad tag is saved on a viewer's computer the first time that the ad is seen, then by default the ad will subsequently be pulled from the viewer's cache. Consequently, these ad impressions will not be tracked, which may cause impressions reported in one platform to differ significantly from the impressions recorded in another.
Bannerflow counts impression when creative starts loading by the user device, but it may be counted at a different time.
When are impressions counted?
To evaluate impressions counting, review when an impression is recorded in your system and compare that to when impressions are recorded by Bannerflow. The following is a list of when impressions might be recorded by others:
- At the time the creative starts loading by the user device
- At the time the creative is completely received by the user device.
- At the creative call time.
- At the "win notification" or "nurl" call reception time.
- At the creative display on the publisher page or app time.
- At an imp. tracking pixel call time contained in the creative code.
- At an imp. tracking pixel call time integrated as third-party pixel of the creative object. If an imp. tracking pixel is used, note whether it is JS or IMG type.
- At the redirection time, from the imp. tracking tech to the creative call.
- At the redirection time, from the imp. tracking tech to an imp tracking pixel contained in the creative code.
- At the redirection time, from the imp. tracking technology to an imp. tracking pixel integrated as a third-party pixel object of the Bannerflow creative object.
- Another custom time unique to your system.
Bannerflow counts impressions when creative starts loading by the user device. (For video, Bannerflow counts the impression when the first frame of the video is displayed.)
If you're counting impressions using any of the methods 2 - 4, discrepancies are typically below 10%. If you're counting impressions using any of the methods 5 - 11, the discrepancy between your system and Bannerflow is sometimes above 10% (because the time at which the two systems are counting impressions could be very different).
How are impressions counted?
In addition to when an impression is counted, you'll want to note how impressions are counted. Here are some possibilities:
- Impression tracking technology using a blacklist based on IP Address (blacklisting invalid traffic, robots, spiders)? Is this list IAB compliant?
- Is impression tracking technology counting the impressions for cookie-less users?
When and how are clicks counted?
When the user clicks the banner, Bannerflow's click tracking pixel is loaded. If the advertiser is using a 3rd party ad server the click tracker starts their click tracking chain simultaneously. By using a click tracking pixel Bannerflow doesn't add anything to the redirect chain and saves a few milliseconds on the users journey toward toward the landing page.
Need help? Do this first.
The obvious first step is to make sure you really and truly have a problem. One of the most common reasons people think they have a discrepancy problem is because they haven’t pulled the reports themselves, or are otherwise missing data. You can save yourself time and headache by taking this step first. To ensure that you are looking at the exact same tags over the exact same time period in both systems, re-pull the reporting yourself and control:
- Are you comparing the same date range?
- Do both Bannerflow and the third party use the same time zone?
- Are all tags generating impressions and clicks?
- Are any tags used in more than one network?
If there is indeed a problem follow these steps:
1. Retrieve a report that is as granular as possible including impression and clicks figures by day, creative size, device and geo if applicable and compare with your Bannerflow data.
If the discrepancy level is the same over all days, sizes, creatives, device and geo, you might need to continue to the next step.
2. Gather impression and click figures including browser and operating system data from the system you are comparing with.
3. File a case with Bannerflow Support and we’ll do our best to sort this out together with you. Be sure to provide your impression and click figures and your findings from Step 1 and 2 and review the reasons behind discrepancies described above and see if that gives you any clues.
Summary of common discrepancy causes:
- Your system and the Bannerflow system are not counting impressions and clicks the same way.
- Comparable figures are not from the same time zone.
- Creatives might be large and slow to load, introducing latency. This could result in users dropping off the web or app before all the counting pixels have been called.
- Counting pixels might be embedded in a lot of pixel containers, causing latency. Users might to drop off the web or app, again, before all the counting pixels have been called.
- Creatives could have daisy chain, multiple iframe compatibility issues. For example, could click tracking be blocked by an iframe that stops Bannerflow from tracking clicks as well. Ensure your creatives are not relying on features that are not expected to work in multiple Iframes.
- There could be broken code on publisher page that doesn't correctly display the ad or call the attached pixels.
- All the parties in chain are not using cache busting macros.
- Counting pixel server timeout.