{"id":139026,"date":"2025-03-17T06:41:15","date_gmt":"2025-03-17T06:41:15","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/measure-ad-and-content-blocker-impact\/"},"modified":"2025-03-17T06:41:15","modified_gmt":"2025-03-17T06:41:15","slug":"measure-ad-and-content-blocker-impact","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=139026","title":{"rendered":"Measure Ad And Content Blocker Impact"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>So, looks like iOS 9 has built-in support for integrating \u201c<a href=\"https:\/\/developer.apple.com\/videos\/wwdc\/2015\/?id=511\">content blocking<\/a>\u201d extensions on your iPhone. Now, blocking ads and other intrusive content is nothing new, nor do I want to get into a debate about whether it\u2019s a good thing or not. But as a data geek I\u2019m very interested in knowing just what share of my site tracking has some content blocker enabled. In this post, I\u2019ll show two tricks (easy and advanced) to expose these content blockers. It\u2019s always a good idea to keep tabs on the numbers, especially if you\u2019re concerned about them blocking your analytics tools as well (as you should be!).<\/p>\n<div style=\"aspect-ratio: 1158 \/ 464;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2015\/10\/adblock.jpg\" title=\"Detect AdBlock with GTM and GA\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"464\" width=\"1158\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2015\/10\/adblock.jpg#ZgotmplZ\" alt=\"Detect AdBlock with GTM and GA\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The two solutions I\u2019m going to introduce differ in their accuracy. Both require that you upload a small file to your web server. After that, the accuracy depends on whether or not you\u2019re interested in knowing how many of these content blockers end up blocking <a href=\"https:\/\/tagmanager.google.com\/\">Google Tag Manager<\/a> as well! As it turns out, there are some that do, and you might want to measure that traffic as well.<\/p>\n<p><strong>NOTE<\/strong>! Just to dispel any confusion, the following solutions <strong>will not<\/strong> work if Google Analytics tracking is blocked by preventing the HTTP request from ever leaving the site. The hack using an <code>XMLHttpRequest()<\/code> will circumvent those blockers which simply prevent analytics.js from loading, but it will not help if the HTTP request to Google Analytics is blocked. To measure THAT share of traffic in GA, you\u2019ll need to relay the hits via a local web server endpoint, and send the Measurement Protocol hit to Google Analytics from your web server, where ad and content blockers can\u2019t reach it.<\/p>\n<p>                <span class=\"simmer\"><br \/>\n  <span class=\"close\">X<\/span><\/p>\n<p>\n    <span class=\"fa fa-md fa-bell\"\/><br \/>\n    <strong>The Simmer Newsletter<\/strong>\n  <\/p>\n<p>\n    Subscribe to the <a href=\"https:\/\/www.simoahava.com\/newsletter\/\">Simmer newsletter<\/a> to get the latest news and content from Simo Ahava into your email inbox!\n  <\/p>\n<p>  <\/span><\/p>\n<h2 id=\"create-the-javascript-file-and-upload-it\">Create the JavaScript file and upload it<\/h2>\n<p>First thing you need to do is create a simple JavaScript file called <code>advertisement.js<\/code> and upload it to the web server. This file has just one single line:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-javascript\" data-lang=\"javascript\"><span style=\"color:#0aa\">window<\/span>[<span style=\"color:#a50\">'noBlocker'<\/span>] = <span style=\"color:#00a\">true<\/span>;\n<\/code><\/pre>\n<\/div>\n<p>This file functions as <strong>bait<\/strong>. It has the most blatant name you could think to give to an ad library, so most of the blockers should latch onto it with their greedy, publishers\u2019-livelihood-decimating-tendrils.<\/p>\n<p>You need to upload this file to some location on your web server where you can link to it from your page template (or from GTM). Because I\u2019m using WordPress, I uploaded it to the directory <code>\/wp-content\/<\/code>.<\/p>\n<p>Once you\u2019ve done this, you can follow either the easy solution (coming up soon), or the more intricate one (coming up later in the article). But start by reading the generic GTM configuration you\u2019ll need for either approach.<\/p>\n<h2 id=\"google-tag-manager-configuration\">Google Tag Manager configuration<\/h2>\n<p>First, you\u2019ll need a <strong>Custom JavaScript Variable<\/strong>, which we\u2019ll call <strong>{{JS &#8211; noBlocker}}<\/strong>. This Variable has the following code within:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-javascript\" data-lang=\"javascript\"><span style=\"color:#00a\">function<\/span>() {\n  <span style=\"color:#00a\">return<\/span> <span style=\"color:#0aa\">window<\/span>[<span style=\"color:#a50\">'noBlocker'<\/span>] ? <span style=\"color:#00a\">undefined<\/span> : <span style=\"color:#a50\">'true'<\/span>;\n}\n<\/code><\/pre>\n<\/div>\n<p>This will return nothing if the <code>advertisement.js<\/code> file loaded and created the global variable, and <strong>\u2018true\u2019<\/strong> if the file was not loaded. In other words, if a content blocker blocked <code>advertisement.js<\/code>, this Variable will return \u2018true\u2019.<\/p>\n<p>Next, you\u2019ll need to create a Custom Dimension in Google Analytics. I\u2019ve chosen <strong>Session<\/strong> as the scope, as Hit-level might be too granular, and User-level might be too broad. But it\u2019s up to you. When you create the Custom Dimension, make note of the <strong>Index<\/strong> number that GA assigns to it.<\/p>\n<div style=\"aspect-ratio: 1264 \/ 1352;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2015\/10\/cd-ga.jpg\" title=\"Custom Dimension in GA\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1352\" width=\"1264\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2015\/10\/cd-ga.jpg#ZgotmplZ\" alt=\"Custom Dimension in GA\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Next, edit your generic <strong>Page View<\/strong> Tag. You need to add a new Custom Dimension row to it, with the Index number derived from Google Analytics\u2019 settings, where you just created the new dimension. The value of this dimension needs to be the Custom JavaScript Variable you created earlier. So it would look like this:<\/p>\n<div style=\"aspect-ratio: 1600 \/ 624;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2015\/10\/gtm-cd.jpg\" title=\"Custom Dimension - GTM\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"624\" width=\"1600\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2015\/10\/gtm-cd.jpg#ZgotmplZ\" alt=\"Custom Dimension - GTM\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Let\u2019s look at what\u2019s going on here. When this Tag fires, it tries to populate Custom Dimension with Index number 4 with whatever the variable <strong>{{JS &#8211; noBlocker}}<\/strong> returns. If the site did not load the file <code>advertisement.js<\/code>, this dimension gets the value <strong>\u2018true\u2019<\/strong>, which is what\u2019s dispatched to Google Analytics. If the file <em>did<\/em> load, the variable returns <code>undefined<\/code>, and the dimension <a href=\"https:\/\/www.simoahava.com\/gtm-tips\/undefined-dimensions-wont-get-sent\/\">does not get sent<\/a>.<\/p>\n<p>And that\u2019s the generic setup! That\u2019s how we\u2019ll know if a content blocker is running on the site or not.<\/p>\n<p>Next, we\u2019ll need to choose how to link the file to the site, and whether or not we want to account for blockers that actually block GTM as well.<\/p>\n<h2 id=\"easy-link-the-file-via-gtm\">Easy: link the file via GTM<\/h2>\n<p>This is the \u201ceasy\u201d setup, as we\u2019ll be only using Google Tag Manager to upload <code>advertisement.js<\/code>.<\/p>\n<p>Start by creating a new <strong>Custom HTML Tag<\/strong>, named <strong>SETUP &#8211; Link to advertisement.js<\/strong>. This has the following code within:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-html\" data-lang=\"html\">script&gt;\n  (<span style=\"color:#00a\">function<\/span>() {\n    <span style=\"color:#00a\">var<\/span> d = <span style=\"color:#0aa\">document<\/span>.createElement(<span style=\"color:#a50\">'script'<\/span>);\n    d.src = <span style=\"color:#a50\">'\/wp-content\/advertisement.js'<\/span>; <span style=\"color:#aaa;font-style:italic\">\/\/ Modify this!\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#0aa\">document<\/span>.head.appendChild(d);\n  })();\n<span style=\"color:#1e90ff;font-weight:bold\">script<\/span>&gt;<\/code><\/pre>\n<\/div>\n<p>This creates a new element in the DOM (a <code>script<\/code> element), adds a link to the file you\u2019ve uploaded earlier, and then appends it to the <code>head<\/code> of the document. Remember to modify the line with <code>d.src = ...<\/code> to reflect the actual location where you\u2019ve uploaded the file to!<\/p>\n<p>Save the Tag. <strong>Note!<\/strong> Do NOT add any Triggers to it. Just save it. Good.<\/p>\n<p>Next, open your <strong>Page View Tag<\/strong> (the one where you just added the Custom Dimension to), and open <strong>Advanced Settings<\/strong> -&gt; <strong>Tag Sequencing<\/strong>.<\/p>\n<p>Under Tag Sequencing, check the box for \u201cFire a tag before <em>Page View Tag<\/em> fires\u201d, and choose the <strong>SETUP &#8211; Link to advertisement.js<\/strong> from the drop-down list.<\/p>\n<div style=\"aspect-ratio: 1104 \/ 858;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2015\/10\/tag-sequencing.jpg\" title=\"Tag Sequencing setup\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"858\" width=\"1104\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2015\/10\/tag-sequencing.jpg#ZgotmplZ\" alt=\"Tag Sequencing setup\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Save the Page View Tag.<\/p>\n<p>Here\u2019s what\u2019s going to happen. When it\u2019s time for the Page View Tag to fire, the Custom HTML Tag is first executed. This Tag links to and executes the <code>advertisement.js<\/code> file you\u2019ve uploaded to your web server. Next, the Page View Tag fires, and the Custom JavaScript Variable either detects a content blocker (if one is activated) or doesn\u2019t (if one isn\u2019t activated), and sends the Custom Dimension accordingly.<\/p>\n<p>Still with me? That\u2019s all you\u2019ll need. After this, data will start flowing in with your Page View Tags, annotating sessions which have a content blocker with the value <strong>\u2018true\u2019<\/strong> in the new Custom Dimension field.<\/p>\n<h2 id=\"advanced-page-template-magic\">Advanced: Page Template magic<\/h2>\n<p>This is more advanced, as it requires you to modify the page template, but it will also account for traffic which also blocks Google Tag Manager (the b*stards!). It\u2019s not a large share by any count, but it\u2019s still something you might want to be wary of.<\/p>\n<p><strong>NOTE!<\/strong> This solution uses a <code>XMLHttpRequest<\/code> to dispatch the data to GA, and many blockers filter block these requests as well. So you might be left with no other option than to send the data to an endpoint you own and are certain is not blocked by these tools. That\u2019s left up to you and your developers, of course.<\/p>\n<p>Let\u2019s start with the technical stuff first.<\/p>\n<p>You\u2019ll need to add the following tag to the page template <strong>before the Google Tag Manager container snippet<\/strong>. The logical place for it is in the <code\/> of the document.<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-html\" data-lang=\"html\">script <span style=\"color:#1e90ff\">src<\/span>=<span style=\"color:#a50\">\"\/wp-content\/advertisement.js\"<\/span>&gt;<span style=\"color:#1e90ff;font-weight:bold\">script<\/span>&gt;<\/code><\/pre>\n<\/div>\n<p>Remember to change the value of the <code>src<\/code> attribute to reflect the actual location of the file.<\/p>\n<p>Next, add the following minified JavaScript code to the template as well. You can add it anywhere you want in the template, though adding it to the very end is logical as it\u2019s just synchronous JavaScript.<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-html\" data-lang=\"html\">script&gt;!<span style=\"color:#00a\">function<\/span>(d,e){<span style=\"color:#0aa\">window<\/span>.addEventListener(<span style=\"color:#a50\">'load'<\/span>,<span style=\"color:#00a\">function<\/span>(){<span style=\"color:#00a\">if<\/span>(!<span style=\"color:#0aa\">window<\/span>.noBlocker&amp;&amp;!<span style=\"color:#0aa\">window<\/span>.google_tag_manager){<span style=\"color:#00a\">for<\/span>(<span style=\"color:#00a\">var<\/span> t=<span style=\"color:#00a\">new<\/span> XMLHttpRequest,n=(<span style=\"color:#00a\">new<\/span> <span style=\"color:#0aa\">Date<\/span>).getTime()+<span style=\"color:#0aa\">Math<\/span>.floor(<span style=\"color:#099\">1<\/span>e8*<span style=\"color:#0aa\">Math<\/span>.random()),o=<span style=\"color:#a50\">'ab_gc='<\/span>,a=<span style=\"color:#0aa\">document<\/span>.cookie.split(<span style=\"color:#a50\">';'<\/span>),i=<span style=\"color:#099\">0<\/span>;i<a.length style=\"color:#00a\">for(<span style=\"color:#00a\">var<\/span> c=a[i];<span style=\"color:#a50\">' '<\/span>==c.charAt(<span style=\"color:#099\">0<\/span>);)c=c.substring(<span style=\"color:#099\">1<\/span>);<span style=\"color:#099\">0<\/span>==c.indexOf(o)&amp;&amp;(n=c.substring(o.length,c.length))}t.open(<span style=\"color:#a50\">'POST'<\/span>,<span style=\"color:#a50\">'https:\/\/www.google-analytics.com\/collect'<\/span>);<span style=\"color:#00a\">var<\/span> r=<span style=\"color:#a50\">'tid='<\/span>+e+<span style=\"color:#a50\">'&amp;cd'<\/span>+d+<span style=\"color:#a50\">'=true&amp;t=pageview&amp;dp='<\/span>+<span style=\"color:#0aa\">document<\/span>.location.pathname+<span style=\"color:#a50\">'&amp;v=1&amp;cid='<\/span>+n;t.send(r);<span style=\"color:#00a\">var<\/span> g=<span style=\"color:#00a\">new<\/span> <span style=\"color:#0aa\">Date<\/span>;g.setTime(g.getTime()+<span style=\"color:#099\">63072<\/span>e6);<span style=\"color:#00a\">var<\/span> d=<span style=\"color:#a50\">'expires='<\/span>+g.toUTCString();<span style=\"color:#0aa\">document<\/span>.cookie=<span style=\"color:#a50\">'ab_gc='<\/span>+n+<span style=\"color:#a50\">'; '<\/span>+d}})}(<span style=\"color:#a50\">'1'<\/span>,<span style=\"color:#a50\">'UA-1234567-1'<\/span>);<span style=\"color:#1e90ff;font-weight:bold\">script<\/span>&gt;<\/a.length><\/code><\/pre>\n<\/div>\n<p>It looks nasty, I know! Read through the following bit carefully.<\/p>\n<p>This script adds a <strong>window.onload<\/strong> listener, which fires after the entire <code>window<\/code> object has loaded. In other words, it waits for the page load <strong>and<\/strong> all scripts, images, and external assets to load as well.<\/p>\n<p>Next, it checks for the existence of the <code>noBlocker<\/code> global variable, which, if you remember, is created in the <code>advertisement.js<\/code> file. It also checks for the existence of the <code>google_tag_manager<\/code> object, which is created by Google Tag Manager.<\/p>\n<p>If both of these are missing, it means that a content blocker has <strong>blocked both <code>advertisement.js<\/code> and GTM!<\/strong>. How rude!<\/p>\n<p>If these are blocked, the script proceeds with the following:<\/p>\n<ol>\n<li>\n<p>Create a new randomized clientId, using the current timestamp and a random number.<\/p>\n<\/li>\n<li>\n<p>If a cookie named <code>ab_gc<\/code> exists, use its value as the clientId instead.<\/p>\n<\/li>\n<li>\n<p>Fire a Measurement Protocol hit to Google Analytics, using the clientId established in either step (1) or (2), and send the hit as a Page View, using the current page as the location, and setting the value \u2018true\u2019 to a custom dimension.<\/p>\n<\/li>\n<li>\n<p>Write\/update the cookie <code>ab_gc<\/code> with the clientId.<\/p>\n<\/li>\n<\/ol>\n<p>One important thing to note here. See the very last parentheses in the script: <code>('1','UA-1234567-1')<\/code>? You need to update those yourself.<\/p>\n<p>The first value in the parentheses is the index number of the Custom Dimension you want to send details about the ad blocker to. You can, for example, just use the Custom Dimension you created earlier, or you can do what I\u2019ve done.<\/p>\n<p>I created a <strong>new Google Analytics property<\/strong> to collect these hits, and the Custom Dimension is a hit-scoped dimension, used in an <strong>Include Only<\/strong> filter on the reporting view. In other words, this new property will only accept hits that have this Custom Dimension in them, meaning it will only collect data from users that block both <code>advertisement.js<\/code> and GTM (grrr!).<\/p>\n<p>So that\u2019s what the second value in the parentheses is. It\u2019s the property ID where you want to dispatch the data to. Personally, I wouldn\u2019t use my main property, as this data simply isn\u2019t comparable. It\u2019s programmatically created, and is very limited as to what information is sent. You can, of course, populate all the dimension fields with some clever JavaScript magic, but I\u2019m not that interested in all those gimmicks.<\/p>\n<p>I\u2019m just interested in knowing how many sessions are blocking both ads <em>and<\/em> GTM (stop it!).<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>What you do next is up to you. You can create a custom report with session shares for those with a ad blocker vs. those without. With this data, you can optimize your site, making sure no critical information is behind potentially blocked sources.<\/p>\n<p>There are <a href=\"https:\/\/github.com\/sitexw\/FuckAdBlock\">other<\/a> <a href=\"http:\/\/esd.io\/blog\/detecting-adblock-javascript.html\">solutions<\/a> out there as well that you might want to check out.<\/p>\n<p>Uploading the <code>advertisement.js<\/code> might not be the most robust solution out there, as it doesn\u2019t require too much imagination from content blockers to disregard this file in the future. Some methods of blocker detection include creating elements in the DOM which resemble slots for advertisements. These will probably work nicely as well.<\/p>\n<p>With this solution, you\u2019ll get some useful information about content blocker shares on your site, and you can immediately act on this information.<\/p>\n<p>I really, really, wish Google Tag Manager wouldn\u2019t be blocked, as it\u2019s not an advertisement or content distribution platform by itself. It\u2019s just a JavaScript injector that can be used for benevolent, cool stuff as well.<\/p>\n<p>Do note that one thing that\u2019s missing is checking whether or not <strong>Google Analytics<\/strong> was blocked but <strong>Google Tag Manager<\/strong> wasn\u2019t. That\u2019s an interesting use case as well, and it\u2019s simple enough to do with a check for <code>window['GoogleAnalyticsObject']<\/code> upon page load. You can do this via GTM or in the page template as well &#8211; it just requires some customization.<\/p>\n<p>Do you have other tips for detecting ad and content blockers? What results are you seeing? On my blog, content blockers account for around <strong>25 %<\/strong> of the sessions, and those who block GTM as well are very few (but they do exist).<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>So, looks like iOS 9 has built-in support for integrating \u201ccontent blocking\u201d extensions on your iPhone. Now, blocking ads and other intrusive content is nothing new, nor do I want to get into a debate about whether it\u2019s a good thing or not. But as a data geek I\u2019m very interested in knowing just what [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":139027,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[35363,7222,4197,16556],"dealstore":[],"offerexpiration":[],"class_list":["post-139026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-blocker","tag-content","tag-impact","tag-measure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Measure Ad And Content Blocker Impact - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=139026\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Measure Ad And Content Blocker Impact - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"So, looks like iOS 9 has built-in support for integrating \u201ccontent blocking\u201d extensions on your iPhone. Now, blocking ads and other intrusive content is nothing new, nor do I want to get into a debate about whether it\u2019s a good thing or not. But as a data geek I\u2019m very interested in knowing just what [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=139026\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-17T06:41:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1158\" \/>\n\t<meta property=\"og:image:height\" content=\"464\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=139026#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Measure Ad And Content Blocker Impact\",\"datePublished\":\"2025-03-17T06:41:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026\"},\"wordCount\":1902,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg\",\"keywords\":[\"Blocker\",\"Content\",\"Impact\",\"Measure\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=139026#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=139026\",\"url\":\"https:\/\/fivemor.com\/?p=139026\",\"name\":\"Measure Ad And Content Blocker Impact - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg\",\"datePublished\":\"2025-03-17T06:41:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=139026#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=139026\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=139026#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg\",\"width\":1158,\"height\":464},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=139026#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Measure Ad And Content Blocker Impact\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Measure Ad And Content Blocker Impact - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=139026","og_locale":"en_US","og_type":"article","og_title":"Measure Ad And Content Blocker Impact - Som2ny Network","og_description":"So, looks like iOS 9 has built-in support for integrating \u201ccontent blocking\u201d extensions on your iPhone. Now, blocking ads and other intrusive content is nothing new, nor do I want to get into a debate about whether it\u2019s a good thing or not. But as a data geek I\u2019m very interested in knowing just what [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=139026","og_site_name":"Som2ny Network","article_published_time":"2025-03-17T06:41:15+00:00","og_image":[{"width":1158,"height":464,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=139026#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=139026"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Measure Ad And Content Blocker Impact","datePublished":"2025-03-17T06:41:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=139026"},"wordCount":1902,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=139026#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg","keywords":["Blocker","Content","Impact","Measure"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=139026#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=139026","url":"https:\/\/fivemor.com\/?p=139026","name":"Measure Ad And Content Blocker Impact - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=139026#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=139026#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg","datePublished":"2025-03-17T06:41:15+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=139026#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=139026"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=139026#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/adblock.jpg","width":1158,"height":464},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=139026#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Measure Ad And Content Blocker Impact"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/139026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=139026"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/139026\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/139027"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=139026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=139026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=139026"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=139026"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=139026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}