Janneman

ClickTag click count doubles only on mobile devices?

Recommended Posts

Hello, 

 

Just spend almost the entire afternoon Googling and and browsing forums for this problem. Unfortunately without any answers thus far. So I'm hoping somebody here could help me figure this out. 

 

Recently I've created HTML5 banner ads for a clients using Cory Hudsons AdStarter FLA's (version 3.0) for Adobe Animate. See this post and link to the template file: https://theblog.adobe.com/creating-html5-ads-with-animate-cc-google-html5-ad-templates/ 

 

The publishing agency that now manages the campaign in DoubleClick has noticed abnormal differences in in CTR rates. It looks like the clickTag is fired more often or double specifically for banners that are being deployed on mobile.  Both Google and the publishing agency have checked the campaign. Only thing they could think of is a problem with the clickTag.

 

My questions: 

  • Is it possible that there’s something in the code of the template that causes the counter to double up the click count? And only when the ad is viewed clicked/touched upon on a mobile device?  ( Apparently CTR rates are normal for non mobile devices while I've used the same template for all the banners)
  • Can there be any other reason why clicks are abnormally high on mobile devices compared to desktop? 

 

Some info that might be useful: 

  • I did not manually alter any code, except for the exit url
  • Zip files passed all the test from the DoubleClick Html 5 validator 
  • All the banners were created using the above mentioned template (And thus use the same clickTag code) 
  • Unfortunately I’m not an expert at coding (that's why I used the templates mentioned above) 

 

I would really appreciate any help. Thanks! 

 

 

 

Share this post


Link to post
Share on other sites

Cory's a great guy. Very sharp. I'm not familiar with that template at all, and I don't have time to dig into it at the moment, but I wonder if maybe the difference on mobile has something to do with the event listeners. Mobile devices use touch whereas desktops don't, and many browsers must simulate mouse behavior on touch devices (otherwise older sites that weren't designed for mobile just wouldn't work). So, for example, some browsers will fire some combination of touchstart, touchend, mousedown, mouseup, and click events for a single tap. Some people listen for both touchstart and mousedown, for example, (or touchend and click maybe) so that it works on both types of devices. So maybe the problem is that multiple event handlers are firing for a single tap. 

 

Just a guess. Hopefully that nudges you in the right direction. Good luck with the project. 

Share this post


Link to post
Share on other sites

Thanks so much for replying! 

 

Your explanation confirm my thoughts on this matter. It definitely helps me narrow down on what to possibly look for when this is related to multiple events being triggered by a single tap. I will go and check the code to see if I can find out if that’s the case. 

 

Just to clarify, I did not mean to sound negative about Cory’s work in any way. His template enables me to create HTML 5 banner ads without expert knowledge in coding. So I’m super thankful and really respect the work and effort that went into creating the template. 

  

Thanks again for nudging me in this direction :-) 

  • Like 2

Share this post


Link to post
Share on other sites

Here’s a bit of a follow- up on this questions as this story continues and raises more questions. 

 

The banners are being used in two countries. (Same banners just in a different language). One publishing agency is using DoubleClick to manage the campaign, the other agency is using the Google Display Network (AdWords). 

 

The agency that uses Double Click is the only one getting abnormal results as mentioned in first post. The other agency has normal results.

This leads me to conclude that there might be something going on in the way that Google Double Click handles/ measures clicks. 

 

Let's assume that for some reason multiple events are being triggered by a single tap. Wouldn't the other agency also have to see abnormal values for the banners being deployed on mobile?  Does anyone agree? Or would there be more to it? 

 

Again, any help is appreciated!  

 

Here's the code generated by the template I'm using, maybe that helps:  

<!DOCTYPE html>
<!-- Adobe Animate CC DoubleClick AdStarter Template v.3.0, created by Cory Hudson, 06/22/16 -->
<html>
<head>
<meta charset="UTF-8">
<meta name="authoring-tool" content="Adobe_Animate_CC">
<title>VH_320x50</title>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- DoubleClick ad size meta tag -->
<meta name="ad.size" content="width=320,height=50">
<style>
html, body{
	margin: 0;
	padding: 0;
	background-color: #FFFFFF;
}
#canvas{
	position: absolute;
	top: 0px;
	left: 0px;
	-moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
	-webkit-tap-highlight-color: rgba(0,0,0,0);
	cursor: pointer;
}
#border{
	position: absolute;
	left: 0px;
	top: 0px;
	width: calc(320px - 2px);
	height: calc(50px - 2px);
	border: 1px solid #e4002b;
	pointer-events: none;
}
</style>
<script>
var clickTag = “”,
	canvas,
    stage,
    exportRoot,
    ad,
    failCount = 1;
