Jump to content


  • Posts

  • Joined

  • Last visited


2 Newbie

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 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.
  2. Thanks for these templates Web Dizajner! I will use these for my next project.
  3. 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.
  4. 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>
  5. 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
  6. 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!