1 2 3 4 5 6 7 8 9 10 11<!DOCTYPE html> 12<html class="no-js" dir="ltr" lang="en" prefix="og: https://ogp.me/ns# fb: https://ogp.me/ns/fb#"> 13 <head> 14 <meta charset="utf-8"> 15 <meta http-equiv="x-ua-compatible" content="ie=edge"> 16 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 17 18 19 20 21 22 23 24 25 26 <title>CPM Calculator | Marketing Dive</title> 27 28 29 30 31 <meta name="description" content="Marketing news, voices and jobs for industry professionals. Optimized for your mobile phone."/> 32 33 34 35 36 37 38 39 40 <meta property="fb:pages" content="1856676501228243"> 41 42 43 44 45
45<script> 46 window.dataLayer = window.dataLayer || []; 47 function gtag(){dataLayer.push(arguments);} 48 gtag('consent','default',{ 49 'ad_storage':'denied', 50 'analytics_storage':'denied', 51 'ad_user_data':'denied', 52 'ad_personalization':'denied', 53 'personalization_storage':'denied', 54 'functionality_storage':'granted', 55 'security_storage':'granted', 56 'wait_for_update': 500 57 }); 58 gtag("set", "ads_data_redaction", true); 59 </script>
59 60 61
61<script src="https://cmp.osano.com/AzqdtLT8Mqkut2TZ/991974d1-3bca-4b6d-93e4-fc7f0c35945c/osano.js"></script>
61 62 <style> 63 .osano-cm-widget{display: none;} 64 </style> 65
65<script> 66 // Notify GTM when analytics consent is granted 67 // This ensures page_view tag re-fires with proper attribution data (source/medium) 68 // if it's initially triggered before analytics consent has been granted 69 Osano.cm.addEventListener("osano-cm-analytics", () => { 70 gtag('event', 'analytics_consent_granted'); 71 }); 72 73 window.Osano.cm.addEventListener("osano-cm-script-blocked", function (item) { 74 console.log("Script blocked: " + item); 75 }); 76 window.Osano.cm.addEventListener("osano-cm-cookie-blocked", function (item) { 77 console.log("Cookie blocked: " + item); 78 }); 79 </script>
79 80 81 82 83 84 85 86
87<script type="module" src="/static/js/dist/darkModeFaviconToggle.bundle.js?281219230926" ></script>
87 88 89 90<!-- ====== FAVICONS ======= --> 91<link rel="icon" type="image/x-icon" sizes="any" href="/favicon.ico?v=3" /> 92<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=3"> 93<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=3"> 94<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=3"> 95<link rel="manifest" href="/site.webmanifest?v=3"> 96<link rel="mask-icon" href="/safari-pinned-tab.svg?v=3" color="#5bbad5"> 97<meta name="msapplication-TileImage" content="/mstile-150x150.png?v=3"> 98<meta name="msapplication-TileColor" content="#603cba"> 99<meta name="theme-color" content="#ffffff"> 100 101 <link rel="alternate" type="application/rss+xml" title="Marketing Dive - Latest News Feed" href="https://www.marketingdive.com/feeds/news/"/> 102 103 104 <meta property="og:title" content="" /> 105 <meta property="og:description" content="" /> 106 <meta property="og:image" content="https://d12v9rtnomnebu.cloudfront.net/divesite/header_image_logos/marketing_dive_feed_header.jpg" /> 107 108 109 110 111 112 113 114 <link rel="stylesheet" href="/static/css/dive_app.css?191219230926"> 115 116 117
118<script type="text/javascript" src="/static/js/ad_blocker_recovery.js?520919230926" defer></script>
118 119 120<!-- These are the 2 necessary scripts for the ad recovery message to work --> 121
121<script data-osano="MARKETING" async src="https://fundingchoicesmessages.google.com/i/pub-8553262192892817?ers=1" nonce="RORABhIXgMhQdZXbks8fZQ"></script>
vendor: 1 bytes, line 121
121
122<script nonce="RORABhIXgMhQdZXbks8fZQ">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script>
122 123 124<!-- If the ad recovery message is blocked, this script shows a backup error message asking users to allow ads -->
125<script>(function(){/* 126 127 Copyright The Closure Library Authors. 128 SPDX-License-Identifier: Apache-2.0 129 */ 130 'use strict';var aa=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},ba="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b},k;if("function"==typeof Object.setPrototypeOf)k=Object.setPrototypeOf;else{var m;a:{var ca={a:!0},n={};try{n.__proto__=ca;m=n.a;break a}catch(a){}m=!1}k=m?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null} 131 var p=k,q=function(a,b){a.prototype=ba(b.prototype);a.prototype.constructor=a;if(p)p(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.v=b.prototype},r=this||self,da=function(){},t=function(a){return a};var u;var w=function(a,b){this.g=b===v?a:""};w.prototype.toString=function(){return this.g+""};var v={},x=function(a){if(void 0===u){var b=null;var c=r.trustedTypes;if(c&&c.createPolicy){try{b=c.createPolicy("goog#html",{createHTML:t,createScript:t,createScriptURL:t})}catch(d){r.console&&r.console.error(d.message)}u=b}else u=b}a=(b=u)?b.createScriptURL(a):a;return new w(a,v)};var A=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)};var B={},C=null;var D="function"===typeof Uint8Array;function E(a,b,c){return"object"===typeof a?D&&!Array.isArray(a)&&a instanceof Uint8Array?c(a):F(a,b,c):b(a)}function F(a,b,c){if(Array.isArray(a)){for(var d=Array(a.length),e=0;e<a.length;e++){var f=a[e];null!=f&&(d[e]=E(f,b,c))}Array.isArray(a)&&a.s&&G(d);return d}d={};for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(f=a[e],null!=f&&(d[e]=E(f,b,c)));return d} 132 function ea(a){return F(a,function(b){return"number"===typeof b?isFinite(b)?b:String(b):b},function(b){var c;void 0===c&&(c=0);if(!C){C={};for(var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"],f=0;5>f;f++){var h=d.concat(e[f].split(""));B[f]=h;for(var g=0;g<h.length;g++){var l=h[g];void 0===C[l]&&(C[l]=g)}}}c=B[c];d=Array(Math.floor(b.length/3));e=c[64]||"";for(f=h=0;h<b.length-2;h+=3){var y=b[h],z=b[h+1];l=b[h+2];g=c[y>>2];y=c[(y&3)<< 133 4|z>>4];z=c[(z&15)<<2|l>>6];l=c[l&63];d[f++]=""+g+y+z+l}g=0;l=e;switch(b.length-h){case 2:g=b[h+1],l=c[(g&15)<<2]||e;case 1:b=b[h],d[f]=""+c[b>>2]+c[(b&3)<<4|g>>4]+l+e}return d.join("")})}var fa={s:{value:!0,configurable:!0}},G=function(a){Array.isArray(a)&&!Object.isFrozen(a)&&Object.defineProperties(a,fa);return a};var H;var J=function(a,b,c){var d=H;H=null;a||(a=d);d=this.constructor.u;a||(a=d?[d]:[]);this.j=d?0:-1;this.h=null;this.g=a;a:{d=this.g.length;a=d-1;if(d&&(d=this.g[a],!(null===d||"object"!=typeof d||Array.isArray(d)||D&&d instanceof Uint8Array))){this.l=a-this.j;this.i=d;break a}void 0!==b&&-1<b?(this.l=Math.max(b,a+1-this.j),this.i=null):this.l=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)a=c[b],a<this.l?(a+=this.j,(d=this.g[a])?G(d):this.g[a]=I):(d=this.l+this.j,this.g[d]||(this.i=this.g[d]={}),(d=this.i[a])? 134 G(d):this.i[a]=I)},I=Object.freeze(G([])),K=function(a,b){if(-1===b)return null;if(b<a.l){b+=a.j;var c=a.g[b];return c!==I?c:a.g[b]=G([])}if(a.i)return c=a.i[b],c!==I?c:a.i[b]=G([])},M=function(a,b){var c=L;if(-1===b)return null;a.h||(a.h={});if(!a.h[b]){var d=K(a,b);d&&(a.h[b]=new c(d))}return a.h[b]};J.prototype.toJSON=function(){var a=N(this,!1);return ea(a)}; 135 var N=function(a,b){if(a.h)for(var c in a.h)if(Object.prototype.hasOwnProperty.call(a.h,c)){var d=a.h[c];if(Array.isArray(d))for(var e=0;e<d.length;e++)d[e]&&N(d[e],b);else d&&N(d,b)}return a.g},O=function(a,b){H=b=b?JSON.parse(b):null;a=new a(b);H=null;return a};J.prototype.toString=function(){return N(this,!1).toString()};var P=function(a){J.call(this,a)};q(P,J);function ha(a){var b,c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document,d=null===(b=c.querySelector)||void 0===b?void 0:b.call(c,"script[n
135once]");(b=d?d.nonce||d.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",b)};var Q=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)},R=function(a){this.g=a||r.document||document};R.prototype.appendChild=function(a,b){a.appendChild(b)};var S=function(a,b,c,d,e,f){try{var h=a.g,g=Q(a.g,"SCRIPT");g.async=!0;g.src=b instanceof w&&b.constructor===w?b.g:"type_error:TrustedResourceUrl";ha(g);h.head.appendChild(g);g.addEventListener("load",function(){e();d&&h.head.removeChild(g)});g.addEventListener("error",function(){0<c?S(a,b,c-1,d,e,f):(d&&h.head.removeChild(g),f())})}catch(l){f()}};var ia=r.atob("aHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC93YXJuaW5nX2FtYmVyXzI0ZHAucG5n"),ja=r.atob("WW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2UgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlIGlzIGludGVyZmVyaW5nIHdpdGggdGhpcyBwYWdlLg=="),ka=r.atob("RGlzYWJsZSBhbnkgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlLCB0aGVuIHJlbG9hZCB0aGlzIHBhZ2Uu"),la=function(a,b,c){this.h=a;this.j=new R(this.h);this.g=null;this.i=[];this.l=!1;this.o=b;this.m=c},V=function(a){if(a.h.body&&!a.l){var b= 136 function(){T(a);r.setTimeout(function(){return U(a,3)},50)};S(a.j,a.o,2,!0,function(){r[a.m]||b()},b);a.l=!0}},T=function(a){for(var b=W(1,5),c=0;c<b;c++){var d=X(a);a.h.body.appendChild(d);a.i.push(d)}b=X(a);b.style.bottom="0";b.style.left="0";b.style.position="fixed";b.style.width=W(100,110).toString()+"%";b.style.zIndex=W(2147483544,2147483644).toString();b.style["background-color"]=ma(249,259,242,252,219,229);b.style["box-shadow"]="0 0 12px #888";b.style.color=ma(0,10,0,10,0,10);b.style.display= 137 "flex";b.style["justify-content"]="center";b.style["font-family"]="Roboto, Arial";c=X(a);c.style.width=W(80,85).toString()+"%";c.style.maxWidth=W(750,775).toString()+"px";c.style.margin="24px";c.style.display="flex";c.style["align-items"]="flex-start";c.style["justify-content"]="center";d=Q(a.j.g,"IMG");d.className=A();d.src=ia;d.style.height="24px";d.style.width="24px";d.style["padding-right"]="16px";var e=X(a),f=X(a);f.style["font-weight"]="bold";f.textContent=ja;var h=X(a);h.textContent=ka;Y(a, 138 e,f);Y(a,e,h);Y(a,c,d);Y(a,c,e);Y(a,b,c);a.g=b;a.h.body.appendChild(a.g);b=W(1,5);for(c=0;c<b;c++)d=X(a),a.h.body.appendChild(d),a.i.push(d)},Y=function(a,b,c){for(var d=W(1,5),e=0;e<d;e++){var f=X(a);b.appendChild(f)}b.appendChild(c);c=W(1,5);for(d=0;d<c;d++)e=X(a),b.appendChild(e)},W=function(a,b){return Math.floor(a+Math.random()*(b-a))},ma=function(a,b,c,d,e,f){return"rgb("+W(Math.max(a,0),Math.min(b,255)).toString()+","+W(Math.max(c,0),Math.min(d,255)).toString()+","+W(Math.max(e,0),Math.min(f, 139 255)).toString()+")"},X=function(a){a=Q(a.j.g,"DIV");a.className=A();return a},U=function(a,b){0>=b||null!=a.g&&0!=a.g.offsetHeight&&0!=a.g.offsetWidth||(na(a),T(a),r.setTimeout(function(){return U(a,b-1)},50))},na=function(a){var b=a.i;var c="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];b=c?c.call(b):{next:aa(b)};for(c=b.next();!c.done;c=b.next())(c=c.value)&&c.parentNode&&c.parentNode.removeChild(c);a.i=[];(b=a.g)&&b.parentNode&&b.parentNode.removeChild(b);a.g=null};var pa=function(a,b,c,d,e){var f=oa(c),h=function(l){l.appendChild(f);r.setTimeout(function(){f?(0!==f.offsetHeight&&0!==f.offsetWidth?b():a(),f.parentNode&&f.parentNode.removeChild(f)):a()},d)},g=function(l){document.body?h(document.body):0<l?r.setTimeout(function(){g(l-1)},e):b()};g(3)},oa=function(a){var b=document.createElement("div");b.className=a;b.style.width="1px";b.style.height="1px";b.style.position="absolute";b.style.left="-10000px";b.style.top="-10000px";b.style.zIndex="-10000";return b};var L=function(a){J.call(this,a)};q(L,J);var qa=function(a){J.call(this,a)};q(qa,J);var ra=function(a,b){this.l=a;this.m=new R(a.document);this.g=b;this.i=K(this.g,1);b=M(this.g,2);this.o=x(K(b,4)||"");this.h=!1;b=M(this.g,13);b=x(K(b,4)||"");this.j=new la(a.document,b,K(this.g,12))};ra.prototype.start=function(){sa(this)}; 140 var sa=function(a){ta(a);S(a.m,a.o,3,!1,function(){a:{var b=a.i;var c=r.btoa(b);if(c=r[c]){try{var d=O(P,r.atob(c))}catch(e){b=!1;break a}b=b===K(d,1)}else b=!1}b?Z(a,K(a.g,14)):(Z(a,K(a.g,8)),V(a.j))},function(){pa(function(){Z(a,K(a.g,7));V(a.j)},function(){return Z(a,K(a.g,6))},K(a.g,9),K(a.g,10),K(a.g,11))})},Z=function(a,b){a.h||(a.h=!0,a=new a.l.XMLHttpRequest,a.open("GET",b,!0),a.send())},ta=function(a){var b=r.btoa(a.i);a.l[b]&&Z(a,K(a.g,5))};(function(a,b){r[a]=function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];r[a]=da;b.apply(null,d)}})("__h82AlnkH6D91__",function(a){"function"===typeof window.atob&&(new ra(window,O(qa,window.atob(a)))).start()});}).call(this); 141 142 window.__h82AlnkH6D91__("WyJwdWItODU1MzI2MjE5Mjg5MjgxNyIsW251bGwsbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9iL3B1Yi04NTUzMjYyMTkyODkyODE3Il0sbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9lbC9BR1NLV3hVc0lBMXlKVmRQQWNGaXJQX1lGUTdENkpIZVNZUGV6bWNOM216TmJmYWhldlNobXpBVHkzVzlPLU5LV3MyNkx5cWVXRUx3YnRhZzN1MnZEWHVkZnFFSkVRXHUwMDNkXHUwMDNkP3RlXHUwMDNkVE9LRU5fRVhQT1NFRCIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFVoRGZtbFAtR2RTZUhBa1lVY2VmWTFQYXh1cDNFdmhndlJDNVM4bms3S2t1TElaUXBFQ05VZTIySUNjcGx4eF9oeVlveHJTdy1iU3FjUkhKZWwyWU1NalFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QxXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFgzMm02dWJvVVVwaXJ1b1VQMmhkY2R1S2U5S0pzaDlGRDloMDlWOTlYTkpyZkVTRW5HNzh4Vm0yUDZXdjBDNmkwMXZ4Ui11V25ZVVdlWEI3dmNCd1c5cFFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QyXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFh0cXRhOEVpaV9LUVI4VHNLaDFVUGJ5TFlnNU1ocDFqdVNFemltQVFFeDFjRDJxalJhTjNDM21hSkt1VkVqdGZ5bTZjSXg5emVaLU5IazZMbTE5QjB1ZGdcdTAwM2RcdTAwM2Q/c2JmXHUwMDNkMiIsImRpdi1ncHQtYWQiLDIwLDEwMCwiY0hWaUxUZzFOVE15TmpJeE9USTRPVEk0TVRjXHUwMDNkIixbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tLzBlbW4vZi9wL3B1Yi04NTUzMjYyMTkyODkyODE3LmpzP3VzcXBcdTAwM2RDQUUiXSwiaHR0cHM6Ly9mdW5kaW5nY2hvaWNlc21lc3NhZ2VzLmdvb2dsZS5jb20vZWwvQUdTS1d4V0QtdnVGQVVZRE9STnItSmY2SnJGSGhYYU1QNlo5NG1CTjFyQ2g5M1FvdVNLSmtJcFBlLW1Uc2NpdHNWOEZ0aUdIdzBFZ1QtOEMzbHpFblJMczduZ0pQQVx1MDAzZFx1MDAzZCJd"); 143</script>
143 144 145 146
147<script src="/static/js/jquery_360.min.js?520919230926"></script>
147 148 149 150
151<script> 152 153 // waitForTriggerHandler() is library for queuing up javascript to be stored and then executed when a trigger 154 // function is called. You can push() any number of functions which will be stored unless and until trigger() 155 // is called. Once trigger() is called any future functions that you push() in will be executed immediately. 156 // It is safe to call .trigger() multiple times. Any arguments passed to .trigger() will also be passed along 157 // to the associated function 158 159 function waitForTriggerHandler() { 160 var function_queue = []; 161 var trigger_arguments = []; 162 this._triggered = false; 163 164 this.push = function(fn) { 165 if (this._triggered) { 166 // just run it immediately if handler has already been triggered 167 fn.apply(null, trigger_arguments); 168 } 169 else { 170 // otherwise add to the queue to run later 171 function_queue.push(fn); 172 } 173 }; 174 175 this.trigger = function() { 176 // any arguments passed to trigger(foo, bar, baz) will also be passed along to functions in the queue 177 178 // first convert any arguments to an array 179 trigger_arguments = Array.prototype.slice.call(arguments); 180 while (function_queue.length){ 181 // for each function in the queue, pop it off and then execute it while passing in any 182 // args that may have been passed to trigger(). 183 function_queue.pop().apply(null, trigger_arguments); 184 // The "null" above is for the value of "this". 185 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#Parameters 186 } 187 this._triggered = true; 188 } 189 190 } 191 192 // set up waitToLoadAds handler 193 window.waitToLoadAds = new waitForTriggerHandler(); 194 // We set up the triggers for this below, they depend on whether we're loading lytics on the page 195</script>
195 196 197 198 199
199<script type="text/javascript"> 200 201 window.googletag = window.googletag || {}; 202 googletag.cmd = googletag.cmd || []; 203 204 // initialize callback (source: https://learn.lytics.com/product-docs/lytics-javascript-tag/receiving-data-from-lytics) 205 !function(){"use strict";var o=window.jstag||(window.jstag={}),r=[];function n(e){o[e]=function(){for(var n=arguments.length,t=new Array(n),i=0;i<n;i++)t[i]=arguments[i];r.push([e,t])}}n("send"),n("mock"),n("identify"),n("pageView"),n("unblock"),n("getid"),n("setid"),n("loadEntity"),n("getEntity"),n("on"),n("once"),n("call"),o.loadScript=function(n,t,i){var e=document.createElement("script");e.async=!0,e.src=n,e.onload=t,e.onerror=i;var o=document.getElementsByTagName("script")[0],r=o&&o.parentNode||document.head||document.body,c=o||r.lastChild;return null!=c?r.insertBefore(e,c):r.appendChild(e),this},o.init=function n(t){return this.config=t,this.loadScript(t.src,function(){if(o.init===n)throw new Error("Load error!");o.init(o.config),function(){for(var n=0;n<r.length;n++){var t=r[n][0],i=r[n][1];o[t].apply(o,i)}r=void 0}()}),this}}(); 206 207 208 // custom init + lytics default install tag from https://activate.getlytics.com/connect?aid=2751 209 // see https://learn.lytics.com/understanding/product-docs/lytics-javascript-tag/configuration#configuration-options 210 211 var lyticsCid = '44fda7674f94228540d8fba6786f9770'; 212 console.log('You are using the Lytics Prod account'); 213 214 215 216 217 jstag.init({ 218 src: `https://c.lytics.io/api/tag/${lyticsCid}/latest.min.js`, 219 pageAnalysis: { 220 dataLayerPull: { 221 disabled: true 222 } 223 } 224 }); 225 jstag.pageView(); 226 227 228 (function(){ 229 var sailthru_cookie, sailthru_user_id; 230 function read_cookie(cookieName) { 231 var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)'); 232 var sMatch = (' '+document.cookie).match(re); 233 if (cookieName && sMatch) return unescape(sMatch[1]); 234 return ''; 235 } 236 sailthru_cookie = read_cookie('sailthru_hid'); 237 if (sailthru_cookie.length > 56) { 238 sailthru_user_id = sailthru_cookie.slice(32,56); 239 jstag.send({ st_profile_id: sailthru_user_id }); 240 } 241 })(); 242 243 244 245 246 247 jstag.call('entityReady', () => waitToLoadAds.trigger()); 248 setTimeout(() => waitToLoadAds.trigger(), 1000); // also trigger lytics if it's taking too long 249 250 251 252 waitToLoadAds.push(function (lytics_data) { 253 // lytics_data won't be defined if lytics failed to load correctly. In that case 254 // we don't need to set any segments. 255 if (lytics_data && lytics_data.segments) { 256 googletag.cmd.push(function() { 257 googletag.pubads().setTargeting("LyticsSegments", lytics_data.segments); 258 }); 259 } 260 }); 261 262 function getUID(id) { 263 window.dataLayer.push({'user_id': id}); 264 }; 265 jstag.getid(getUID); 266 267 268 </script>
268 269 270 271 272 273
273<script src="/jsi18n/"></script>
273 274 275 276 277 278 279 280
281<script> 282 // Initialize dataLayer empty array for GTM events 283 window.dataLayer = window.dataLayer || []; 284 window.dataLayer.push({ 285 'site': 'Marketing Dive', 286 }); 287 // wrapper function to push GTM events to dataLayer 288 pushGTMEvent = (eventObject) => { 289 // if window.datalayer is not defined, then set to an empty array 290 window.dataLayer.push(eventObject); 291 }; 292</script>
292 293<!-- Google Tag Manager -->
294<script>
vendor: 327 bytes, lines 294-298
294(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 295new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 296j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 297'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 298})(window,document,'script','dataLayer','
298GTM-55G8WRR
vendor: 3 bytes, line 298
298');
298</script>
298 299<!-- End Google Tag Manager --> 300
301<script> 302 let eventParams = {}; 303 304 305 const gtmEventObject = { 306 event: 'page.content', 307 'page.content': { 308 v:11, // seer version 309 ...eventParams 310 } 311 }; 312 window.pushGTMEvent(gtmEventObject); 313 window.lyticsLookup = {"any_agriculture_dive_subs": "aa", "any_automotive_dive_subs": "ab", "any_banking_dive_subs": "ac", "any_biopharma_dive_subs": "ad", "any_cstore_dive_subs": "ae", "any_cfo_dive_subs": "af", "cfo_dive_tech_valid_subs": "ag", "any_cfo_balance_subs": "ah", "any_cio_dive_subs": "ai", "any_construction_dive_subs": "aj", "any_cybersecurity_dive_subs": "ak", "any_higher_ed_dive_subs": "al", "any_k12_dive_subs": "am", "any_facilities_dive_subs": "an", "any_fashion_dive_subs": "ao", "any_food_dive_subs": "ap", "any_grocery_dive_subs": "aq", "any_healthcare_dive_subs": "ar", "any_hotel_dive_subs": "as", "any_hr_dive_subs": "at", "any_legal_dive_subs": "au", "any_manufacturing_dive_subs": "av", "any_marketing_dive_subs": "aw", "any_medtech_dive_subs": "ax", "any_mobile_marketer_subs": "ay", "any_multifamily_dive_subs": "az", "any_packaging_dive_subs": "a0", "any_payments_dive_subs": "a1", "any_pharmavoice_subs": "a2", "any_restaurant_dive_subs": "a3", "any_retail_dive_subs": "a4", "any_smart_cities_dive_subs": "a5", "any_social_media_today_subs": "a6", "any_supplychain_dive_subs": "a7", "any_transport_dive_subs": "a8", "any_utility_dive_subs": "a9", "any_waste_dive_subs": "ba", "lt_15_million_company_revenue": "bb", "lt_20_million_company_revenue": "bc", "gt_100m_company_revenue": "bd", "gt_500m_company_revenue": "be", "250k_to_at_least_5m_company_revenue": "bf", "5m_to_20m_company_revenue": "bg", "20m_5000m_company_revenue": "bh", "all_cfos": "bi", "retail_holiday_edition_valid_subscribers": "bj", "banking_dive_valid_subscribers": "bk", "biopharma_dive_valid_subscribers": "bl", "cfo_dive_valid_subscribers": "bm", "cio_dive_valid_subscribers": "bn", "construction_dive_valid_subscribers": "bo", "education_dive_higher_ed_valid_subscribers": "bp", "education_dive_k12_valid_subscribers": "bq", "food_dive_valid_subscribers": "br", "grocery_dive_valid_subscribers": "bs", "healthcare_dive_valid_subscribers": "bt", "hr_dive_valid_subscribers": "bu", "hr_dive_talent_valid_subscribers": "bv", "marketing_dive_valid_subscribers": "bw", "medtech_dive_valid_subscribers": "bx", "mobile_marketer_valid_subscribers": "by", "restaurant_dive_valid_subscribers": "bz", "retail_dive_valid_subscribers": "b0", "retail_dive_dtc_valid_subscribers": "b1", "smart_cities_dive_valid_subscribers": "b2", "social_media_today_valid_subscribers": "b3", "supply_chain_dive_valid_subscribers": "b4", "transport_dive_valid_subscribers": "b5", "utility_dive_valid_subscribers": "b6", "waste_dive_valid_subscribers": "b7", "all_target_readers": "b8", "automotive_dive_high_quality_target_readers": "b9", "banking_dive_high_quality_target_readers": "ca", "biopharma_dive_target_readers": "cb", "cstore_dive_high_quality_target_readers": "cc", "cfo_dive_high_quality_target_readers_": "cd", "cio_dive_high_quality_target_readers": "ce", "construction_dive_high_quality_target_readers": "cf", "cybersecurity_dive_high_quality_target_readers": "cg", "facilities_dive_high_quality_target_readers": "ch", "fashion_dive_high_quality_target_readers": "ci", "food_dive_high_quality_target_readers": "cj", "grocery_dive_high_quality_target_readers": "ck", "healthcare_dive_target_readers": "cl", "higher_ed_high_quality_target_readers": "cm", "hotel_dive_high_quality_target_readers": "cn", "hr_dive_high_quality_target_readers": "co", "hr_dive_learning_high_quality_target_readers": "cp", "hr_dive_talent_high_quality_target_readers": "cq", "k12_high_quality_target_readers": "cr", "legal_dive_high_quality_target_readers": "cs", "manufacturing_dive_high_quality_target_readers": "ct", "marekting_dive_high_quality_target_readers": "cu", "medtech_high_quality_target_readers": "cv", "mobile_marketer_high_quality_target_readers": "cw", "multifamily_dive_high_quality_target_readers": "cx", "packaging_dive_high_quality_target_readers": "cy", "payments_dive_high_quality_target_readers": "cz", "pharmavoice_high_quality_target_readers": "c0", "restaurant_dive_high_quality_target_readers": "c1", "retail_dive_high_quality_target_readers": "c2", "smart_cities_dive_high_quality_target_readers": "c3", "socialmediatoday_target_readers": "c4", "supply_chain_dive_high_quality_target_readers": "c5", "transport_dive_high_quality_target_readers": "c6", "utility_dive_high_quality_target_readers": "c7", "waste_dive_high_quality_target_readers": "c8", "banking_dive_fintech_valid_subscribers": "c9", "biopharma_dive_emerging_biotech_valid_subscribers": "da", "biopharma_dive_manufacturing_valid_subscribers": "db", "biopharma_dive_marketing_valid_subscribers": "dc", "construction_dive_tech_valid_subscribers": "dd", "education_dive_k12_curriculum_valid_subscribers": "de", "food_dive_ingredients_valid_subscribers": "df", "healthcare_dive_it_valid_subscribers": "dg", "healthcare_dive_payer_valid_subscribers": "dh", "hr_dive_compensation_benefits_valid_subscribers": "di", "hr_dive_compliance_valid_subscribers": "dj", "hr_dive_diversity_inclusion_valid_subscribers": "dk", "hr_dive_learning_valid_subscribers": "dl", "hr_dive_recruiting_valid_subscribers": "dm", "marketing_dive_agencies_valid_subscribers": "dn", "marketing_dive_mobile_val
313id_subscribers": "do", "retail_dive_marketing_valid_subscribers": "dp", "retail_dive_mobile_commerce_valid_subscribers": "dq", "retail_dive_operations_valid_subscribers": "dr", "retail_dive_tech_valid_subscribers": "ds", "supply_chain_dive_operations_valid_subscribers": "dt", "supply_chain_dive_procurement_valid_subscribers": "du", "utility_dive_demand_response_valid_subscribers": "dv", "utility_dive_solar_valid_subscribers": "dw", "utility_dive_storage_valid_subscribers": "dx", "waste_dive_recycling_valid_subscribers": "dy", "all_cio_job_level": "dz", "all_cso_ciso_job_level": "d0", "all_cto_job_level": "d1", "all_users_on_a_primary_list_in_sailthru": "d2", "any_administration_job_function": "d3", "any_analyst_job_level": "d4", "any_associate_job_level": "d5", "any_bank_finance_company_type": "d6", "any_biz_dev_sales_job_function": "d7", "any_clevel_job_level": "d8", "any_construction_company_type": "d9", "any_customer_relations_job_function": "ea", "any_cx_job_function": "eb", "any_director_vp_job_level": "ec", "any_education_company_type": "ed", "any_finance_job_function": "ee", "any_food_and_bev_company_type": "ef", "any_food_service_company_type": "eg", "any_hr_job_function": "eh", "any_manager_job_level": "ei", "any_manufacturing_company_type": "ej", "any_marketing_job_function": "ek", "any_media_company_type": "el", "any_operations_analysis_job_function": "em", "any_operations_job_function": "en", "any_product_job_function": "eo", "any_retail_company_type": "ep", "any_supply_chain_job_function": "eq", "any_tech_company_type": "er", "any_telecom_company_type": "es", "any_transportation_company_type": "et", "any_transportation_job_function": "eu", "any_utility_company_type": "ev", "any_ux_job_function": "ew", "any_waste_recycling_company_type": "ex", "company_size_1_249": "ey", "company_size_1000_4999": "ez", "company_size_1000_plus": "e0", "company_size_250_499": "e1", "company_size_5000_9999": "e2", "seh_k12_at_risk_users_in_2023_churn_campaign": "e3", "seh_k12_at_risk_users_who_clicked_2023_churn_campagin": "e4", "square_food_bev_audience": "e5", "square_restaurant_audience": "e6", "square_retail_audience": "e7", "any_cx_dive_subs": "e8", "any_esg_dive_subs": "e9", "cfo_balance_high_quality_target_readers": "fa", "cx_dive_high_quality_target_readers": "fb", "esg_dive_high_quality_target_readers": "fc", "informauploadsnov2022": "fd", "ladders_uploads_2021": "fe", "ladders_utm_campaign_tracking": "ff", "agriculture_dive_high_quality_target_readers": "fg", "all_marketing_related_audience": "fh", "tech_job_function": "fi", "construction_dive_infrastru
313cture_valid_subscribers": "fj", "construction_dive_labor_safety_valid_subscribers": "fk", "supply_chain_dive_logistics_valid_subscribers": "fl", "payers_on_healthcare": "fm", "providers_on_healthcare": "fn", "wardsauto_valid_subscribers": "fo", "wardsauto_dealer_valid_subscribers": "fp", "any_wardsauto_subs": "fq", "wardsauto_high_quality_target_readers": "fr", "wardsauto_high_quality_target_readers_automakers": "fs", "wardsauto_high_quality_target_readers_dealers": "ft", "wardsauto_high_quality_target_readers_suppliers": "fu", "channel_dive_valid_subscribers": "fv", "any_channel_dive_subs": "fw", "channel_dive_high_quality_target_readers": "fx", "cstore_retail_subs": "fy", "cstore_grocery_subs": "fz", "healthcare_dive_high_quality_target_readers_providers": "f0", "healthcare_dive_high_quality_target_readers_payers": "f1", "healthcare_dive_high_quality_target_readers_health_it": "f2", "2026_outlooks_autorecommended_content_audience": "f3"} 314</script>
314 315 316 317
318<script type="module" src="/static/js/dist/lyticsHelper.bundle.js?281219230926" ></script>
318 319 320 321 322 323 <!-- HTMX for dynamic content loading --> 324 325
326<script src="/static/js/htmx_204.min.js?520919230926"></script>
326 327 328 329 330 331 332 333 334 335
336<script type="text/javascript" src="/static/js/mailcheck.min.js?520919230926" defer></script>
vendor: 1 bytes, line 336
336
337<script type="text/javascript" src="/static/js/dive_mailcheck.js?520919230926" defer></script>
337 338 339 340 341 342
342<script src="/static/js/app.js?520919230926" defer></script>
342 343 344 345
345<script type="text/javascript"> 346 var divecounter_settings = {}; 347 348 divecounter_settings.showSignupAd = true; 349 350 351 352 </script>
352 353 354
354<script type="text/javascript" src="/static/js/divecounter.js?520919230926"></script>
354 355 356 357
357<script type="text/javascript"> 358 // Special unbounce signup thing for google traffic. Test with ?test_unbounce in the URL 359 // Note: divecounter must already be loaded. Only enabled on pages that would normally have signup ads 360 // Note: showSignupAd is always off if prestitial is enabled! 361 if ((typeof divecounter !== "undefined") && ($(window).width() > 640)) { 362 var test_unbounce = (window.location.href.indexOf("?test_unbounce")>=0); 363 var force_unbounce = (window.location.href.indexOf("signupbounce=1")>=0) || 364 (window.location.href.indexOf("utm_campaign=Linked-HR")>=0) || 365 (window.location.href.indexOf("utm_source=outbrain")>=0); 366 if (test_unbounce || 367 force_unbounce || 368 (document.referrer.match(/^https?:\/\/(www\.google\.|news\.google\.|t\.co|twitter\.com|www\.facebook\.com)/i) && 369 divecounter.getOption('showSignupAd') && divecounter.canShow(1,1)) ) { 370 // dyanmically load ouibounce.js only on pages where its needed 371 $.getScript("/static/js/ouibounce.min.js?520919230926", function(){ 372 // Once ouibounce.js loads, call the script 373 // We're reusing divecounter's modal instead of OuiBounce's modal code (that's why we pass it 'false') 374 var _ouibounce = ouibounce(false, { 375 aggressive: test_unbounce, // ignore cookie in test mode 376 cookieName: '_viewedOuiBounce', // underscored cookies should be ignored by Varnish 377 callback: function() { 378 divecounter_open_ad(); 379 } 380 }); 381 }); 382 } // end should show unbounce 383 } // end divecounter defined 384 </script>
384 385 386 387 388
389<script type="text/javascript"> 390 function read_cookie(cookieName) { 391 var re = new RegExp('[; ]'+cookieName+'=([^\\s;]*)'); 392 var sMatch = (' '+document.cookie).match(re); 393 if (cookieName && sMatch) return unescape(sMatch[1]); 394 return ''; 395 } 396 397 var script = document.createElement('script'); 398 script.type = 'text/javascript'; 399 script.async = true; 400 script.addEventListener('load', function(e) { 401 // we only pass the template this context variable on newsposts 402 let informaData = false; 403 404 if (window.IIRISTracker) { 405 var sailthru_id = read_cookie('sailthru_hid'); 406 if (sailthru_id.length > 56) { 407 sailthru_id = sailthru_id.slice(32,56); 408 } 409 410 var notProduction = 'False' === 'True'; 411 var domain = 'www.marketingdive.com'.split('.')[1]; 412 // on non-prod environment, there is specific collector domain to send the data to. 413 var cDomain = notProduction ? 'com-informa-prod1.mini.snplow.net' : 'c.' + domain + '.com' // removed .com previous line 414 var cfg = { 415 config: { 416 td: {}, 417 snowplow: { 418 context: {} 419 } 420 } 421 }; 422 cfg.config.idsource = 'sailthruid'; 423 cfg.config.snowplow.appId = domain; 424 cfg.config.snowplow.cDomain = cDomain; 425 cfg.config.td.lob = 'it'; 426 cfg.config.td.domain = domain; 427 cfg.config.snowplow.contentTagEnabled = !!informaData 428 cfg.config.snowplow.context = informaData 429 window.IIRISTracker.initConfig(cfg); 430 window.IIRISTracker.setTrackingUID(sailthru_id); 431 var irisEvt = new Event('trackerLoaded'); 432 window.dispatchEvent(irisEvt); 433 } else { 434 window.addEventListener('trackerLoaded', function(evt) { 435 if(window.IIRISTracker) { 436 window.IIRISTracker.setTrackingUID(sailthru_id); 437 } 438 }); 439 } 440 }); 441 script.src = 'https://static.iris.informa.com/widgets/v3.0/iris-t.js'; 442 document.getElementsByTagName('head')[0].appendChild(script); 443</script>
443 444 445 446 447 448 449 450 451 452 453
453<script type="text/javascript"> 454 jQuery.browser = {}; 455 (function () { 456 jQuery.browser.msie = false; 457 jQuery.browser.version = 0; 458 if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { 459 jQuery.browser.msie = true; 460 jQuery.browser.version = RegExp.$1; 461 } 462 })(); 463 </script>
463 464 <!-- for modal signup form --> 465 466
466<script type="text/javascript" src="/static/js/jquery.simplemodal.divefork.min.js?520919230926" defer></script>
466 467 468 469 470 <style> 471 472 /* dynamic style overrides based on DB go here*/ 473 474 </style> 475 476 477
477<script type="text/javascript" src="/static/js/cpm_calc.js?520919230926" ></script>
477 478
478<script type="text/javascript"> 479 $(document).ready( function() { 480 $('.impressionsInput, .cpmInput, .totalInput').on('change', function() { 481 checkForBlank(); 482 }); 483 $('#calculateButton').click(function() { 484 calculateCpm(); 485 }); 486 $('.form-error__message').hide(); 487 }); 488 </script>
488 489 490 491 492
493<script type="module" src="/static/js/dist/signupReferrer.bundle.js?281219230926" ></script>
493 494 495 496 497 498
499<script type="module" src="/static/js/dist/searchTracking.bundle.js?281219230926" ></script>
499 500 501 502
503<script type="module" src="/static/js/dist/navRelatedQuestionsTracking.bundle.js?281219230926" ></script>
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523
523<script data-osano="MARKETING" async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
523 524 525 526 527 528 529 530 531 532 533 534 <!-- DoubleVerify Page Tag - START --> 535
535<script data-osano="MARKETING" async src="https://pub.doubleverify.com/dvtag/19913272/DV424940/pub.js"></script>
535 536
536<script> 537 window.onDvtagReady = function(callback, timeout = 750) { 538 window.dvtag = window.dvtag || {}; 539 dvtag.cmd = dvtag.cmd || []; 540 dvtag.queueAdRequest = dvtag.queueAdRequest || function() {}; 541 const opt = { 542 callback, 543 timeout, 544 timestamp: new Date().getTime() 545 }; 546 dvtag.cmd.push(function() { 547 dvtag.queueAdRequest(opt); 548 }); 549 setTimeout(function() { 550 const cb = opt.callback; 551 opt.callback = null; 552 if (cb) cb(); 553 }, timeout); 554 }; 555 </script>
555 556 <!-- DoubleVerify Page Tag - END --> 557 558 559
560<script type="text/javascript" src="/static/js/dist/adTemplates.bundle.js?281219230926" defer></script>
vendor: 1 bytes, line 560
560
561<script> 562 const desktopWidth = 1024; 563 564 window.dfp_visibility = window.innerWidth >= desktopWidth ? 'desktop' : 'mobile'; 565 566 const dfpDisplayConfiguration = { 567 "prestitialEnabled": false, 568 "leaderboardEnabled": true, 569 "sidebarAdsEnabled": true, 570 "visibility": window.dfp_visibility 571 }; 572 573 574 var googletag = googletag || {}; 575 googletag.cmd = googletag.cmd || []; 576 googletag.cmd.push(function () { 577 578 579 580 581 582 583 584 if ((typeof divecounter !== "undefined") && (divecounter.getMarketingData().is_subscriber)) { 585 googletag.pubads().setTargeting("is_subscriber", "yes"); 586 } 587 588 const site = window.location.host 589 googletag.pubads().setTargeting("site", site); 590 591 const first_path = window.location.pathname.split( '/' )[1]; 592 googletag.pubads().setTargeting("first_path", first_path); 593 594 595 596 597 // Set ad targeting on the trendline to show the ads designated for it 598 599 600 const isTopicPage = window.location.pathname.indexOf('/topic/') !== -1; 601 if(isTopicPage) { 602 googletag.pubads().setTargeting('is_topics_page', 'true'); 603 } 604 605 606 const cookies = document.cookie.split("; "); 607 const utmMedium = cookies.find(cookie => cookie.startsWith("utmMedium=")); 608 const utmMediumValue = utmMedium ? utmMedium.split("=")[1] : null; 609 const ppc = utmMediumValue && utmMediumValue.toUpperCase() === "CPC" ? "1" : "0"; 610 googletag.pubads().setTargeting("ppc", ppc); 611 612 }); 613 614 googletag.cmd.push(function () { 615 googletag.pubads().setCentering(true); 616 googletag.pubads().collapseEmptyDivs(false); // Whether to collapse the slots even before the ads are fetched. 617 googletag.setConfig({ singleRequest: true }); 618 window.onDvtagReady?.(); // Notify DoubleVerify page tag that slots are defined. 619 googletag.enableServices(); 620 }); 621</script>
621 622 623 624 625
626<script>window.fallbackAds = '[{\u0022adType\u0022: \u0022editorial_native_ad\u0022, \u0022link\u0022: \u0022/trendline/ai\u002Dand\u002Dmarketing\u002Ddata/513/?utm_source\u003DMD\u0026utm_medium\u003DNativeFB\u0026utm_campaign\u003DTrendlineFB\u0022, \u0022label\u0022: \u0022Trendline\u0022, \u0022headline\u0022: \u0022AI\u005Cu2019s impact on marketing strategies\u0022, \u0022ctaText\u0022: \u0022Access now\u0022, \u0022description\u0022: \u0022Top stories that underscore the key role of artificial intelligence, generative and otherwise, for many CMOs looking to\u005Cu00a0better manage\u005Cu00a0troves of data.\u005Cu00a0\u0022, \u0022image\u0022: \u0022https://imgproxy.divecdn.com/IiWzsMX8O2SNPPxqDGi1l1yl60qZNI9y9hjlQwqnEVw/g:ce/rs:fit:640:361/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9EYXRhX2NlbnRlcl9zZXJ2ZXJfcm9vbV8tX05vdi5fNF8yMDI0LmpwZw\u003D\u003D.webp\u0022, \u0022attribution\u0022: \u0022\u0022}]'</script>
626 627 628
629<script type="module" src="/static/js/dist/onBoardDiagnostics.bundle.js?281219230926" ></script>
629 630 631 632 633 634 635
636<script type="module" src="/static/js/dist/engAnalytics.bundle.js?281219230926" ></script>
636 637 638 639 640
640<script> 641 window.dfp_ad_unit_prefix = '/3618/marketingdive/marketingdive'; 642 window.days_between_prestitial = 7; 643 </script>
643 644 645
646<script type="module" src="/static/js/dist/prestitialForecastingMode.bundle.js?281219230926" ></script>
646 647 648 649 650 651 652 653 <!-- NEW RELIC SYNTHETICS CANARY --> 654 </head> 655 656 657 <body class=""> 658 <!-- Accessibility skip-nav link --> 659 <a href="#skip-link-target" class="button button--loud skip-nav-link" tabindex="1">Skip to main content</a> 660 661 662 <!-- Google Tag Manager (noscript) --> 663 <noscript><iframe data-osano="ESSENTIAL" src="https://www.googletagmanager.com/ns.html?id=GTM-55G8WRR" height="0" width="0" style="display:none;visibility:hidden"> 664 </iframe></noscript> 665 <!-- End Google Tag Manager (noscript) --> 666 667 668 669 670 671 672 673 674<div id="signup-inter" class="modal_dialog" style="display:none;"> 675 676 677 <form id="signup-inter-form" 678 class="form-basic" 679 name="signup-inter-form" 680 action="/signup/" 681 method="POST"> 682 683 <input type="hidden" name="signup_box_location" value="interstitial"> 684 <input type="hidden" name="signup_initial_url_path" value=""> 685 <h1> 686 687 688 Don't miss tomorrow's marketing industry news 689 690 691 </h1> 692 <p class="interstitial-text"> 693 694 695 Let Marketing Dive's free newsletter keep you informed, straight from your inbox. 696 697 698 </p> 699 <p class="form-error__message" id="interstitial-error"></p> 700 <div id="form-interstitial"> 701 <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_f6a857_email"> 702 703 <div id="newsletter-list-section"> 704 <div id="id_f6a857_site_newsletters" class="list-no-bullets"><div> 705 <label for="id_f6a857_site_newsletters_0"><input type="checkbox" name="site_newsletters" value="7" class="list-no-bullets" id="id_f6a857_site_newsletters_0"> 706 Daily Dive <span class="secondary-label">M-F</span></label> 707 708</div><div> 709 <label for="id_f6a857_site_newsletters_1"><input type="checkbox" name="site_newsletters" value="105" class="list-no-bullets" id="id_f6a857_site_newsletters_1"> 710 Mobile Weekly <span class="secondary-label">Every Thursday</span></label> 711 712</div><div> 713 <label for="id_f6a857_site_newsletters_2"><input type="checkbox" name="site_newsletters" value="1815" class="list-no-bullets" id="id_f6a857_site_newsletters_2"> 714 Agencies Weekly <span class="secondary-label">Every Monday</span></label> 715 716</div> 717</div> 718 719 </div> 720 <div id="interstitial-consent-container"> 721 <input name="user_consent" value="1" id="id_user_consent" type="checkbox"> 722 <span> 723 By signing up to receive our newsletter, you agree to our 724 <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and 725 <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime. 726</span> 727 728 </div> 729 </div> 730 <span class="captcha-container"> 731 <div class="g-recaptcha" data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4"></div> 732 </span> 733 <input id="signup-inter-submit" 734 class="email_submit submit button" 735 type="submit" 736 data-role="none" 737 value="Subscribe today"> 738 </form> 739 740</div> 741 742 743 744 745 746 747 748 749 750 751 752 <!-- leaderboard --> 753 754 755 756 757 <div class="leaderboard-wrap"> 758 759 <div class="hide-small show-large"> 760 761 762<div id='dfp-leaderboard-desktop' style="min-height: 90px"> 763
763<script> 764 if (window.dfp_visibility === 'desktop') { 765 googletag.cmd.push(function() { 766 googletag.defineSlot( 767 '/3618/marketingdive/marketingdiveleaderboard', 768 [[970, 180], [728, 90], [970, 90]], 769 'dfp-leaderboard-desktop' 770 ).addService(googletag.pubads()); 771 }); 772 } 773 waitToLoadAds.push(function() { 774 googletag.cmd.push(function() { 775 if (window.dfp_visibility === 'desktop') { 776 window.onDvtagReady?.(() => googletag.display('dfp-leaderboard-desktop')); 777 } 778 }) 779 }); 780 </script>
780 781</div> 782</div> 783 784 </div> 785
785<script> 786 googletag.cmd.push(function() { 787 googletag.pubads().addEventListener('slotRenderEnded', function (event) { 788 789 if (event.slot.getAdUnitPath() === '/3618/marketingdive/marketingdiveleaderboard' && !event.isEmpty) { 790 $(window).blur(function () { 791 if (document.activeElement === $('#dfp-leaderboard- iframe')[0]) { 792 try { 793 localStorage.setItem('leaderboard_signup_path', document.location.pathname); 794 } catch (e) { 795 // local storage could not be available due to privacy settings or something 796 } 797 } 798 }); 799 } 800 }); 801 }) 802 </script>
802 803 804 805 806 807 <!-- ITT cross pub nav --> 808 809 810 811<!-- Nav that lists the site's related publications including itt sites --> 812 813<div class="itt-cross-nav"> 814 <div class="itt-cross-nav-inner"> 815 <div class="desktop-section-wrapper"> 816 <a class="itt-brand analytics t-ittbanner-logo" href="https://www.informatechtarget.com/"> 817 <img class="itt-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/ITechTarget-Orbit-W_rgb.png" alt="Informa Tech Target Logo" height="16"> 818 <span class="itt-brand-name nav-item">Informa TechTarget</span> 819 <span class="nav-divider nav-item">|</span> 820 </a> 821 <ul class="itt-pubs list-no-bullets"> 822 823 <li> 824 <a href="https://www.customerexperiencedive.com/" 825 class="nav-item-link analytics t-ittbanner-related-cx-dive">CX Dive</a> 826 </li> 827 828 <li> 829 <a href="https://www.retaildive.com/" 830 class="nav-item-link analytics t-ittbanner-related-retail-dive">Retail Dive</a> 831 </li> 832 833 <li> 834 <a href="https://www.socialmediatoday.com/" 835 class="nav-item-link analytics t-ittbanner-related-social-media-today">Social Media Today</a> 836 </li> 837 838 </ul> 839 </div> 840 <div> 841 <a href="https://www.informatechtarget.com/our-brands/" class="desktop-cta nav-item-link analytics t-ittbanner-brands"> 842 <span>Explore our brands</span> 843 <img class="external-link-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/link-external-wht.svg" alt="Informa TechTarget Brands" height="12"> 844 </a> 845 <a href="https://www.informatechtarget.com/" class="mobile-cta nav-item-link analytics t-ittbanner-mobile">An Informa TechTarget Publication</a> 846 </div> 847 </div> 848</div> 849 850 851 852 853 <div class="page-container"> 854 855 856 857 858 859 860 861 862 863<header role="banner"> 864 <nav id="top" class="site-menu" aria-label="Site menu"> 865 <div class="site-menu-inner"> 866 <!-- logo --> 867 <div class="pub-logo-wrapper"> 868 <a href="/" class="analytics t-dash-navigation"> 869 870 <img class="pub-logo" src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_black.svg" alt="Marketing Dive" height="28"> 871 872 </a> 873 </div> 874 <!-- desktop menu, not visible on mobile/tablet --> 875 <div class="menu-content-wrapper"> 876 <ul class="desktop-menu-main"> 877 878 <li> 879 <a href="/deep-dive/" class="nav-menu-item analytics t-deepdive-navigation">Deep Dive</a> 880 </li> 881 882 883 884 885 <li> 886 <a href="/library/" class="nav-menu-item analytics t-library-navigation">Library</a> 887 </li> 888 889 890 <li> 891 <a href="/events/" class="nav-menu-item analytics t-events-navigation">Events</a> 892 </li> 893 894 895 <li> 896 <a href="/press-release/" class="nav-menu-item analytics t-press-releases-navigation">Press Releases</a> 897 </li> 898 899 900 901 902 <li class="topics top-nav-dropdown-item"> 903 <button class="nav-menu-item topics-dropdown-item"> 904 Topics 905 <span class="dropdown-toggle-arrow"></span> 906 </button> 907 </li> 908 </ul> 909 <!-- mobile menu toggle icon, not visible on desktop --> 910 <a href="/signup/?signup_location=header" rel="nofollow" class="nav-menu-item nav-signup-button mobile-nav-signup-button analytics t-signup-navigation button"> 911 Subscribe 912 </a> 913 <button class="mobile-menu-toggle"> 914 915 916 <img src="/static/img/menu_icons/menu_search.svg?520919230926" alt="menu" loading="lazy"> 917 918 </button> 919 <!-- newsletter and search, only shown on desktop --> 920 <ul class="desktop-menu-sub list-no-bullets"> 921 <li> 922 <button class="search-toggle search-button-front analytics t-search-navigation-top"> 923 924 925 <img src="/static/img/menu_icons/ai_search_black.svg?520919230926" alt="search" width="16" height="16" loading="lazy"> 926 927
928 <span class="sub-link">Search</span> 929 930 </button> 931 </li> 932 <li> 933 934 <a href="/signup/?signup_location=header" rel="nofollow" class="nav-menu-item nav-signup-button desktop-nav-signup-button analytics t-signup-navigation button"> 935 <img src="/static/img/email_icons/mail.svg?520919230926" width="16" height="11" loading="lazy" alt=""> 936 Subscribe 937 </a> 938 </li> 939 </ul> 940 941 </div> 942 </div> 943 </nav> 944</header> 945 946 947 948<div 949 class="menu-search menu-search--semantic js-search-hide" 950 data-related-questions-url="/search/related-questions/" 951 data-search-url="/search/" 952> 953 <div class="menu-search-inner-wrapper menu-search-panel" role="region" aria-label="Search panel"> 954 <form action="/search/" method="GET" data-ajax="false" data-search-track data-search-tracking-url="/search/tracking/" class="menu-search-form"> 955 <label for="search-desktop"> 956 <span class="screen-reader-text search">Search</span> 957 </label> 958 <div class="menu-search-input-wrap"> 959 <input id="search-desktop" type="search" name="q" placeholder="Ask a question..." data-role="none" autocomplete="off"> 960 <button type="button" class="close menu-search-close" aria-label="Close search"> 961 <img src="/static/img/menu_icons/close.svg?520919230926" width="16" height="16" alt="" loading="lazy"> 962 </button> 963 <button type="submit" value="" data-role="none" class="search-button-front menu-search-submit analytics t-search-navigation-drawer" aria-label="Search"> 964 <img src="/static/img/menu_icons/ai_search.svg?520919230926" alt="" height="16" width="16" loading="lazy"> 965 </button> 966 </div> 967 </form> 968 <section class="menu-search-paa" aria-label="People also ask"> 969 <div class="menu-search-paa__header"> 970 <h2 class="dash-header">People also ask</h2> 971 </div> 972 <ul class="menu-search-paa__list js-menu-search-related-questions"> 973 <li class="menu-search-paa__item menu-search-paa__item--loading">Loading questions...</li> 974 </ul> 975 </section> 976 </div> 977</div> 978 979 980 981<nav class="topics menu-bar" aria-label="Menu bar"> 982 <ul class="list-no-bullets"> 983 984 985 <li> 986 <a class="analytics t-topic-navigation-mobile-marketing" href="/topic/mobile-marketing/">Mobile</a> 987 </li> 988 989 990 <li> 991 <a class="analytics t-topic-navigation-creative" href="/topic/creative/">Creative</a> 992 </li> 993 994 995 <li> 996 <a class="analytics t-topic-navigation-Social-media-marketing" href="/topic/Social-media-marketing/">Social Media</a> 997 </li> 998 999 1000 <li> 1001 <a class="analytics t-topic-navigation-Video-marketing" href="/topic/Video-marketing/">Video</a> 1002 </li> 1003 1004 1005 <li> 1006 <a class="analytics t-topic-navigation-agencies" href="/topic/agencies/">Agencies</a> 1007 </li> 1008 1009 1010 <li> 1011 <a class="analytics t-topic-navigation-analytics" href="/topic/analytics/">Data/Analytics</a> 1012 </li> 1013 1014 1015 <li> 1016 <a class="analytics t-topic-navigation-influencer-marketing" href="/topic/influencer-marketing/">Influencer Marketing</a> 1017 </li> 1018 1019 1020 <li> 1021 <a class="analytics t-topic-navigation-marketing-tech" href="/topic/marketing-tech/">Ad Tech</a> 1022 </li> 1023 1024 1025 <li> 1026 <a class="analytics t-topic-navigation-cmo-corner" href="/topic/cmo-corner/">CMO Corner</a> 1027 </li> 1028 1029 1030 <li> 1031 <a class="analytics t-topic-navigation-brand-strategy" href="/topic/brand-strategy/">Brand Strategy</a> 1032 </li> 1033 1034 </ul> 1035</nav> 1036 1037 1038
1039<script type="module" src="/static/js/dist/navSignupHelper.bundle.js?281219230926" ></script>
1039 1040 1041
1042<script> 1043 window.siteName = 'Marketing Dive'; 1044</script>
1044 1045 1046 1047 1048 1049 1050 1051 <div class="search-overlay"></div> 1052 <div class="page-wrapper "> 1053 1054 <div class="page-inner-wrapper" id="skip-link-target"> 1055 1056 1057 1058 1059 1060 1061 1062 <div class="row"> 1063 <div class="medium-10 medium-centered large-12"> 1064 <section id="main-content" class="main-content large-8 columns"> 1065 1066 1067 1068 1069 <h1 class="heading-02">CPM Calculator</h1> 1070 1071 1072 1073 1074 1075 1076 1077 1078 <form id="cpm_form" class="form"> 1079 <h3 class="form__header">How to use the Marketing Dive CPM Calculator App:</h3> 1080 <p>Enter any two fields and press the button to calculate the third. Fields in the calculator include:</p> 1081 <ul> 1082 <li><strong>Total Cost:</strong> The total cost charged for a marketing campaign</li> 1083 <li><strong>CPM Rate:</strong> The cost of the campaign per 1,000 ad exposures</li> 1084 <li><strong>Ad Impressions:</strong> The total advertising impressions over the life of the marketing campaign</li> 1085 </ul> 1086 1087 <label for="totalInput">Total cost:</label> 1088 <input id="totalInput" name="total" type="text" class="totalInput"/> 1089 1090 <label for="cpmInput">CPM rate:</label> 1091 <input name="cpm" id="cpmInput" type="text" class="cpmInput"/> 1092 1093 <label for="impressionsInput">Ad impressions:</label> 1094 <input name="impressions" id="impressionsInput" type="text" class="impressionsInput"/> 1095 1096 <p id="errors" class="form-error__message"> 1097 You must enter exactly two values. The other will be calculated for you. 1098 </p> 1099 1100 <button type="button" id="calculateButton" class="button button--medium">Calculate</button> 1101 </form> 1102 1103 <br /> 1104 <div> 1105 1106 1107 1108 1109 1110 1111
1112<script type="module" src="/static/js/dist/articleTooltip.bundle.js?281219230926" ></script>
1112 1113 1114 1115 1116 1117<ul class="social-button-list"> 1118 1119
1119<script data-osano="PERSONALIZATION" src="//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js" type="text/javascript"></script>
1119 1120 <li class="google-preferred-icon"> 1121 <a href="https://www.google.com/preferences/source?q=https://www.marketingdive.com" 1122 aria-label="Add us on Google as a preferred source" 1123 target="_blank" 1124 data-tooltip="Add us as a Google Preferred Source to see more of our articles in your search results." 1125 class="social-icon-article google-preferred"> 1126 <img src="/static/img/social_icons/article_page/bookmark-add.svg?520919230926" alt=""> 1127 <span class="social-icon__text">Add us on Google</span> 1128 </a> 1129 </li> 1130 1131 1132 <li class="social-icon-article--share-wrapper"> 1133 <a href="javascript:void(0)" 1134 aria-label="Share article" 1135 class="social-icon-article social-icon-share"> 1136 <img src="/static/img/social_icons/share-icon.svg?520919230926" alt=""> 1137 <span class="social-icon__text">Share</span> 1138 </a> 1139 <div class="social-icon-share--tooltip"> 1140 <ul class="social-icon-list--inner"> 1141 <li class="share-icon-list"> 1142 <a href="javascript:void(0)" 1143 class="social-icon-article share-copy-link" 1144 data-copy-url="https://www.marketingdive.com/cpm-calculator-app/"> 1145 <img src="/static/img/social_icons/share_dropdown/share-link-box.svg?520919230926" alt=""> 1146 <span class="social-icon__text share-dropdown__text">Copy link</span> 1147 </a> 1148 </li> 1149 <li class="share-icon-list"> 1150 <a href="/cdn-cgi/l/email-protection#86b9d5f3e4ece3e5f2bbc5d6cba3b4b6c5e7eae5f3eae7f2e9f4a3b4b6c7f6f6a0e7ebf6bdc4e9e2ffbbeef2f2f6f5a3b5c7a9a9f1f1f1a8ebe7f4ede3f2efe8e1e2eff0e3a8e5e9eba9e5f6ebabe5e7eae5f3eae7f2e9f4abe7f6f6a9" aria-label="Share article with email" class="social-icon-article"> 1151 <img src="/static/img/social_icons/share_dropdown/email.svg?520919230926" alt=""> 1152 <span class="social-icon__text share-dropdown__text">Email</span> 1153 </a> 1154 </li> 1155 <li class="share-icon-list"> 1156 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A//www.marketingdive.com/cpm-calculator-app/&title=CPM%20Calculator%20App" 1157 aria-label="Share article to Linkedin" 1158 target="_blank" 1159 class="social-icon-article"> 1160 <img src="/static/img/social_icons/share_dropdown/linkedin.svg?520919230926" alt=""> 1161 <span class="social-icon__text share-dropdown__text">LinkedIn</span> 1162 </a> 1163 </li> 1164 <li class="share-icon-list"> 1165 <a href="https://twitter.com/intent/tweet?text=CPM%20Calculator%20App%20https%3A//www.marketingdive.com/cpm-calculator-app/%20via%20@marketingdive" 1166 aria-label="Share article to X/Twitter" 1167 target="_blank" 1168 class="social-icon-article"> 1169 <img src="/static/img/social_icons/share_dropdown/x.svg?520919230926" alt=""> 1170 <span class="social-icon__text share-dropdown__text">X/Twitter</span> 1171 </a> 1172 </li> 1173 <li class="share-icon-list"> 1174 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A//www.marketingdive.com/cpm-calculator-app/" 1175 aria-label="Share article to Facebook" 1176 target="_blank" 1177 class="social-icon-article"> 1178 <img src="/static/img/social_icons/share_dropdown/facebook.svg?520919230926" alt=""> 1179 <span class="social-icon__text share-dropdown__text">Facebook</span> 1180 </a> 1181 </li> 1182 1183 <li class="share-icon-list"> 1184 <a href="javascript:window.print()" 1185 aria-label="Print article" 1186 class="analytics -print social-icon-article js-social-icon-print"> 1187 <img src="/static/img/social_icons/share_dropdown/print.svg?520919230926" alt=""> 1188 <span class="social-icon__text share-dropdown__text">Print</span> 1189 </a> 1190 </li> 1191 1192 1193 </ul> 1194 </div> 1195 </li> 1196 1197</ul> 1198<div class="custom-tooltip"></div> 1199 1200 </div> 1201 1202 </section> 1203 <aside class="sidebar large-4 columns"> 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213<div class="hybrid-ad-wrapper hide-small show-large"> 1214 <div class="hybrid-ad-inner-wrapper"> 1215 1216 <div class="hide-small show-large"> 1217 1218 1219 <div id='dfp-hybrid1-desktop'>
vendor: 125 bytes, lines 1219-1220
1219 1220 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1220<script> 1221 if (window.dfp_visibility === 'desktop' ) { 1222 googletag.cmd.push(function() { 1223 googletag.defineSlot( 1224 '/3618/marketingdive/marketingdivehybrid1', 1225 [[300, 250], 'fluid', [160, 600]], 1226 'dfp-hybrid1-desktop' 1227 ).addService(googletag.pubads()); 1228 }); 1229 } 1230 waitToLoadAds.push(function() { 1231 googletag.cmd.push(function() { 1232 if (window.dfp_visibility === 'desktop' ) { 1233 window.onDvtagReady?.(() => googletag.display('dfp-hybrid1-desktop')); 1234 googletag.pubads().addEventListener('slotRenderEnded', function (event) { 1235 var adUnitPath = '/3618/marketingdive/marketingdivehybrid1'; 1236 var onProformative = false; 1237 if (onProformative && event.slot.getAdUnitPath() === adUnitPath && !event.isEmpty ) { 1238 var adUnitPathWithVisibility = adUnitPath + '-desktop'; 1239 var selector = '.pf-comments__ad-wrapper #dfp-hybrid1-desktop'; 1240 if (!$(selector).closest('.pf-comments__ad-wrapper').hasClass('borders')) { 1241 $(selector).closest('.pf-comments__ad-wrapper').addClass('borders') 1242 } 1243 } 1244 }); 1245 } 1246 }); 1247 }); 1248 </script>
1248 1249 </div> 1250 1251 </div> 1252 </div> 1253</div> 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 <div class="signup sidebar-signup-box hide-small show-large" data-box-priority="0"> 1271 1272 <h3 class="sidebar-signup-box__header">Get the free newsletter</h3> 1273 <p class="sidebar-signup-box__description">Subscribe to Marketing Dive for top news, trends & analysis</p> 1274 1275 1276 <form class="form js-form-email-validate" name="signup" action="/signup/" method="POST"> 1277 1278 1279 <label for="id_a35f4d_email" class="email-input js-email-input"> 1280 <span class="screen-reader-text">Email:</span> 1281 <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_a35f4d_email"> 1282 </label> 1283 1284 <span class="captcha-container"> 1285 <div class="g-recaptcha" data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4" ></div> 1286 </span> 1287 1288 <input type="hidden" name="signup_box_location" value="sidebar"> 1289 <input type="hidden" name="signup_initial_url_path" value="/cpm-calculator-app/"> 1290 <input type="hidden" name="signup_internal_referrer"> 1291 <input type="hidden" name="signup_external_referrer"> 1292 <input type="hidden" name="referral_url"> 1293 1294 1295 <input type="hidden" name="js_enabled" value="0" id="id_a35f4d_js_enabled"> 1296 1297 1298 1299 <ul class="signup-list list-no-bullets"> 1300 1301 1302 1303 <li> 1304 <label><span class="screen-reader-text">Select Newsletter:</span></label> 1305 <input id="newsletter-sidebar-checkbox-7" 1306 type="checkbox" 1307 name="site_newsletters" 1308 value="7" 1309 class="checkbox" 1310 1311 /> 1312 <label for="newsletter-sidebar-checkbox-7"> 1313 <span class="newsletter-title">Daily Dive</span> 1314 1315 <span class="secondary-label">M-F</span> 1316 1317 </label> 1318 </li> 1319 1320 <li> 1321 <label><span class="screen-reader-text">Select Newsletter:</span></label> 1322 <input id="newsletter-sidebar-checkbox-105" 1323 type="checkbox" 1324 name="site_newsletters" 1325 value="105" 1326 class="checkbox" 1327 1328 /> 1329 <label for="newsletter-sidebar-checkbox-105"> 1330 <span class="newsletter-title">Mobile Weekly</span> 1331 1332 <span class="secondary-label">Every Thursday</span> 1333 1334 </label> 1335 </li> 1336 1337 <li> 1338 <label><span class="screen-reader-text">Select Newsletter:</span></label> 1339 <input id="newsletter-sidebar-checkbox-1815" 1340 type="checkbox" 1341 name="site_newsletters" 1342 value="1815" 1343 class="checkbox" 1344 1345 /> 1346 <label for="newsletter-sidebar-checkbox-1815"> 1347 <span class="newsletter-title">
1347Agencies Weekly</span> 1348 1349 <span class="secondary-label">Every Monday</span> 1350 1351 </label> 1352 </li> 1353 1354 1355 1356 <li> 1357 <label><span class="screen-reader-text">Select user consent:</span></label> 1358 <input type="checkbox" name="user_consent" id="id_user_consent-sidebar" value="1" class="checkbox"/> 1359 <label for="id_user_consent-sidebar"> 1360 <span class="signup-user-consent_box"> 1361 <span> 1362 By signing up to receive our newsletter, you agree to our 1363 <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and 1364 <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime. 1365</span> 1366 1367 </span> 1368 </label> 1369 </li> 1370 </ul> 1371 1372 <button class="button button--medium signup-button" type="submit" value="Sign up">Sign up</button> 1373 1374 1375
1376<script type="module" src="/static/js/dist/sendEmailToLytics.bundle.js?281219230926" ></script>
1376 1377 1378 1379 <label class="error email_error" style="display:none;">A valid email address is required.</label> 1380 <label class="error newsletter-error" style="display:none;">Please select at least one newsletter.</label> 1381 </form> 1382 </div> 1383 1384 1385 1386 1387 1388 1389 1390 <div class="sidebar-signup-box-it-pub hide-small show-large" data-box-priority="0"> 1391 <div class="sidebar-signup-box-it-pub__sign-up-form"> 1392 <h3 class="sidebar-signup-box-it-pub__header">Take your <span class="it_signup_headline_industry"></span> knowledge further with <span class="it_signup_site_name"></span></h3> 1393 <p class="sidebar-signup-box-it-pub__description free-signup-text">Sign up for the free <span class="it_signup_site_name"></span> newsletter. <span class="it_signup_copy"></span></p> 1394 <div class="sidebar-signup-box-it-pub__related-publication"> 1395 <img class="sidebar-signup-box-it-pub__related-publication__logo" src="" alt="" /> 1396 <p class="sidebar-signup-box-it-pub__description"> 1397 Interested? Explore more of what <a class='it_signup_pub_link' href=""><span class="it_signup_site_name"></span></a> has to offer. 1398 </p> 1399 <div> 1400 <button class="button button-medium signup-button button-spinner" id="it_media_signup_button" type="button" data-sailthru-list-name=""> 1401 One-click newsletter signup 1402 <div class="lds-ring sidebar-signup-box-spinner"> 1403 <div></div> 1404 <div></div> 1405 <div></div> 1406 <div></div> 1407 </div> 1408 </button> 1409 </div> 1410 </div> 1411 </div> 1412 <div class="sidebar-signup-box-it-pub__success-message"> 1413 <h3 class="sidebar-signup-box__header"> 1414 <svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"> 1415 <path d="M15.6251 25L21.8751 31.25L34.3751 18.75M45.8334 25C45.8334 36.5058 36.5059 45.8333 25.0001 45.8333C13.4941 45.8333 4.16675 36.5058 4.16675 25C4.16675 13.4941 13.4941 4.16667 25.0001 4.16667C36.5059 4.16667 45.8334 13.4941 45.8334 25Z" stroke="#414192" stroke-linecap="round" stroke-linejoin="round"/> 1416 </svg> 1417 <div>You're all set</div> 1418 </h3> 1419 <p class="sidebar-signup-box__description"> 1420 Thanks for signing up! 1421 Please keep an eye out for a confirmation email from 1422 <a href="/cdn-cgi/l/email-protection#0a646f7d79666f7e7e6f784a637e7e646f7d79666f7e7e6f7824696567"><span class="__cf_email__" data-cfemail="a9c7ccdedac5ccddddccdbe9c0ddddc7ccdedac5ccddddccdb87cac6c4">[email protected]</span></a> 1423 To ensure we make it into your inbox regularly, 1424 add us to your allow list, mark us as a safe sender, or add us to your address book. 1425 Check out more from 1426 <a class='it_signup_pub_link' href=""><span class="it_signup_pub_link"></span></a> 1427 </p> 1428 </div> 1429</div> 1430 1431 1432 1433 <div class="subscriber-demographics demographics-form" id="demographics-box-sidebar"></div>
vendor: 121 bytes, lines 1433-1434
1433 1434 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1434<script src="/static/js/subscriberDemographicsForm.js?520919230926"></script>
1434 1435
1435<script> 1436 var siteName = 'Marketing Dive' || null; 1437 if (siteName) { 1438 setupFormCallbackAndCreateFormIfSub(siteName, 'sidebar'); 1439 } 1440 </script>
1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 <div class="sidebar-box" data-box-priority="2"> 1455 <h3 class="sidebar-box__header sidebar-box__header--loud"> 1456 Most Popular 1457 </h3> 1458 <ol class="sidebar-box-list sidebar-box-list--ordered"> 1459 1460 <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex"> 1461 <!-- image --> 1462 <div class="sidebar-box-list__image-container"> 1463 <a class="analytics t-most-popular-sidebar-item-1 hide-small show-large" 1464 href="/news/inside-mcdonalds-new-marketing-model-as-it-enters-media-network-fray/831170/"> 1465 1466 1467 1468 1469 <img 1470 class="sidebar-box-list__image" 1471 src="https://imgproxy.divecdn.com/rtrjLXa8Z-G4-a4eLexvgwwebYQnhkhMoxmeHYahvcU/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTgwNTQ2MTkyX1RPWDJkcDMuanBn.webp" 1472 width="600" height="338" 1473 srcset="https://imgproxy.divecdn.com/30Kmd0tO6xaJEi-5CUu97C6BGmOEBfpI8hlECWCUdaQ/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTgwNTQ2MTkyX1RPWDJkcDMuanBn.webp 300w, https://imgproxy.divecdn.com/rtrjLXa8Z-G4-a4eLexvgwwebYQnhkhMoxmeHYahvcU/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0yMTgwNTQ2MTkyX1RPWDJkcDMuanBn.webp 600w" 1474 sizes="25vw" 1475 alt="Customers pass in the Drive Thru lane during breakfast hours at a McDonaldâs restaurant on October 23, 2024 in Omaha, Nebraska." 1476 1477 loading="lazy" 1478 1479 > 1480 1481 1482 </a> 1483 </div> 1484 <div class="sidebar-box-title-container"> 1485 1486 1487 1488 1489 1490 1491 1492 <a class="analytics t-most-popular-sidebar-item-1 sidebar-box-list__item-title" 1493 href="/news/inside-mcdonalds-new-marketing-model-as-it-enters-media-network-fray/831170/">Inside McDonaldâs new marketing model as it enters media network fray 1494 </a> <!--Article Title--> 1495 </div> 1496 </li> 1497 1498 <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex"> 1499 <!-- image --> 1500 <div class="sidebar-box-list__image-container"> 1501 <a class="analytics t-most-popular-sidebar-item-2 hide-small show-large" 1502 href="/news/how-chilis-marketing-works-and-why-mexican-qsrs-are-its-next-target/830959/"> 1503 1504 1505 1506 1507 <img 1508 class="sidebar-box-list__image" 1509 src="https://imgproxy.divecdn.com/RS1hElV5Wy75ccY8iPrho0A6Ol00k0QC8zVw-nWq5hE/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9jaGlsaXMtcXVlc28uanBn.webp" 1510 width="600" height="338" 1511 srcset="https://imgproxy.divecdn.com/uyvSy77CursXXcEtArf-n8yuenVFAVpx8FIJsnZ9njU/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9jaGlsaXMtcXVlc28uanBn.webp 300w, https://imgproxy.divecdn.com/RS1hElV5Wy75ccY8iPrho0A6Ol00k0QC8zVw-nWq5hE/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9jaGlsaXMtcXVlc28uanBn.webp 600w" 1512 sizes="25vw" 1513 alt="A person dips a chip in Chili's queso" 1514 1515 loading="lazy" 1516 1517 > 1518 1519 1520 </a> 1521 </div> 1522 <div class="sidebar-box-title-container"> 1523 1524 1525 1526 1527 1528 1529 1530 <a class="analytics t-most-popular-sidebar-item-2 sidebar-box-list__item-title" 1531 href="/news/how-chilis-marketing-works-and-why-mexican-qsrs-are-its-next-target/830959/">How Chiliâs marketing works â and why Mexican QSRs are its next target 1532 </a> <!--Article Title--> 1533 </div> 1534 </li> 1535 1536 <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex"> 1537 <!-- image --> 1538 <div class="sidebar-box-list__image-container"> 1539 <a class="analytics t-most-popular-sidebar-item-3 hide-small show-large" 1540 href="/news/accenture-song-signals-us-media-ambitions-with-exec-appointment/830854/"> 1541 1542 1543 1544 1545 <img 1546 class="sidebar-box-list__image" 1547 src="https://imgproxy.divecdn.com/tn5WNfiPbf90qKDs2S2yn-WcpxWPYA8taF3GrDJdTA0
1547/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNzk1NDk5MTQ0X0hEazRDQnguanBn.webp" 1548 width="600" height="338" 1549 srcset="https://imgproxy.divecdn.com/X-Ftfo-nGLexQrGxw6tR1dp6rjuiR4fSiKLkfmgagws/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNzk1NDk5MTQ0X0hEazRDQnguanBn.webp 300w, https://imgproxy.divecdn.com/tn5WNfiPbf90qKDs2S2yn-WcpxWPYA8taF3GrDJdTA0/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS9HZXR0eUltYWdlcy0xNzk1NDk5MTQ0X0hEazRDQnguanBn.webp 600w" 1550 sizes="25vw" 1551 alt="The facade of the French headquarters of Accenture in Paris on Nov. 15, 2023." 1552 1553 loading="lazy" 1554 1555 > 1556 1557 1558 </a> 1559 </div> 1560 <div class="sidebar-box-title-container"> 1561 1562 1563 1564 1565 1566 1567 1568 <a class="analytics t-most-popular-sidebar-item-3 sidebar-box-list__item-title" 1569 href="/news/accenture-song-signals-us-media-ambitions-with-exec-appointment/830854/">Accenture Song signals US media ambitions with exec appointment 1570 </a> <!--Article Title--> 1571 </div> 1572 </li> 1573 1574 <li class="sidebar-box-list__item sidebar-box-list__item--ordered flex"> 1575 <!-- image --> 1576 <div class="sidebar-box-list__image-container"> 1577 <a class="analytics t-most-popular-sidebar-item-4 hide-small show-large" 1578 href="/news/targets-new-campaign-puts-design-legacy-at-center-of-marketing/831116/"> 1579 1580 1581 1582 1583 <img 1584 class="sidebar-box-list__image" 1585 src="https://imgproxy.divecdn.com/rZFXE9rO6jCjUCTyWT11d0LyPM0CPzvhLqqidRX8MnE/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS90YXJnZXQtaW5zaWRlLW91dC5wbmc=.webp" 1586 width="600" height="338" 1587 srcset="https://imgproxy.divecdn.com/t03BRYV7LLIq63lCMbkdEO2nvgRN7K8FhPHyZVTT-a4/g:ce/rs:fill:300:169:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS90YXJnZXQtaW5zaWRlLW91dC5wbmc=.webp 300w, https://imgproxy.divecdn.com/rZFXE9rO6jCjUCTyWT11d0LyPM0CPzvhLqqidRX8MnE/g:ce/rs:fill:600:338:1/Z3M6Ly9kaXZlc2l0ZS1zdG9yYWdlL2RpdmVpbWFnZS90YXJnZXQtaW5zaWRlLW91dC5wbmc=.webp 600w" 1588 sizes="25vw" 1589 alt="Target "Inside Out" ad creative" 1590 1591 loading="lazy" 1592 1593 > 1594 1595 1596 </a> 1597 </div> 1598 <div class="sidebar-box-title-container"> 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 <a class="analytics t-most-popular-sidebar-item-4 sidebar-box-list__item-title" 1612 href="/news/targets-new-campaign-puts-design-legacy-at-center-of-marketing/831116/">Targetâs new campaign puts design legacy at center of marketing 1613 </a> <!--Article Title--> 1614 </div> 1615 </li> 1616 1617 </ol> 1618 </div> 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 <div class="sidebar-box hide-small show-large" data-box-priority="4"> 1633 <h3 class="sidebar-box__header">Library resources</h3> 1634 <ul class="sidebar-box-list"> 1635 1636 <li class="sidebar-box-list__item flex"> 1637 1638 <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'> 1639 1640 <img src="/static/img/lib_icons/playbook-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy"> 1641 1642 </div> 1643 1644 <div> 1645 1646 <div class="label label--soft">Playbook</div> 1647 1648 <a class="analytics t-library-sidebar-item-1 sidebar-box-list__item-title" 1649 target="_blank" 1650 href="https://packagingdive.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp%3A&qf=w_defa11610&ch=library&utm_source=MD&utm_medium=Library&utm_campaign=AveryDennison"> 1651 How RFID Changes Retail by Making Every Product Count 1652 </a> 1653 1654 1655 1656 <span class="sponsor-label__leading-text secondary-label">Custom content for </span> 1657 <span class="sponsor-label__name secondary-label">Avery Dennison</span> 1658 1659 1660 </div> 1661 </li> 1662 1663 <li class="sidebar-box-list__item flex"> 1664 1665 <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'> 1666 1667 <img src="/static/img/lib_icons/playbook-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy"> 1668 1669 </div> 1670 1671 <div> 1672 1673 <div class="label label--soft">Playbook</div> 1674 1675 <a class="analytics t-library-sidebar-item-2 sidebar-box-list__item-title" 1676 target="_blank" 1677 href="https://retaildive.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp%3A&qf=w_defa11728&ch=library&utm_source=Marketing&utm_medium=Library&utm_campaign=Werner"> 1678 How Heavy Goods Retailers Can Transform Last Mile Delivery 1679 </a> 1680 1681 1682 1683 <span class="sponsor-label__leading-text secondary-label">Custom content for </span> 1684 <span class="sponsor-label__name secondary-label">Werner</span> 1685 1686 1687 </div> 1688 </li> 1689 1690 <li class="sidebar-box-list__item flex"> 1691 1692 <div class='sidebar-box-list__icon sidebar-box-list__icon--soft'> 1693 1694 <img src="/static/img/lib_icons/playbook-black.svg?520919230926" height="25" width="25" alt="Studio resource icon" loading="lazy"> 1695 1696 </div> 1697 1698 <div> 1699 1700 <div class="label label--soft">Playbook</div> 1701 1702 <a class="analytics t-library-sidebar-item-3 sidebar-box-list__item-title" 1703 target="_blank" 1704 href="https://retaildive.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp%3A&qf=w_defa11632&ch=library&utm_source=MD&utm_medium=Library&utm_campaign=JLL"> 1705 How To Drive Profits With Predictive Facilities Management 1706 </a> 1707 1708 1709 1710 <span class="sponsor-label__leading-text secondary-label">Custom content for </span> 1711 <span class="sponsor-label__name secondary-label">JLL</span> 1712 1713 1714 </div> 1715 </li> 1716 1717 </ul> 1718 <a class="analytics t-library-sidebar-all sidebar-box__cta" 1719 aria-label="View all library items" 1720 href="/library/">View all</a> 1721 </div> 1722 1723 1724 1725 1726 1727 1728 1729
1730<div class="sidebar-box js-pressrelease-sidebar-box" data-box-priority=" 6 "> 1731 <h3 class="sidebar-box__header">Company Announcements</h3> 1732 <div class="press-release-placeholder"> 1733 <ul class="sidebar-box-list" 1734 hx-get="/api/v3/htmx/boxes/pressrelease-sidebar-box/" 1735 hx-trigger="load" 1736 hx-swap="outerHTML"> 1737 1738 1739 <li class="sidebar-box-list__item flex pr-box-skeleton-item"> 1740 <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div> 1741 <div class="sidebar-box-title-container"> 1742 <div class="pr-box-skeleton-text-line"></div> 1743 <div class="pr-box-skeleton-text-line"></div> 1744 <div class="pr-box-skeleton-text-line"></div> 1745 <div class="pr-box-skeleton-text-line"></div> 1746 <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div> 1747 </div> 1748 </li> 1749 1750 <li class="sidebar-box-list__item flex pr-box-skeleton-item"> 1751 <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div> 1752 <div class="sidebar-box-title-container"> 1753 <div class="pr-box-skeleton-text-line"></div> 1754 <div class="pr-box-skeleton-text-line"></div> 1755 <div class="pr-box-skeleton-text-line"></div> 1756 <div class="pr-box-skeleton-text-line"></div> 1757 <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div> 1758 </div> 1759 </li> 1760 1761 <li class="sidebar-box-list__item flex pr-box-skeleton-item"> 1762 <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div> 1763 <div class="sidebar-box-title-container"> 1764 <div class="pr-box-skeleton-text-line"></div> 1765 <div class="pr-box-skeleton-text-line"></div> 1766 <div class="pr-box-skeleton-text-line"></div> 1767 <div class="pr-box-skeleton-text-line"></div> 1768 <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div> 1769 </div> 1770 </li> 1771 1772 <li class="sidebar-box-list__item flex pr-box-skeleton-item"> 1773 <div class="sidebar-box-list__thumbnail-container pr-box-skeleton-image"></div> 1774 <div class="sidebar-box-title-container"> 1775 <div class="pr-box-skeleton-text-line"></div> 1776 <div class="pr-box-skeleton-text-line"></div> 1777 <div class="pr-box-skeleton-text-line"></div> 1778 <div class="pr-box-skeleton-text-line"></div> 1779 <div class="pr-box-skeleton-text-line pr-box-skeleton-company-name"></div> 1780 </div> 1781 </li> 1782 1783 </ul> 1784 <span class="sidebar-box__cta"> 1785 <a class="analytics t-pr-sidebar-all" 1786 aria-label="View all press release items" 1787 href="/press-release/">View all</a> 1788 1789 | <a class="analytics t-pr-sidebar-start" href="/press-release/get-started/">Post a press release</a> 1790 1791 </span> 1792 </div> 1793</div> 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 <div class="sidebar-box hide-small show-large" data-box-priority="8"> 1808 <h3 class="sidebar-box__header">What We're Reading</h3> 1809 <ul class="sidebar-box-list"> 1810 1811 1812 <li class="sidebar-box-list__item"> 1813 <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.wsj.com/business/retail/general-mills-profit-sales-slip-as-turnaround-continues-14bcb98a" 1814 srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.wsj.com/business/retail/general-mills-profit-sales-slip-as-turnaround-continues-14bcb98a 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//www.wsj.com/business/retail/general-mills-profit-sales-slip-as-turnaround-continues-14bcb98a 2x" height="16" width="16" alt="" loading="lazy">
1815 <span class="label label--soft">The Wall Street Journal</span> 1816 <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://www.wsj.com/business/retail/general-mills-profit-sales-slip-as-turnaround-continues-14bcb98a" target="_blank"> 1817 General Mills Profit, Sales Slip as Turnaround Continues 1818 <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy"> 1819 </a> 1820 </li> 1821 1822 <li class="sidebar-box-list__item"> 1823 <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.bbc.com/sport/football/articles/cq4g528drx79o" 1824 srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.bbc.com/sport/football/articles/cq4g528drx79o 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//www.bbc.com/sport/football/articles/cq4g528drx79o 2x" height="16" width="16" alt="" loading="lazy"> 1825 <span class="label label--soft">BBC</span> 1826 <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://www.bbc.com/sport/football/articles/cq4g528drx79o" target="_blank"> 1827 âConstant bombardmentâ - fans shown 65,000 junk food ads at World Cup 1828 <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy"> 1829 </a> 1830 </li> 1831 1832 <li class="sidebar-box-list__item"> 1833 <img src="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.adweek.com/convergent-tv/tv-measurement-companies-comscore-ispot-and-videoamp-get-new-vote-of-confidence/" 1834 srcset="https://www.google.com/s2/favicons?sz=32&domain=https%3A//www.adweek.com/convergent-tv/tv-measurement-companies-comscore-ispot-and-videoamp-get-new-vote-of-confidence/ 1x, https://www.google.com/s2/favicons?sz=64&domain=https%3A//www.adweek.com/convergent-tv/tv-measurement-companies-comscore-ispot-and-videoamp-get-new-vote-of-confidence/ 2x" height="16" width="16" alt="" loading="lazy"> 1835 <span class="label label--soft">Adweek</span> 1836 <a class="analytics t-wwr-sidebar-item sidebar-box-list__item-title" href="https://www.adweek.com/convergent-tv/tv-measurement-companies-comscore-ispot-and-videoamp-get-new-vote-of-confidence/" target="_blank"> 1837 TV Measurement Companies Comscore, iSpot, and VideoAmp Get New Vote of Confidence 1838 <img src="/static/img/offsite.svg?520919230926" class="off-site-link" alt="offsite link" height="12" width="12" loading="lazy"> 1839 </a> 1840 </li> 1841 1842 </ul> 1843 <a class="analytics t-wwr-sidebar-all sidebar-box__cta" 1844 aria-label="View all what we are reading items" 1845 href="/what-we-are-reading">View all</a> 1846 </div> 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859<div class="sidebar-box hide-small show-large" data-box-priority="10"> 1860 <h3 class="sidebar-box__header">Events</h3> 1861 <div class="events-placeholder"> 1862 <ul class="sidebar-box-list" 1863 hx-get="/api/v3/htmx/boxes/events-sidebar-box/" 1864 hx-trigger="load" 1865 hx-swap="outerHTML"> 1866 1867 1868 <li class="sidebar-box-list__item flex events-box-skeleton-item"> 1869 <div class="sidebar-box-list__events-date events-box-skeleton-date"> 1870 <span class="events-box-skeleton-day"></span>
1871 <span class="events-box-skeleton-month"></span> 1872 </div> 1873 <div class="sidebar-box-title-container__events"> 1874 <div class="events-box-skeleton-text-line"></div> 1875 <div class="events-box-skeleton-text-line"></div> 1876 <div class="events-box-skeleton-text-line events-box-skeleton-location"></div> 1877 </div> 1878 </li> 1879 1880 <li class="sidebar-box-list__item flex events-box-skeleton-item"> 1881 <div class="sidebar-box-list__events-date events-box-skeleton-date"> 1882 <span class="events-box-skeleton-day"></span> 1883 <span class="events-box-skeleton-month"></span> 1884 </div> 1885 <div class="sidebar-box-title-container__events"> 1886 <div class="events-box-skeleton-text-line"></div> 1887 <div class="events-box-skeleton-text-line"></div> 1888 <div class="events-box-skeleton-text-line events-box-skeleton-location"></div> 1889 </div> 1890 </li> 1891 1892 </ul> 1893 <div class="sidebar-box__cta"> 1894 <a class="analytics t-events-sidebar-all" href="/events/">View all</a> 1895 1896 | <a class="analytics t-events-sidebar-start" href="/selfservice/event-listings/contact">Promote an event</a> 1897 1898 </div> 1899 </div> 1900</div> 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 <div class="sidebar-box hide-small show-large" data-box-priority="8"> 1912 <h3 class="sidebar-box__header">Industry Intel</h3> 1913 <ul class="sidebar-box-list"> 1914 1915 <li class="sidebar-box-list__item"> 1916 <a class="analytics t-intel-sidebar-item sidebar-box-list__item-title" 1917 target="_blank" 1918 href="https://resources.industrydive.com/What-Does-AI-Think-About-Your-Brand"> 1919 What Does AI Think About Your Brand? 1920 </a> 1921 1922 <span class="secondary-label secondary-label--all-caps">Webinar - on demand</span> 1923 1924 1925 1926 <span class="secondary-label">•</span> 1927 1928 <span class="secondary-label">Provided by BERA.ai</span> 1929 1930 </li> 1931 1932 <li class="sidebar-box-list__item"> 1933 <a class="analytics t-intel-sidebar-item sidebar-box-list__item-title" 1934 target="_blank" 1935 href="https://resources.industrydive.com/creative-subscriptions?utm_source=MD&utm_medium=Library&utm_campaign=DesignPickle"> 1936 Hit Subscribe: How Creative Subscriptions Are Changing the Marketing Game 1937 </a> 1938 1939 <span class="secondary-label secondary-label--all-caps">Webinar - on demand</span> 1940 1941 1942 1943 <span class="secondary-label">•</span> 1944 1945 <span class="secondary-label">Provided by Design Pickle</span> 1946 1947 </li> 1948 1949 <li class="sidebar-box-list__item"> 1950 <a class="analytics t-intel-sidebar-item sidebar-box-list__item-title" 1951 target="_blank" 1952 href="https://resources.industrydive.com/Why-Mental-Availability-Is-Your-Brands-Ultimate-Growth-Engine"> 1953 Don't Get Left Behind: Why Mental Availability Is Your Brand's Ultimate Growth Engine 1954 </a> 1955 1956 <span class="secondary-label secondary-label--all-caps">Webinar - on demand</span> 1957 1958 1959 1960 <span class="secondary-label">•</span> 1961
1962 <span class="secondary-label">Provided by quantilope</span> 1963 1964 </li> 1965 1966 </ul> 1967 </div> 1968 1969 1970 1971 1972 1973 1974 1975 1976<div class="hybrid-ad-wrapper hide-small show-large"> 1977 <div class="hybrid-ad-inner-wrapper"> 1978 1979 <div class="hide-small show-large"> 1980 1981 1982 <div id='dfp-hybrid2-desktop'> 1983
1983<script> 1984 if (window.dfp_visibility === 'desktop' ) { 1985 googletag.cmd.push(function() { 1986 googletag.defineSlot( 1987 '/3618/marketingdive/marketingdivehybrid2', 1988 [[300, 250], 'fluid', [160, 600]], 1989 'dfp-hybrid2-desktop' 1990 ).addService(googletag.pubads()); 1991 }); 1992 } 1993 waitToLoadAds.push(function() { 1994 googletag.cmd.push(function() { 1995 if (window.dfp_visibility === 'desktop' ) { 1996 window.onDvtagReady?.(() => googletag.display('dfp-hybrid2-desktop')); 1997 googletag.pubads().addEventListener('slotRenderEnded', function (event) { 1998 var adUnitPath = '/3618/marketingdive/marketingdivehybrid2'; 1999 var onProformative = false; 2000 if (onProformative && event.slot.getAdUnitPath() === adUnitPath && !event.isEmpty ) { 2001 var adUnitPathWithVisibility = adUnitPath + '-desktop'; 2002 var selector = '.pf-comments__ad-wrapper #dfp-hybrid2-desktop'; 2003 if (!$(selector).closest('.pf-comments__ad-wrapper').hasClass('borders')) { 2004 $(selector).closest('.pf-comments__ad-wrapper').addClass('borders') 2005 } 2006 } 2007 }); 2008 } 2009 }); 2010 }); 2011 </script>
2011 2012 </div> 2013 2014 </div> 2015 </div> 2016</div> 2017 2018 2019 2020 2021 2022 2023 </aside> 2024 </div> 2025 </div> 2026 2027 2028 2029 </div> <!-- ends page-inner-wrapper --> 2030 2031 <section class="pre-footer"> 2032 2033 </section> 2034 2035 2036 2037 2038 2039 2040 2041 2042<hr class="footer-hr"> 2043<footer> 2044 <div class="custom-article-footer"> 2045 <div class="row columns"> 2046 <div class="footer-grid"> 2047 <div class="footer-links"> 2048 <img class="pub-logo-footer" src="https://d12v9rtnomnebu.cloudfront.net/logo/publications/marketing_black.svg" alt="Marketing Dive Logo" height="28" loading="lazy"/> 2049 2050 2051 2052 2053<ul class="social-icon-list social-icon-list__footer"> 2054 2055 <li> 2056 <a href="https://www.linkedin.com/company/marketing-dive-digital-&-online-marketing-news-and-tips" 2057 aria-label="Industry Dive LinkedIn" 2058 class="social-icon-footer analytics t-sitefooter-linkedin"> 2059 <img src="/static/img/social_icons/article_page/linkedin.svg?520919230926" alt=""> 2060 </a> 2061 </li> 2062 2063 2064 <li> 2065 <a href="https://www.facebook.com/MarketingDive/" 2066 aria-label="Industry Dive Facebook" 2067 class="social-icon-footer analytics t-sitefooter-facebook"> 2068 <img src="/static/img/social_icons/article_page/facebook.svg?520919230926" alt=""> 2069 </a> 2070 </li> 2071 2072 2073 <li> 2074 <a href="https://twitter.com/marketingdive" 2075 aria-label="Industry Dive X/Twitter" 2076 class="social-icon-footer analytics t-sitefooter-twitter"> 2077 <img src="/static/img/social_icons/article_page/x.svg?520919230926" alt=""> 2078 </a> 2079 </li> 2080 2081 2082 2083 <li> 2084 <a href="https://www.marketingdive.com/feeds/news/" 2085 aria-label="Industry Dive RSS feed" 2086 class="social-icon-footer analytics t-sitefooter-rss"> 2087 <img src="/static/img/social_icons/article_page/rss.svg?520919230926" alt=""> 2088 </a> 2089 </li> 2090</ul> 2091 2092 </div> 2093 <div class="link-wrapper"> 2094 <div class="footer-links"> 2095 <h4 class="uppercase-heading-01">Explore</h4> 2096 <ul class="list-no-bullets"> 2097 <li> 2098 <a href="/about/" class="analytics t-about-sitefooter">About</a> 2099 </li> 2100 2101 <li> 2102 <a href="/editors/" class="analytics t-editors-sitefooter">Editorial Team</a> 2103 </li> 2104 2105 <li> 2106 <a href="/contact/" class="analytics t-feedback-sitefooter">Contact Us</a> 2107 </li> 2108 2109 <li> 2110 <a href="/signup/?signup_location=footer-list&signup_path=/cpm-calculator-app/" 2111 rel="nofollow" class="analytics t-signup-sitefooter">Newsletter</a> 2112 </li> 2113 2114 <li> 2115 <a href="/selfservice/article-licensing/submit/" 2116 rel="nofollow" class="analytics t-licensing-sitefooter">Purchase Licensing Rights</a> 2117 </li> 2118 2119 2120 2121 <li> 2122 <a class="analytics t-pr-sitefooter-all" href="/press-release/">Press Releases</a> 2123 </li> 2124 2125 2126 2127 2128 2129 <li> 2130 <a href="/what-we-are-reading/" class="analytics t-wwr-sitefooter">What We're Reading</a> 2131 </li> 2132 2133 2134 <li> 2135 <a href="/cpm-calculator-app/" class="analytics t-cpm-sitefooter">CPM Calculator</a> 2136 </li> 2137 2138 2139 2140 </ul> 2141 </div> 2142 <div class="second-column"> 2143 <div class="footer-links"> 2144 <h4 class="uppercase-heading-01">Reach our audience</h4> 2145 <ul class="list-no-bullets"> 2146 2147 <li> 2148 <a href="/advertise/" 2149 class="analytics t-advertising-sitefooter">Advertising</a> 2150 </li> 2151 2152 2153 <li> 2154 <a class="analytics t-pr-sitefooter-all" 2155 href="/press-release/get-started/">Post a press release</a> 2156 </li> 2157 2158 2159 2160 <li> 2161 <a class="analytics t-events-sitefooter-start" href="/selfservice/event-listings/contact">Promote an event</a> 2162 </li> 2163 2164 2165 </ul> 2166 </div> 2167 <div class="footer-links"> 2168 2169 2170 <h4 class="uppercase-heading-01">Related Publications</h4> 2171 <ul class="list-no-bullets"> 2172 2173 <li> 2174 <a href="https://www.customerexperiencedive.com/" 2175 class="analytics t-sitefooter-related-cx-dive">CX Dive</a> 2176 </li> 2177 2178 <li> 2179 <a href="https://www.retaildive.com/" 2180 class="analytics t-sitefooter-related-retail-dive">Retail Dive</a> 2181 </li> 2182 2183 <li> 2184 <a href="https://www.socialmediatoday.com/" 2185 class="analytics t-sitefooter-related-social-media-today">Social Media Today</a> 2186 </li> 2187 2188 </ul> 2189 2190 2191 </div> 2192 </div> 2193 </div> 2194 </div> 2195 </div> 2196 </div> 2197</footer> 2198<hr class="footer-hr"> 2199<div class="baseline-footer-wrapper"> 2200 <div class="baseline-footer-logo"> 2201 <a href="https://www.informatechtarget.com"> 2202 <img src="/static/img/ITechTarget-Logo.png?520919230926" alt="Informa TechTarget" loading="lazy" /> 2203 </a> 2204 </div> 2205 <div class="baseline-footer-content"> 2206 <div> 2207 2208 This website is owned and operated by 2209 <a href="https://www.informatechtarget.com/" rel="noopener noreferrer">Informa TechTarget</a>, 2210 a global network that informs, influences and connects the world's technology buyers and sellers. 2211 2212 </div> 2213 <br> 2214 <div class="informa-legal-notice"> 2215 2216 2217<div class="baseline-footer"> 2218 © 2025 TechTarget, Inc. or its subsidiaries. All rights reserved. An Informa PLC company. 2219 <br> 2220 <a href="https://www.informatechtarget.com/privacy-policy/">Privacy policy</a> 2221 | <a href="https://www.informatechtarget.com/terms-of-use/">Terms of use</a> 2222 | <a href="https://www.industrydive.com/takedown-policy/">Take down policy</a> 2223 | <a href="#" onclick="Osano.cm.showDrawer('osano-cm-dom-info-dialog-open')">Cookie Preferences / Do Not Sell</a> 2224</div> 2225 2226 </div> 2227 </div> 2228</div> 2229 2230 2231 2232 </div> 2233 </div> 2234 2235 2236
2237 <!-- mobile menu, not visible on desktop, must go AFTER footer --> 2238 2239 2240 2241 2242 <nav class="mobile-menu"> 2243 <div class="mm-top-bar"> 2244 <div class="mm-search"> 2245 <form class="mm-search__form" action="/search/" method="GET" data-ajax="false" data-search-track data-search-tracking-url="/search/tracking/"> 2246 <label for="search-mobile" class="screen-reader-text">Search</label> 2247 <input 2248 id="search-mobile" 2249 class="mm-search__input" 2250 type="search" 2251 name="q" 2252 placeholder="Ask a question..." 2253 data-role="none" 2254 autocomplete="off" 2255 > 2256 <button 2257 type="button" 2258 class="mm-search__clear js-mm-search-clear" 2259 aria-label="Clear search" 2260 hidden 2261 > 2262 <img src="/static/img/components/forms/x-circle.svg?520919230926" width="16" height="16" alt=""> 2263 </button> 2264 </form> 2265 </div> 2266 2267 2268 <button type="button" class="mm-top-bar__close js-mm-close" aria-label="Close menu"> 2269 <img src="/static/img/menu_icons/close.svg?520919230926" width="16" height="16" alt=""> 2270 </button> 2271 2272 </div> 2273 2274 2275 2276 2277 2278 2279<ul class="mm-list list-no-bullets"> 2280 <li> 2281 <a href="/" class="analytics t-dash-navigation-mobile"> 2282 <span>Home</span> 2283 </a> 2284 </li> 2285 <li class="mm-accordion"> 2286 <button> 2287 <span>Topics</span> 2288 <span class="accordion-toggle-arrow"> 2289 <img src="/static/img/menu_icons/chevron_down.svg?520919230926" width="16" height="9" alt="down arrow" loading="lazy"> 2290 </span> 2291 </button> 2292 <ul class="list-no-bullets"> 2293 2294 2295 <li> 2296 <a class="analytics t-topic-navigation-mobile-mobile-marketing" href="/topic/mobile-marketing/">Mobile</a> 2297 </li> 2298 2299 2300 <li> 2301 <a class="analytics t-topic-navigation-mobile-creative" href="/topic/creative/">Creative</a> 2302 </li> 2303 2304 2305 <li> 2306 <a class="analytics t-topic-navigation-mobile-Social-media-marketing" href="/topic/Social-media-marketing/">Social Media</a> 2307 </li> 2308 2309 2310 <li> 2311 <a class="analytics t-topic-navigation-mobile-Video-marketing" href="/topic/Video-marketing/">Video</a> 2312 </li> 2313 2314 2315 <li> 2316 <a class="analytics t-topic-navigation-mobile-agencies" href="/topic/agencies/">Agencies</a> 2317 </li> 2318 2319 2320 <li> 2321 <a class="analytics t-topic-navigation-mobile-analytics" href="/topic/analytics/">Data/Analytics</a> 2322 </li> 2323 2324 2325 <li> 2326 <a class="analytics t-topic-navigation-mobile-influencer-marketing" href="/topic/influencer-marketing/">Influencer Marketing</a> 2327 </li> 2328 2329 2330 <li> 2331 <a class="analytics t-topic-navigation-mobile-marketing-tech" href="/topic/marketing-tech/">Ad Tech</a> 2332 </li> 2333 2334 2335 <li> 2336 <a class="analytics t-topic-navigation-mobile-cmo-corner" href="/topic/cmo-corner/">CMO Corner</a> 2337 </li> 2338 2339 2340 <li> 2341 <a class="analytics t-topic-navigation-mobile-brand-strategy" href="/topic/brand-strategy/">Brand Strategy</a> 2342 </li> 2343 2344 </ul> 2345 </li> 2346 2347 <li> 2348 <a href="/deep-dive/" class="analytics t-deepdive-navigation-mobile"> 2349 <span>Deep Dive</span> 2350 </a> 2351 </li> 2352 2353 2354 2355 2356 <li> 2357 <a href="/library/" class="analytics t-library-navigation-mobile">
2358 <span>Library</span> 2359 </a> 2360 </li> 2361 2362 2363 <li> 2364 <a href="/events/" class="analytics t-events-navigation-mobile"> 2365 <span>Events</span> 2366 </a> 2367 </li> 2368 2369 2370 <li> 2371 <a href="/press-release/" class="analytics t-press-releases-navigation-mobile"> 2372 <span>Press Releases</span> 2373 </a> 2374 </li> 2375 2376 2377 2378 2379</ul> 2380 2381 2382 2383 2384 2385 <section class="signup mm-signup"> 2386 <div class="row"> 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 <div class="large-9 medium-10 medium-centered columns"> 2399 <h3 class="display-heading-03 display-heading-03--loud">Get Marketing Dive in your inbox</h3> 2400 <p class="subhead">The free newsletter covering the top industry headlines</p> 2401 2402 <form class="form js-form-email-validate" name="signup" action="/signup/" method="POST"> 2403 2404 2405 <label for="id_f3e713_email" class="email-input js-email-input"> 2406 <span class="screen-reader-text">Email:</span> 2407 <input type="email" name="email" placeholder="Work email address" class="email" maxlength="320" required id="id_f3e713_email"> 2408 </label> 2409 2410 <span class="captcha-container"> 2411 <div class="g-recaptcha" data-sitekey="6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa--TCG9F4" ></div> 2412 </span> 2413 2414 <input type="hidden" name="signup_box_location" value="integrated_menu"> 2415 <input type="hidden" name="signup_initial_url_path" value="/cpm-calculator-app/"> 2416 <input type="hidden" name="signup_internal_referrer"> 2417 <input type="hidden" name="signup_external_referrer"> 2418 <input type="hidden" name="referral_url"> 2419 2420 2421 <input type="hidden" name="js_enabled" value="0" id="id_f3e713_js_enabled"> 2422 2423 2424 2425 <ul class="signup-list list-no-bullets"> 2426 2427 2428 2429 <li> 2430 <label><span class="screen-reader-text">Select Newsletter:</span></label> 2431 <input id="newsletter-integrated_menu-checkbox-7" 2432 type="checkbox" 2433 name="site_newsletters" 2434 value="7" 2435 class="checkbox" 2436 2437 /> 2438 <label for="newsletter-integrated_menu-checkbox-7"> 2439 <span class="newsletter-title">Daily Dive</span> 2440 2441 <span class="secondary-label">M-F</span> 2442 2443 </label> 2444 </li> 2445 2446 <li> 2447 <label><span class="screen-reader-text">Select Newsletter:</span></label> 2448 <input id="newsletter-integrated_menu-checkbox-105" 2449 type="checkbox" 2450 name="site_newsletters" 2451 value="105" 2452 class="checkbox" 2453 2454 /> 2455 <label for="newsletter-integrated_menu-checkbox-105"> 2456 <span class="newsletter-title">Mobile Weekly</span> 2457 2458 <span class="secondary-label">Every Thursday</span> 2459 2460 </label> 2461 </li> 2462 2463 <li> 2464 <label><span class="screen-reader-text">Select Newsletter:</span></label> 2465 <input id="newsletter-integrated_menu-checkbox-1815" 2466 type="checkbox" 2467 name="site_newsletters" 2468 value="1815" 2469 class="checkbox" 2470 2471 /> 2472 <label for="newsletter-integrated_menu-checkbox-1815">
2473 <span class="newsletter-title">Agencies Weekly</span> 2474 2475 <span class="secondary-label">Every Monday</span> 2476 2477 </label> 2478 </li> 2479 2480 2481 2482 <li> 2483 <label><span class="screen-reader-text">Select user consent:</span></label> 2484 <input type="checkbox" name="user_consent" id="id_user_consent-integrated_menu" value="1" class="checkbox"/> 2485 <label for="id_user_consent-integrated_menu"> 2486 <span class="signup-user-consent_box"> 2487 <span> 2488 By signing up to receive our newsletter, you agree to our 2489 <a href="https://www.informatechtarget.com/terms-of-use/" target="_blank">Terms of Use</a> and 2490 <a href="https://www.informatechtarget.com/privacy-policy/" target="_blank">Privacy Policy</a>. You can unsubscribe at anytime. 2491</span> 2492 2493 </span> 2494 </label> 2495 </li> 2496 </ul> 2497 2498 <button class="button button--medium signup-button" type="submit" value="Sign up">Sign up</button> 2499 2500 2501
2502<script type="module" src="/static/js/dist/sendEmailToLytics.bundle.js?281219230926" ></script>
2502 2503 2504 2505 <label class="error email_error" style="display:none;">A valid email address is required.</label> 2506 <label class="error newsletter-error" style="display:none;">Please select at least one newsletter.</label> 2507 </form> 2508 </div> 2509 2510 2511 2512 2513 2514 2515 </div> 2516 </section> 2517 2518 2519</nav> 2520 2521 2522 2523 2524 2525 2526 2527 2528<style> 2529 /* Keep this hidden until we need to show the v2 challenge. */ 2530 .captcha-container { display: none; } 2531</style>
2532<script> 2533 (function () { 2534 // v3-first, v2-fallback: score on submit via /signup/recaptcha-v3-score/; show checkbox challenge if score is low or v3 fails. 2535 2536 // Shared config: site keys and constants that are the same for every form on the page. 2537 // Set once; subsequent calls (e.g. from _signupform.html on landing pages) are no-ops. 2538 if (!window._signupRecaptchaSharedConfig) { 2539 window._signupRecaptchaSharedConfig = { 2540 v2ContainerSelector: '.captcha-container', 2541 v2ElementSelector: '.g-recaptcha', 2542 submitAction: 'signup_submit', 2543 scoreThreshold: 0.5, 2544 v2SiteKey: '6LfnFggUAAAAAKaDTgN6vqjZtnNENIqa\u002D\u002DTCG9F4', 2545 v3SiteKey: '6Lc\u002DlpYsAAAAAMhweO3XD1__w\u002DvHSSOVRRpARwEM' 2546 }; 2547 } 2548 2549 // Register per-form unique configs (only the params that differ per form). 2550 window._signupRecaptchaConfigs = window._signupRecaptchaConfigs || []; 2551 2552 // Multi-form mode: loop over the list supplied by the context processor. 2553 2554 window._signupRecaptchaConfigs.push({ 2555 key: 'generic_signup', 2556 formSelector: 'form.js\u002Dform\u002Demail\u002Dvalidate[name\u003D\u0022signup\u0022]' 2557 }); 2558 2559 window._signupRecaptchaConfigs.push({ 2560 key: 'signup_interstitial', 2561 formSelector: '#signup\u002Dinter\u002Dform' 2562 }); 2563 2564 2565 2566 // If we've already initialized once, skip doing it again. 2567 if (window._signupRecaptchaBootstrapped) { 2568 return; 2569 } 2570 window._signupRecaptchaBootstrapped = true; 2571 2572 // Strip odd characters so this is safe for dataset keys/callback names. 2573 function safeKey(str) { 2574 return String(str || 'default').replace(/[^a-zA-Z0-9_]/g, ''); 2575 } 2576 2577 // Load only the v3 script â it covers both v3 scoring and v2 widget rendering. 2578 // Avoid the plain api.js, which auto-renders all .g-recaptcha elements on load. 2579 function loadRecaptchaScripts(v3SiteKey) { 2580 if (!document.getElementById('signup-recaptcha-v3-script')) { 2581 var v3Script = document.createElement('script'); 2582 v3Script.id = 'signup-recaptcha-v3-script'; 2583 v3Script.src = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(v3SiteKey); 2584 document.head.appendChild(v3Script); 2585 } 2586 } 2587 2588 // Get a v3 token, then let our backend verify and score it. 2589 function runV3AndScore(v3SiteKey, actionName) { 2590 return grecaptcha.execute(v3SiteKey, { action: actionName }) 2591 .then(function(token) { 2592 return fetch('/signup/recaptcha-v3-score/', { 2593 method: 'POST', 2594 headers: { 'Content-Type': 'application/json' }, 2595 body: JSON.stringify({ token: token, action: actionName }) 2596 }); 2597 }) 2598 .then(function(res) { return res.json(); }); 2599 } 2600 2601 // Wire recaptcha behavior to each form, merging shared constants with the per-form unique config. 2602 function wireConfig(formConfig, configIndex) { 2603 var shared = window._signupRecaptchaSharedConfig; 2604 var config = { 2605 key: formConfig.key, 2606 formSelector: formConfig.formSelector, 2607 v2ContainerSelector: shared.v2ContainerSelector, 2608 v2ElementSelector: shared.v2ElementSelector, 2609 submitAction: shared.submitAction, 2610 scoreThreshold: shared.scoreThreshold, 2611 v2SiteKey: shared.v2SiteKey, 2612 v3SiteKey: shared.v3SiteKey 2613 }; 2614 var forms = document.querySelectorAll(config.formSelector); 2615 forms.forEach(function(form, formIndex) { 2616 // Keep track of whether this form is wired/passed/already waiting on v2. 2617 var key = safeKey(config.key + '_' + configIndex + '_' + formIndex); 2618 var wiredFlag = 'recaptchaWired' + key; 2619 var passedFlag = 'recaptchaPassed' + key; 2620 var awaitingFlag = 'awaitingV2Challenge' + key; 2621 2622 if (form.dataset[wiredFlag] === 'true') { 2623 return; 2624 } 2625 form.dataset[wiredFlag] = 'true'; 2626 2627 var recaptchaElement = form.querySelector(config.v2ElementSelector); 2628 var widgetId = null; 2629 var v2WatcherInterval = null; 2630 2631 // Read the v2 response via widgetId, falling back to this form's textarea. 2632 function getV2Response() { 2633 var response = ''; 2634 try { 2635 response = widgetId !== null ? grecaptcha.getResponse(widgetId) : ''; 2636 } catch (e) { 2637 response = ''; 2638 } 2639 if (!response) { 2640 var textarea = form.querySelector('textarea[name="g-recaptcha-response"]'); 2641 if (textarea && textarea.value) { 2642 response = textarea.value; 2643 } 2644 } 2645 return response; 2646 } 2647 2648 // Once verified, mark the form so the submit handler lets it pass. 2649 function submitVerifiedForm() { 2650 if (form.dataset[passedFlag] === 'true') { 2651 return; 2652 } 2653 form.dataset[passedFlag] = 'true'; 2654 if (form.closest('.inline-signup')) { 2655 form.dispatchEvent(new CustomEvent('recaptcha:verified', { bubbles: false })); 2656 var inlineContainer = form.querySelector(config.v2ContainerSelector); 2657 if (inlineContainer) inlineContainer.style.display = 'none'; 2658 } 2659 form.submit(); 2660 } 2661 2662 // Show the v2 challenge and poll until we see a response token.
2663 function beginV2Challenge() { 2664 form.dataset[awaitingFlag] = 'true'; 2665 var container = form.querySelector(config.v2ContainerSelector); 2666 if (container) container.style.display = 'block'; 2667 2668 // Render the v2 widget on first challenge, not on page load. 2669 if (widgetId === null && recaptchaElement) { 2670 try { 2671 widgetId = grecaptcha.render(recaptchaElement, { 2672 sitekey: config.v2SiteKey, 2673 callback: submitVerifiedForm 2674 }); 2675 } catch (e) {} 2676 } 2677 2678 if (v2WatcherInterval) { 2679 clearInterval(v2WatcherInterval); 2680 } 2681 v2WatcherInterval = setInterval(function() { 2682 if (form.dataset[passedFlag] === 'true') { 2683 clearInterval(v2WatcherInterval); 2684 return; 2685 } 2686 var response = getV2Response(); 2687 if (response) { 2688 clearInterval(v2WatcherInterval); 2689 submitVerifiedForm(); 2690 } 2691 }, 250); 2692 } 2693 2694 // Main flow: validation first, then v3 score check, then v2 fallback if needed. 2695 form.addEventListener('submit', function(event) { 2696 if (form.dataset[passedFlag] === 'true') { 2697 return; 2698 } 2699 2700 // If a prior handler (e.g. email/checkbox validation) already stopped submission, bail out. 2701 if (event.defaultPrevented) { 2702 return; 2703 } 2704 2705 event.preventDefault(); 2706 2707 if (form.dataset[awaitingFlag] === 'true') { 2708 if (getV2Response()) { 2709 submitVerifiedForm(); 2710 } else { 2711 beginV2Challenge(); 2712 } 2713 return; 2714 } 2715 2716 grecaptcha.ready(function() { 2717 runV3AndScore(config.v3SiteKey, config.submitAction) 2718 .then(function(data) { 2719 var score = Number(data && data.score); 2720 var recaptchaSuccess = Boolean(data && (data.recaptcha_success || data.success)); 2721 var scorePass = !Number.isNaN(score) && score > config.scoreThreshold; 2722 2723 if (recaptchaSuccess && scorePass) { 2724 submitVerifiedForm(); 2725 return; 2726 } 2727 beginV2Challenge(); 2728 }) 2729 .catch(function() { 2730 // If v3 fails (network/API), still let real users complete v2. 2731 beginV2Challenge(); 2732 }); 2733 }); 2734 }); 2735 }); 2736 } 2737 2738 // Wire everything once grecaptcha is available. 2739 function setupAllConfigs() { 2740 if (typeof grecaptcha === 'undefined') { 2741 return false; 2742 } 2743 window._signupRecaptchaConfigs.forEach(function(formConfig, index) { 2744 wireConfig(formConfig, index); 2745 }); 2746 return true; 2747 } 2748 2749 document.addEventListener('DOMContentLoaded', function() { 2750 var v3SiteKey = window._signupRecaptchaSharedConfig.v3SiteKey; 2751 if (v3SiteKey) { 2752 loadRecaptchaScripts(v3SiteKey); 2753 } 2754 2755 if (setupAllConfigs()) { 2756 return; 2757 } 2758 2759 // Retry briefly while external recaptcha scripts finish loading. 2760 var attempts = 0; 2761 var interval = setInterval(function() { 2762 attempts += 1; 2763 if (typeof grecaptcha !== 'undefined') { 2764 clearInterval(interval); 2765 setupAllConfigs(); 2766 } else if (attempts > 50) { 2767 clearInterval(interval); 2768 } 2769 }, 100); 2770 }); 2771 })(); 2772</script>
2772 2773 2774 2775 2776 <!-- Track signups for Facebook Conversions API --> 2777 2778
2779<script type="module" src="/static/js/dist/signupValidation.bundle.js?281219230926" ></script>
2779 2780 2781 2782
2783<script type="module" src="/static/js/dist/gtmEvents.bundle.js?281219230926" ></script>
2783 2784 2785 <!-- Convert straight quotes to curly --> 2786 2787
2788<script type="module" src="/static/js/dist/smartQuotes.bundle.js?281219230926" ></script>
2788 2789 2790 <!-- HTMX press release analytics --> 2791 2792 2793
2794<script type="module" src="/static/js/dist/htmxPressReleaseAnalytics.bundle.js?281219230926" ></script>
2794 2795 2796 2797 2798 2799 2800 2801
2801<script data-osano="MARKETING" src="//platform.twitter.com/oct.js" type="text/javascript"></script>
2801 2802
2802<script type="text/javascript"> 2803 if(typeof twttr !== 'undefined' && typeof twttr.conversion !== 'undefined') { 2804 twttr.conversion.trackPid('l6guv', { tw_sale_amount: 0, tw_order_quantity: 0 }); 2805 } else { 2806 window.console && console.log && console.log('twttr undefined; Unable to track twitter retargeting'); 2807 } 2808 </script>
2808 2809 <noscript> 2810 <img height="1" width="1" style="display:none;" alt="" src="https://analytics.twitter.com/i/adsct?txn_id=l6guv&p_id=Twitter&tw_sale_amount=0&tw_order_quantity=0" /> 2811 <img height="1" width="1" style="display:none;" alt="" src="//t.co/i/adsct?txn_id=l6guv&p_id=Twitter&tw_sale_amount=0&tw_order_quantity=0" /> 2812 </noscript> 2813 2814 2815 2816 2817 2818
2818<script> 2819 // Set cookie if we're on mobile app. Expire if we're not. This affects 2820 // which template is used to display the site to the user. 2821 $(document).ready(function() { 2822 // Get integer value of mobileapp param from URL and default to 0 if it doesn't exist 2823 var mobileapp = ''; 2824 2825 // Set cookie if mobileapp is 1 or 2 or expire cookie if mobileapp == 0 2826 if (mobileapp == '0') { 2827 document.cookie = 'mobileapp=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 2828 } else if (mobileapp == '1' || mobileapp == '2') { 2829 document.cookie = 'mobileapp=' + mobileapp + '; path=/;'; 2830 } 2831 2832 // There's no need to immediately load or preload print.css since it's not needed on page 2833 // load. Therefore, load it when the document is ready 2834 var stylesheet=document.createElement("link"); 2835 stylesheet.setAttribute("rel", "stylesheet"); 2836 stylesheet.setAttribute("type", "text/css"); 2837 stylesheet.setAttribute("media", "print"); 2838 if (window.location.pathname.includes('trendline')) { 2839 stylesheet.setAttribute("href", "/static/css/print_trendline.css?151219230926"); 2840 } 2841 else { 2842 stylesheet.setAttribute("href", "/static/css/print.css?151219230926"); 2843 } 2844 document.getElementsByTagName("head")[0].appendChild(stylesheet); 2845 }); 2846 </script>
2846 2847 2848 2849 2850 2851 2852 <!-- Sailthru Horizon --> 2853 2854 2855<!--
2855<script type="text/javascript" src="https://ak.sail-horizon.com/horizon/v1.js"></script>
2855 --> 2856
2857<script data-osano="MARKETING" src="https://ak.sail-horizon.com/spm/spm.v1.min.js"></script>
vendor: 1 bytes, line 2857
2857
2858<script type="text/javascript"> 2859 $(function() { 2860 // Sailthru Personalization Engine Setup 2861 var sailthru_setup = { 2862 customerId: '12ab35a80530ffa5450add9c09f5de04', 2863 domain: 'horizon.marketingdive.com', 2864 spider: false 2865 }; 2866 2867 if (window.Sailthru) { 2868 Sailthru.init(sailthru_setup); 2869 } 2870 }); 2871</script>
2871 2872 2873 2874 2875 2876 2877 2878 2879
2880<script type="module" src="/static/js/dist/mobileFooterAd.bundle.js?281219230926" ></script>
2880 2881 2882<div class="mobile-footer-ad" id="mobile-footer-ad" role="complementary" aria-label="Advertisement"> 2883 <div class="mobile-footer-ad__slot" id="dfp-mobilefooter-mobile"></div> 2884</div> 2885
2886<script data-osano="ESSENTIAL"> 2887 window.googletag = window.googletag || { cmd: [] }; 2888 2889 googletag.cmd.push(function () { 2890 // GPT serves the largest mapped size that fits, so 300x50 only 2891 // wins below 320px and nothing is requested at 768px and up. 2892 var mobileFooterMapping = googletag.sizeMapping() 2893 .addSize([768, 0], []) 2894 .addSize([320, 0], [[320, 50], [300, 50]]) 2895 .addSize([0, 0], [[300, 50]]) 2896 .build(); 2897 2898 googletag.defineSlot( 2899 '/3618/marketingdive/marketingdivemobile_leaderboard', 2900 [[320, 50], [300, 50]], 2901 'dfp-mobilefooter-mobile' 2902 ) 2903 .defineSizeMapping(mobileFooterMapping) 2904 .addService(googletag.pubads()); 2905 }); 2906 2907 waitToLoadAds.push(function () { 2908 googletag.cmd.push(function () { 2909 if (window.dfp_visibility === 'mobile') { 2910 window.onDvtagReady?.(() => googletag.display('dfp-mobilefooter-mobile')); 2911 } 2912 }); 2913 }); 2914</script>
2914 2915 2916 2917 2918 </body> 2919</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.