function doClickthrough(evt){
	if(evt && evt.nativeEvent.which === 3){ return; } 
	window.open(clickTag, "_blank");
}
function init() {
	canvas = document.getElementById("canvas");
    /* uncomment if using AdHelper
     if (!createjs.AdHelper.isSupported()) {
        createjs.AdHelper.showAltImage(canvas, "backup_300x250.jpg", clickTag, "Adobe Animate CC", "_blank");
    }
    */
	images = images||{};
	ss = ss||{};
	var loader = new createjs.LoadQueue(false);
	loader.addEventListener("fileload", handleFileLoad);
	loader.addEventListener("complete", handleComplete);
	loader.loadManifest(lib.properties.manifest);
}
function handleFileLoad(evt) {	
	if (evt.item.type == "image") { images[evt.item.id] = evt.result; }	
}
function handleComplete(evt) {
	var queue = evt.target;
	var ssMetadata = lib.ssMetadata;
	for(i=0; i<ssMetadata.length; i++) {
		ss[ssMetadata[i].name] = new createjs.SpriteSheet( {"images": [queue.getResult(ssMetadata[i].name)], "frames": ssMetadata[i].frames} )
	}
	var preloaderDiv = document.getElementById("_preload_div_");
	preloaderDiv.style.display = 'none';
	canvas.style.display = 'block';
	exportRoot = new lib.VH_320x50();
	stage = new createjs.Stage(canvas);
	stage.addChild(exportRoot);
	stage.enableMouseOver();
createjs.Touch.enable(stage);
stage.enableMouseOver();
stage.snapToPixelEnabled = false;
stage.on("stagemouseup", doClickthrough);
createjs.Ticker.timingMode = createjs.Ticker.RAF_SYNCHED;
	createjs.Ticker.setFPS(lib.properties.fps);
	createjs.Ticker.addEventListener("tick", stage);
// uncomment the following block if using AdHelper
/*
ad = new createjs.AdHelper(stage)
		.setSleep(15,0,0)
		.timeSync()
		.watchFPS(20, 1)
		.highDPI(false);
	ad.on("slow", function(evt) {
		if (failCount === 0) {
			evt.preventDefault(); 
			failCount++; 
			this.watchFPS(20, 1); 
		} else if (failCount === 1){
			//createjs.AdHelper.showAltImage(canvas, "backup_300x250.jpg", clickTag, "Adobe Animate CC", "_blank");
		}
	});
    // trace out AdHelper events for testing purposes
	ad.on("sleep", trace);
	ad.on("wake", trace);
	ad.on("slow", trace);
	function trace(evt) {
		console.log("event: " + evt.type);
	};
 */	
	(function(isResp, respDim, isScale, scaleType) {		
		var lastW, lastH, lastS=1;		
		window.addEventListener('resize', resizeCanvas);		
		resizeCanvas();		
		function resizeCanvas() {			
			var w = lib.properties.width, h = lib.properties.height;			
			var iw = window.innerWidth, ih=window.innerHeight;			
			var pRatio = window.devicePixelRatio || 1, xRatio=iw/w, yRatio=ih/h, sRatio=1;			
			if(isResp) {                
				if((respDim=='width'&&lastW==iw) || (respDim=='height'&&lastH==ih)) {                    
					sRatio = lastS;                
				}				
				else if(!isScale) {					
					if(iw<w || ih<h)						
						sRatio = Math.min(xRatio, yRatio);				
				}				
				else if(scaleType==1) {					
					sRatio = Math.min(xRatio, yRatio);				
				}				
				else if(scaleType==2) {					
					sRatio = Math.max(xRatio, yRatio);				
				}			
			}			
			canvas.width = w*pRatio*sRatio;			
			canvas.height = h*pRatio*sRatio;
			canvas.style.width = preloaderDiv.style.width = w*sRatio+'px';			
			canvas.style.height = preloaderDiv.style.height = h*sRatio+'px';
			stage.scaleX = pRatio*sRatio;			
			stage.scaleY = pRatio*sRatio;			
			lastW = iw; lastH = ih; lastS = sRatio;		
		}
	})(false,'both',false,2);	
}
</script>
</head>
<body onload="init();">
	<canvas id="canvas" width="320" height="50" style="display: none; background-color:rgba(255, 255, 255, 1.00)"></canvas>
    <div id="border"></div>
    <div id='_preload_div_' style='display: inline-block; height:50px; width: 320px; vertical-align=middle;position:absolute;text-align: center;'>	<span style='display: inline-block; height: 100%; vertical-align: middle;'></span>	<img src=images/_preloader.gif style='vertical-align: middle; max-height: 100%'/></div>  
