{"_id":"564f0d9aaf8ae235002db90e","project":"564621e00c30fb2100ba3814","user":"56499dade2efd717002afc83","parentDoc":null,"category":{"_id":"564dcf87d3320b0d0028ca10","version":"564621e10c30fb2100ba3817","__v":26,"pages":["564dcfb4d3320b0d0028ca11","564dd25da8671617004e7b71","564dd3a7e39c4435005a1f33","564ddbcbd3320b0d0028ca25","564ddcb2a8671617004e7b8e","564ddfffa8671617004e7b94","564de165a8671617004e7b97","564de17d9176e9170068007b","564de194e39c4435005a1f56","564de3d99176e9170068007e","564de439fe07a81700b5c3af","564ef3911e9a082b00344ea1","564f03dfedbade0d000efa57","564f0978234efc0d006e186e","564f0d9aaf8ae235002db90e","564f133e4f000617007bd68e","564f14d829338a1700beefcd","564f15619eb2701700532470","564f2fec6b10960d00865761","564f302b6b10960d00865764","564f33e219857f2b00387a44","564f35d110b21d3500ad29d3","564f42e41af2c835004bfbe9","564f456ab85ee335004cbdb3","5652e161b83d8e0d00d24b6b","56859949cfc7cf0d001cb3f5"],"project":"564621e00c30fb2100ba3814","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-11-19T13:32:55.176Z","from_sync":false,"order":6,"slug":"api-overview","title":"Ad Request API"},"version":{"_id":"564621e10c30fb2100ba3817","__v":15,"project":"564621e00c30fb2100ba3814","createdAt":"2015-11-13T17:46:09.275Z","releaseDate":"2015-11-13T17:46:09.275Z","categories":["564621e10c30fb2100ba3818","564624cf0c30fb2100ba3822","564628d69f3f550d00fa3db6","564dafeeda00e82b00ed601d","564daff8fc36dc3700882b95","564db0ccda00e82b00ed601f","564dcf87d3320b0d0028ca10","5661a6e436398e0d00f79566","568585153703ed1700e420b0","56858767d96a760d00545da6","56858d693703ed1700e420b2","56858d8d22c41b0d00e4666c","56859e9c009a8d0d00797130","5685a6453703ed1700e420d3","5a8bf8dbe86f530012159b73"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"__v":16,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-11-20T12:10:02.842Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":true,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":15,"body":"Here we capture common issues that a Publisher/Supply Partner may have.\nTypically, these issue(s) manifest with low earnings or figures being reported the MobFox dashboard incorrectly.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Render Rate (RR)\"\n}\n[/block]\nWe express the Render Rate as a % (Impressions/ads served*100). The Render Rate is one measure that the Exchange uses to establish the quality of an integration a typically good render rate is expected to be around the 90%+ mark.\n\nPoor Render rates can affect the ability of a property to monetise and cause issues with Demand Partners.\n\nSee below information that will help you address possible integration issues that could lead to a low render rate.\n\n## Render Rate Issues Troubleshooting\nThere are various factors that can affect your render rate.\n\n**The issue could be due to one or a combination of factors:**\n\n**1)** The possible incorrect parsing of our ad response.  \nIn the example below, there is a **htmlString** section. This section should be rendered on the device without being manipulated. Please use an XML/JSON parser to read this data because parsing it manually will lead to issues.\n\nIf you are adding your own impression to the markup before rendering it, please add that impression tracker at the very end of the HTML markup (not above and not in the middle).\n\nThe impression tracking URL is the URL that needs to be fired on the user device for us to recognise that the render occurred and we should count the impression.  \nThere can be multiple impression pixels (e.g. from multiple ad servers/partners).\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/25bee76-image001.png\",\n        \"image001.png\",\n        1340,\n        499,\n        \"#042340\"\n      ],\n      \"caption\": \"This an example of the full banner ad response.\"\n    }\n  ]\n}\n[/block]\nInside the markup we base64 the actual ad.\nThis is how the actual ad looks like when you [base64 decode](https://www.base64decode.org) the variable called **var markupB64**.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<!-- Ad markup with the click url -->\\n<a href=\\\"http://docs.mobfox.com/v1.0/docs/test-ad-landing-page\\\" target=\\\"_blank\\\"><img src=\\\"https://creativecdn.mobfox.com/e8e915f32ba95d3bf368a397a234875f.gif\\\" border=\\\"0\\\"/></a><br>\\n\\n<!-- Mobfox click tracker -->\\n<script type=\\\"text/javascript\\\">function mfClickTracker(){this.clickMacroName=\\\"MF_CLICK_URL\\\",this.clickUrl=\\\"http://nvirginia-callbacks.mobfox.com/exchange.click.php?h=06acc111f5bf8b19712bc74c48f0318f\\\",this.init=function(){var i=this;if(!i.clickUrl||i.clickUrl.indexOf(i.clickMacroName)>=0)return!1;\\\"undefined\\\"!=typeof mraid?\\\"loading\\\"===mraid.getState()?mraid.addEventListener(\\\"ready\\\",i.addMraidClickTracker):i.addMraidClickTracker():i.addDefaultClickTracker()},this.addDefaultClickTracker=function(){var i=this;document.addEventListener(\\\"click\\\",function(r){i.triggerClickTracker(i.clickUrl)});var r=setInterval(function(){var e=document.activeElement,c=e?e.tagName:\\\"\\\";\\\"IFRAME\\\"==(c=c.toUpperCase())&&(i.triggerClickTracker(i.clickUrl),clearInterval(r))},100)},this.addMraidClickTracker=function(){var i=this,r=mraid.open;mraid.open=function(e){i.triggerClickTracker(i.clickUrl),r(e)}},this.triggerClickTracker=function(i){if(void 0!==i&&i){var r=new XMLHttpRequest;r.onreadystatechange=function(){r.readyState==XMLHttpRequest.DONE&&r.status},r.open(\\\"GET\\\",i,!0),r.send()}}}var mfClick=new mfClickTracker;mfClick.init();</script>\\n\\n<!-- Mobfox impression tracker -->\\n<img style=\\\"position:absolute; left: -10000px;\\\" width=\\\"1\\\" height=\\\"1\\\" src=\\\"http://nvirginia-callbacks.mobfox.com/exchange.pixel.php?h=06acc111f5bf8b19712bc74c48f0318f\\\"/>\",\n      \"language\": \"html\",\n      \"name\": \"The actual ad\"\n    }\n  ]\n}\n[/block]\n**2)** If you are an aggregator of content then you may have a minimum amount of time that you wish MobFox to respond. If we do not respond with in that time threshold you may ignore our response\n\n**The following scenarios could be the cause of the low impression count:**\n\n**1)** You have a mediation layer and an ad is served to you but the mediation layer denies use of the ad. If this is the case please contact technical support to discuss this problem.\n\n**2)** You conduct some sort of internal auction and do not use all ads served.\n\n**3)** You parse our response and strip out the impression beacon. \nThis will result in no earnings.\n\n**4)** You cache the ad and the click URL [more than allowed](doc:caching-ads)\nIf the impression beacon does not fire, your inventory will not be paid the appropriate revenue for the impression. Our system also counts clicks without impressions. This results in the CTR being greater than 100%.\n\n**5)** Mobfox SSP times out and you do not receive the ad markup so you cannot render it.\nIf that is the case, please contact us.\n\n## Possible Resolutions\n**1)** Do not parse the ad response. Render the [CDATA] section without manipulation. \nPlease do not cache banners or click links as they all have unique identifiers.\n\n**2)** Firing the impression beacon on the server side can not be considered a resolution to this issue.  Our system will recognise this behaviour and will not allow revenue from server side impression beacon firing. See point 3 below.\n\n**3)** The system cross checks both the User Agent (UA) and the IP address between 3 specific events (Ad request, Impression and Click) both the UA and IP must match between the 3 events for us the system to accept the advertising activity from your publications or inventories. \n\n**4)** If you must parse the ad response to enable click counting for your system, ensure that the redirect of the user on to our click URL is performed in the most efficient manner possible.\nThis is necessary  to reduce the render time of the Landing Page.\nPlease bear in mind that the click URL must originate from the device, do not insert a click counter in front of the MobFox click URL.","excerpt":"Supply Side Issues","slug":"common-publisher-issues-supply-side-issues","type":"basic","title":"Common Publisher Issues"}

Common Publisher Issues

Supply Side Issues

Here we capture common issues that a Publisher/Supply Partner may have. Typically, these issue(s) manifest with low earnings or figures being reported the MobFox dashboard incorrectly. [block:api-header] { "type": "basic", "title": "Render Rate (RR)" } [/block] We express the Render Rate as a % (Impressions/ads served*100). The Render Rate is one measure that the Exchange uses to establish the quality of an integration a typically good render rate is expected to be around the 90%+ mark. Poor Render rates can affect the ability of a property to monetise and cause issues with Demand Partners. See below information that will help you address possible integration issues that could lead to a low render rate. ## Render Rate Issues Troubleshooting There are various factors that can affect your render rate. **The issue could be due to one or a combination of factors:** **1)** The possible incorrect parsing of our ad response. In the example below, there is a **htmlString** section. This section should be rendered on the device without being manipulated. Please use an XML/JSON parser to read this data because parsing it manually will lead to issues. If you are adding your own impression to the markup before rendering it, please add that impression tracker at the very end of the HTML markup (not above and not in the middle). The impression tracking URL is the URL that needs to be fired on the user device for us to recognise that the render occurred and we should count the impression. There can be multiple impression pixels (e.g. from multiple ad servers/partners). [block:image] { "images": [ { "image": [ "https://files.readme.io/25bee76-image001.png", "image001.png", 1340, 499, "#042340" ], "caption": "This an example of the full banner ad response." } ] } [/block] Inside the markup we base64 the actual ad. This is how the actual ad looks like when you [base64 decode](https://www.base64decode.org) the variable called **var markupB64**. [block:code] { "codes": [ { "code": "<!-- Ad markup with the click url -->\n<a href=\"http://docs.mobfox.com/v1.0/docs/test-ad-landing-page\" target=\"_blank\"><img src=\"https://creativecdn.mobfox.com/e8e915f32ba95d3bf368a397a234875f.gif\" border=\"0\"/></a><br>\n\n<!-- Mobfox click tracker -->\n<script type=\"text/javascript\">function mfClickTracker(){this.clickMacroName=\"MF_CLICK_URL\",this.clickUrl=\"http://nvirginia-callbacks.mobfox.com/exchange.click.php?h=06acc111f5bf8b19712bc74c48f0318f\",this.init=function(){var i=this;if(!i.clickUrl||i.clickUrl.indexOf(i.clickMacroName)>=0)return!1;\"undefined\"!=typeof mraid?\"loading\"===mraid.getState()?mraid.addEventListener(\"ready\",i.addMraidClickTracker):i.addMraidClickTracker():i.addDefaultClickTracker()},this.addDefaultClickTracker=function(){var i=this;document.addEventListener(\"click\",function(r){i.triggerClickTracker(i.clickUrl)});var r=setInterval(function(){var e=document.activeElement,c=e?e.tagName:\"\";\"IFRAME\"==(c=c.toUpperCase())&&(i.triggerClickTracker(i.clickUrl),clearInterval(r))},100)},this.addMraidClickTracker=function(){var i=this,r=mraid.open;mraid.open=function(e){i.triggerClickTracker(i.clickUrl),r(e)}},this.triggerClickTracker=function(i){if(void 0!==i&&i){var r=new XMLHttpRequest;r.onreadystatechange=function(){r.readyState==XMLHttpRequest.DONE&&r.status},r.open(\"GET\",i,!0),r.send()}}}var mfClick=new mfClickTracker;mfClick.init();</script>\n\n<!-- Mobfox impression tracker -->\n<img style=\"position:absolute; left: -10000px;\" width=\"1\" height=\"1\" src=\"http://nvirginia-callbacks.mobfox.com/exchange.pixel.php?h=06acc111f5bf8b19712bc74c48f0318f\"/>", "language": "html", "name": "The actual ad" } ] } [/block] **2)** If you are an aggregator of content then you may have a minimum amount of time that you wish MobFox to respond. If we do not respond with in that time threshold you may ignore our response **The following scenarios could be the cause of the low impression count:** **1)** You have a mediation layer and an ad is served to you but the mediation layer denies use of the ad. If this is the case please contact technical support to discuss this problem. **2)** You conduct some sort of internal auction and do not use all ads served. **3)** You parse our response and strip out the impression beacon. This will result in no earnings. **4)** You cache the ad and the click URL [more than allowed](doc:caching-ads) If the impression beacon does not fire, your inventory will not be paid the appropriate revenue for the impression. Our system also counts clicks without impressions. This results in the CTR being greater than 100%. **5)** Mobfox SSP times out and you do not receive the ad markup so you cannot render it. If that is the case, please contact us. ## Possible Resolutions **1)** Do not parse the ad response. Render the [CDATA] section without manipulation. Please do not cache banners or click links as they all have unique identifiers. **2)** Firing the impression beacon on the server side can not be considered a resolution to this issue. Our system will recognise this behaviour and will not allow revenue from server side impression beacon firing. See point 3 below. **3)** The system cross checks both the User Agent (UA) and the IP address between 3 specific events (Ad request, Impression and Click) both the UA and IP must match between the 3 events for us the system to accept the advertising activity from your publications or inventories. **4)** If you must parse the ad response to enable click counting for your system, ensure that the redirect of the user on to our click URL is performed in the most efficient manner possible. This is necessary to reduce the render time of the Landing Page. Please bear in mind that the click URL must originate from the device, do not insert a click counter in front of the MobFox click URL.