<!-- DoubleClick GreenSock -->
<script src="https://s0.2mdn.net/ads/studio/cached_libs/tweenmax_1.18.0_499ba64a23378545748ff12d372e59e9_min.js"></script>
<!-- DoubleClick CreateJs -->
<script src="https://s0.2mdn.net/ads/studio/cached_libs/createjs_2015.11.26_54e1c3722102182bb133912ad4442e19_min.js"></script>
<!-- uncomment the following block if using AdHelper -->
<!--
<script>
this.createjs=this.createjs||{},function(){"use strict";function e(e){this._stage=e,this.tickListener=null,this.awake=!0,this.sleepEnabled=!1,this.hidden=!1,this.pixelRatio=this._getBackingRatio(),this._time=0,this._awake=!0,this._sleepy=!1,this._sleepT=0,this._sleepMousedownT=null,this._sleepInBoundsT=null,this._sleepUseTicks=!1,this._mouseInDoc=!1,this._perfDelay=0,this._perfCount=0,this._perfThreshold=0,this._perfFPS=0,this._width=e.canvas.width,this._height=e.canvas.height,createjs.Ticker.on("tick",this)}var t=e.prototype;createjs.EventDispatcher&&(t=e.prototype=new createjs.EventDispatcher),e.isSupported=function(){return!!window.CanvasRenderingContext2D},e.showAltImage=function(t,i,s,n,h){return e.showAltHTML(t,(s?"<a target='"+(h||"_blank")+"' href='"+s+"'>":"")+"<img src='"+i+"' border='0' alt='"+(n||"")+"'>"+(s?"</a>":""))},e.showAltHTML=function(t,i){var s=document.createElement("div");return s.innerHTML=i||"",s.id="adAlt",e.showAlt(t,s)},e.showAlt=function(e,t){return"string"==typeof e&&(e=document.getElementById(e)),t.style.display="block",e.parentNode.replaceChild(t,e),t},t.timeSync=function(e){var t=void 0!==this._stage.masterFrameRate;if(this._stage.masterFrameRate=e||lib&&lib.properties&&lib.properties.fps||this._getTickerFPS(),t)return this;var i=createjs.Stage.prototype,s=createjs.MovieClip.prototype;return i.__tick=i._tick,i._tick=function(e){e.stage=this,this.__tick(e)},s.__tick=s._tick,s._tick=function(e){!this.ignoreMasterFrameRate&&e.stage&&(this.framerate=e.stage.masterFrameRate||null),this.__tick(e)},this},t.watchFPS=function(e,t){return this._perfFPS=e||.9*this._getTickerFPS()-1|0,this._perfThreshold=t||1,this._perfCount=0,this._perfDelay=5,this},t.highDPI=function(e,t){t=t||1;var i=this._getBackingRatio(),s=Math.max(1,(window.devicePixelRatio||1)/i),n=this._stage,h=n.canvas,a=h.style,r=this._width/t,o=this._height/t;return e===!1&&(s=1/i),h.width=r*s,h.height=o*s,a.width=r+"px",a.height=o+"px",n.scaleX=n.scaleY=s/t,this.pixelRatio=(1===i?s:e===!1?1:i)/t,this},t.setSleep=function(e,t,i,s,n){return null!=t&&stage.addEventListener("stagemousedown",this),null!=i&&(document.addEventListener("mouseout",this,!0),document.addEventListener("mousemove",this,!0)),this.tickListener=n||this._stage,this._sleepMousedownT=t,this._sleepInBoundsT=i,this._sleepUseTicks=!!s,this.sleepEnabled=!0,this._sleepy=!1,this._sleepT=null!=e?this._getTime()+1e3*e:0,this},t.sleep=function(e){return e?void(this._sleepT=this._getTime()+(e||0)):(this._sleepy=!1,this._sleepT=0,this._awake=!1,void this._sleep())},t.wake=function(e){this._sleepy=!1,null!=e?this._sleepT=Math.max(this._sleepT,this._getTime()+(e||0)):this._sleepT=0,this._awake=!0,this._wake()},t.handleEvent=function(e){if("tick"===e.type)this._tick(e);else if("stagemousedown"===e.type){var t=this._sleepMousedownT;this.sleepEnabled&&null!=t&&this.wake(1e3*t)}else"mousemove"===e.type?this._mouseInDoc=!0:"mouseout"===e.type&&(this._mouseInDoc=!1)},t._getTickerFPS=function(){return createjs.Ticker.timingMode==createjs.Ticker.RAF?60:createjs.Ticker.framerate},t._sleep=function(){this.awake&&(createjs.Ticker.paused=!0,this.tickListener&&createjs.Ticker.removeEventListener("tick",this.tickListener),window.TweenLite&&TweenLite.ticker&&TweenLite.ticker.sleep(),this.dispatchEvent("sleep"),this.awake=!1)},t._wake=function(){if(!this.awake){if(createjs.Ticker.paused=!1,this.tickListener&&createjs.Ticker.addEventListener("tick",this.tickListener),window.TweenLite){var e=TweenLite.ticker,t=e.frame;e.frame=1,e.wake(!0),e.frame=t}this.dispatchEvent("wake"),this.awake=!0}},t._tick=function(e){if(document.hidden||document.webkitHidden||document.mozHidden)return this.hidden=!0,this._sleep(),void(createjs.Sound&&(createjs.Sound.muted=!0));this.hidden&&(this.hidden=!1,this._awake&&this._wake(),this._perfDelay=3,createjs.Sound&&(createjs.Sound.muted=!1)),this._time+=this._sleepUseTicks?1:e.delta;var t;if(this._perfFPS&&--this._perfDelay<=0&&(t=createjs.Ticker.getMeasuredFPS(1))>-1){var i=1-Math.max(0,Math.min(1,t/this._perfFPS));this._perfCount=Math.max(0,this._perfCount+(0===i?-.2:i*i*.5+.1)),this._perfCount>this._perfThreshold&&(this._perfFPS=0,this.dispatchEvent(new createjs.Event("slow",!1,!0))&&(this.sleep(),this.sleepEnabled=!1))}this.sleepEnabled&&(null!=this._sleepInBoundsT&&this._stage.mouseInBounds&&this._mouseInDoc&&this.wake(1e3*this._sleepInBoundsT),this._sleepy?this.sleep():this._sleepT&&this._getTime()>=this._sleepT&&(this._sleepy=!0))},t._getTime=function(){return this._time},t._getBackingRatio=function(){var e=this._stage.canvas.getContext("2d");return e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||1},createjs.AdHelper=e}();
</script>
-->
<!-- Adobe Animate CC FLA JavaScript -->
<!-- <script src="VH_320x50.js"></script> -->
<script src="VH_320x50.js"></script> 
</body>
</html>


 

Share this post


Link to post
Share on other sites

My first thought was that DoubleClick might be automatically injecting code into your banner after you've delivered it that may have issues with your own code, so the actual trafficked ad is getting code added to it that you didn't create or QA. This is that typical code that gets injected (see below). You may have noticed this code if you've ever looked through the source of a banner ad online. You may want to ask if the actual trafficked ad had this code added or see if you can find one live and check the source and QA from there. Perhaps mobile is picking this up differently than desktop or there is some issue with that code and the template.

 

<script type="text/javascript">
    
      (function() {
        var relegateNavigation = '';
        var handleClickTagMessage = function(e) {
          try {
            var eventData = JSON.parse(e.data);
          } catch (err) {
            return;
          }
          if (eventData.isInitClickTag) {
            if (eventData.clickTags) {
              for (var i = 0; i < eventData.clickTags.length; i++) {
                var clkTag = eventData.clickTags[i];
                window[clkTag.name] = clkTag.url;
              }
            } else if (eventData.clickTag) {
              window.clickTag = eventData.clickTag;
            }
            relegateNavigation = eventData.relegateNavigation;
          }
        };

        if (open.call) {
          window.open = function(open) {
            return function(url, name, features) {
              if (relegateNavigation === 'parent') {
                var message = {'clickTag': url, 'isPostClickTag': true};
                parent.postMessage(JSON.stringify(message), '*');
              } else {
                var args = [url, name];
                if (features) {
                  args.push(features);
                }
                open.apply(window, args);
              }
            };
          }(window.open);
        }

        if (window.addEventListener) {
          window.addEventListener(
              'message', handleClickTagMessage, false);
        } else {
          window.attachEvent('onmessage', handleClickTagMessage);
        }
      })();
    
  </script>

 

  • Like 2

Share this post


Link to post
Share on other sites

Thanks davi for replying so quickly! Sounds plausible. It’s definitely helpful and will check this with the agency on Monday.  I will also look if I can find a banner online and check the source to see if anything was added.  Awesome advice.

Share this post


Link to post
Share on other sites

Don't use outdated templates

 

Use this template for DoubleClick

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$TITLE</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="ad.size" content="width=$WT,height=$HT">
<script src="https://s0.2mdn.net/ads/studio/cached_libs/createjs_2015.11.26_54e1c3722102182bb133912ad4442e19_min.js"></script>
<script src="https://s0.2mdn.net/ads/studio/cached_libs/tweenmax_1.18.0_499ba64a23378545748ff12d372e59e9_min.js"></script>
<script>var clickTag = "https://www.example.com"</script>
$CENTER_STYLE
$ANIMATE_CC_SCRIPTS
$SCRIPT_START
var canvas, stage, exportRoot, anim_container, dom_overlay_container, fnStartAnimation;
function init() {
	canvas = document.getElementById("$CANVAS_ID");
	anim_container = document.getElementById("$ANIM_CONTAINER_ID");
	dom_overlay_container = document.getElementById("dom_overlay_container");
	$CREATE_LOADER
	$LOAD_MANIFEST
	$PRELOAD_ASSETS
}
$HANDLE_FILE_LOAD_START
	$HANDLE_FILE_LOAD_BODY
$HANDLE_FILE_LOAD_END
$HANDLE_COMPLETE_START
	$CREATE_STAGE
	$START_ANIMATION
	$RESP_HIDPI
$HANDLE_COMPLETE_END
$PLAYSOUND
$SCRIPT_END
</head>
<body onload="init();" style="margin:0px;">
	<div id="$ANIM_CONTAINER_ID" onclick="window.open(window.clickTag)" style="background-color:$BG; width:$WTpx; height:$HTpx; cursor:pointer;">
		<canvas id="$CANVAS_ID" width="$WT" height="$HT" style="position: absolute; display: $CANVAS_DISP; background-color:$BG;"></canvas>
		<div id="dom_overlay_container" style="pointer-events:none; overflow:hidden; width:$WTpx; height:$HTpx; position: absolute; left: 0px; top: 0px; display: $CANVAS_DISP;">
		</div>
	</div>
    $PRELOADER_DIV
</body>
</html>

 

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

AdWords

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$TITLE</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="ad.size" content="width=$WT,height=$HT">
<script src="https://s0.2mdn.net/ads/studio/cached_libs/createjs_2015.11.26_54e1c3722102182bb133912ad4442e19_min.js"></script>
<script src="https://s0.2mdn.net/ads/studio/cached_libs/tweenmax_1.18.0_499ba64a23378545748ff12d372e59e9_min.js"></script>
$CENTER_STYLE
$ANIMATE_CC_SCRIPTS
$SCRIPT_START
var canvas, stage, exportRoot, anim_container, dom_overlay_container, fnStartAnimation;
function init() {
	canvas = document.getElementById("$CANVAS_ID");
	anim_container = document.getElementById("$ANIM_CONTAINER_ID");
	dom_overlay_container = document.getElementById("dom_overlay_container");
	$CREATE_LOADER
	$LOAD_MANIFEST
	$PRELOAD_ASSETS
}
$HANDLE_FILE_LOAD_START
	$HANDLE_FILE_LOAD_BODY
$HANDLE_FILE_LOAD_END
$HANDLE_COMPLETE_START
	$CREATE_STAGE
	$START_ANIMATION
	$RESP_HIDPI
$HANDLE_COMPLETE_END
$PLAYSOUND
$SCRIPT_END
</head>
<body onload="init();" style="margin:0px;">
	<div id="$ANIM_CONTAINER_ID" style="background-color:$BG; width:$WTpx; height:$HTpx; cursor:pointer;">
		<canvas id="$CANVAS_ID" width="$WT" height="$HT" style="position: absolute; display: $CANVAS_DISP; background-color:$BG;"></canvas>
		<div id="dom_overlay_container" style="pointer-events:none; overflow:hidden; width:$WTpx; height:$HTpx; position: absolute; left: 0px; top: 0px; display: $CANVAS_DISP;">
		</div>
	</div>
    $PRELOADER_DIV
</body>
</html>

 

  • Like 1

Share this post


Link to post
Share on other sites

Just export default template and change few things.

 

 

In HEAD

 

For both AdWords and DoubleClick add ad.size meta tag:

 

<meta name="ad.size" content="width=$WT,height=$HT">

 

Clear line for default hosted CreateJS library in default template:

 

$CREATEJS_LIBRARY_SCRIPTS

 

and add Google hosted CreateJS and TweenMax (if you need) libraries:

 

<script src="https://s0.2mdn.net/ads/studio/cached_libs/createjs_2015.11.26_54e1c3722102182bb133912ad4442e19_min.js"></script>
<script src="https://s0.2mdn.net/ads/studio/cached_libs/tweenmax_1.18.0_499ba64a23378545748ff12d372e59e9_min.js"></script>

 

You can add viewport meta tag for better preview on mobile:

 

<meta name="viewport" content="width=device-width, initial-scale=1">

 

For DoubleClick (Do not use for AdWords !!! , AdWords add own ClickTag on upload) add default ClickTag in head:

 

<script>var clickTag = "https://www.example.com"</script>

 

 

In BODY

 

For DoubleClick (Do not use for AdWords !!! , AdWords add own click event on upload) add click event on top div (<div id="$ANIM_CONTAINER_ID">):

 

onclick="window.open(window.clickTag)


For both AdWords and DoubleClick you can change cursor to point with style on top div (<div id="$ANIM_CONTAINER_ID">):

 

cursor:pointer

 

At the end you can clear all comments in template.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

On the publisher side (using DFP), I'm seeing the same issue with an advertiser using the same template. Were you able to confirm where the issue was happening?

Share this post


Link to post
Share on other sites

No unfortunately we were’nt able to pin point this down to one cause.

 

The thing davi mentioned in his post ( about code being automatically injected) is still a very likely cause. I tracked down some of the banners and saw that code was added (not specifically the code that davi mentioned).  In most cases the banners were wrapped in an iframe for example with code added to it. So I asked the publishing agency to check if they could see if specific domains stood out. To see if results happen randomly or not. Maybe it’s something worth checking for you too? 

 

In my case the 300x250 creative is standing out with the abnormal results. This is basically what the publishing agency told me : 

- Unknown domains have a very high CTR ( e.g. one impression, 3 clicks) 

- Some bigger apps have a high CTR ( possibly because ads are shown fullscreen) 

- 300x250 is regularly shown as a half page ad on mobile ( big part of the screen) 

 

As a general finding it seems that measurability on mobile is an issue. Banners are being deployed on mobile more and more, but not all websites and domains are able to convert this into accurate figures.

 

I think the biggest problem is that it’s out of our control what happens after banners are being deployed. Therefor it’s hard to track down where issues arise.

Share this post


Link to post
Share on other sites

It has been a long time ago, so my memory is fuzzy. I was asked to troubleshoot some SWFs that had crazy high clickthroughs. The crazy high clickthroughs were a result of double and triple counting (more clicks than impressions). I used the AdOps tool that could show the actionscript in a SWF without having an FLA to examine. There was some made no sense extra clicktag actionscript that did not break the clickability. Never solved why, but one suspected motivation is that crazy high clickthroughs make the banner ads creator look good.

 

Post SWF it would be easy to add something like that after the fact. I actually worked with sales reps who would go home and click on their advertisers' banner ads repeatedly. An improperly implemented close button (text, no hit area) and no close on roll off, on an expandable  actually made the monthly sales brag session with something like 99% clickthrough. Keeping advertisers happy is the only way sales people stay employed.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.