<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog - AdTech Holding</title>
	<atom:link href="https://adtechholding.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://adtechholding.com/blog/</link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2026 11:54:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://adtechholding.com/wp-content/uploads/2022/08/cropped-favicon-32x32.png</url>
	<title>Blog - AdTech Holding</title>
	<link>https://adtechholding.com/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Four in a Row: AdTech Holding Is Great Place To Work® Certified™ Again</title>
		<link>https://adtechholding.com/blog/adtech-great-place-to-work-certified-2026/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 09:00:04 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[AdTech Holding]]></category>
		<category><![CDATA[Social]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=3002</guid>

					<description><![CDATA[<p>AdTech Holding has earned Great Place To Work Certification™ in Cyprus for the fourth year in a row. The result comes from an anonymous survey of our own people, not from anything we said about ourselves. Here's what sits behind it, from learning budgets and hybrid work to the weekends our teams spend replanting the hills above Limassol.</p>
<p>The post <a href="https://adtechholding.com/blog/adtech-great-place-to-work-certified-2026/">Four in a Row: AdTech Holding Is Great Place To Work® Certified™ Again</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We&#8217;re proud to share that AdTech Holding has earned <a href="https://www.greatplacetowork.com.cy/" target="_blank" rel="noreferrer noopener nofollow">Great Place To Work Certification™</a> in Cyprus for July 2026 – July 2027.&nbsp;</p>



<p class="wp-block-paragraph">This is our fourth certification in a row.</p>



<p class="wp-block-paragraph">Like every year before it, this recognition comes straight from our own people. The answers are anonymous, which makes the result a genuine reflection of what it feels like to work here, not a badge we awarded ourselves.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">How the Certification Works</h2>



<p class="wp-block-paragraph">The certification is based on the Great Place To Work Trust Index Survey®, which examines employees&#8217; experiences of trust, respect, fairness, leadership, and collaboration. Nothing in it is self-reported by management: the result comes from what people said anonymously about working here.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="812" src="https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-1024x812.jpg" alt="" class="wp-image-3008" srcset="https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-1024x812.jpg 1024w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-300x238.jpg 300w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-768x609.jpg 768w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-1536x1218.jpg 1536w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-alex-vasekin-photo-2048x1625.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="has-text-align-left wp-block-paragraph"><em>Receiving Great Place To Work Certification for the fourth year in a row tells us that our culture is not a one-time achievement but something our people experience every day. We want colleagues to have the trust, clarity and support they need to do ambitious work, develop professionally and make a meaningful contribution. Their feedback gives us both a reason to be proud and a clear responsibility to keep improving</em>.</p>
</blockquote>
</div>
</div>



<p class="has-text-align-right wp-block-paragraph">said <a href="https://www.linkedin.com/in/vasekin/" target="_blank" rel="noreferrer noopener nofollow">Alex Vasekin, CEO of AdTech Holding</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Stands Behind The Certification</h2>



<p class="wp-block-paragraph">A certification is only as good as what sits behind it. For us, that&#8217;s professional learning opportunities, hybrid work, health support, language courses, and additional time off.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2023/08/adtech-best-place-to-work-1024x536.png" alt="AdTech Holding Is Great Place To Work® Certified™ in 2023" class="wp-image-1142 size-full" srcset="https://adtechholding.com/wp-content/uploads/2023/08/adtech-best-place-to-work-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2023/08/adtech-best-place-to-work-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2023/08/adtech-best-place-to-work-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2023/08/adtech-best-place-to-work.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-certified-as-a-great-place-to-work-in-cyprus/" target="_blank" rel="noreferrer noopener">Our first Great Place To Work® Certified™recognition</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Around those sit the working habits that are harder to put on a benefits page: open communication, teamwork, and individual ownership of what you do. They are what let teams spread across different countries build the same product without tripping over each other.</p>



<p class="wp-block-paragraph">It&#8217;s the same principle every time: trust people to know what they need, then back them.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">More Than the Job Description</h2>



<p class="wp-block-paragraph">Some of what happens here has nothing to do with anyone’s job description.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2024/09/CDD-7420_AdTech_1200x628-1024x536.png" alt="AdTech Holding Is Great Place To Work® Certified™ in 2024" class="wp-image-2206 size-full" srcset="https://adtechholding.com/wp-content/uploads/2024/09/CDD-7420_AdTech_1200x628-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2024/09/CDD-7420_AdTech_1200x628-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2024/09/CDD-7420_AdTech_1200x628-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2024/09/CDD-7420_AdTech_1200x628.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-holding-wins-great-place-to-work/" target="_blank" rel="noreferrer noopener">Our second certification in 2024</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">For years, our teams have been <a href="https://adtechholding.com/blog/how-our-2025-is-going/" target="_blank" rel="noreferrer noopener">planting trees across Cyprus</a> and <a href="https://adtechholding.com/blog/how-our-2025-is-going/" target="_blank" rel="noreferrer noopener">clearing rubbish from its beaches</a>, together with the Limassol municipality and <a href="https://cityfriends.club/" target="_blank" rel="noreferrer noopener nofollow">City Friends Club</a>. Then wildfires tore through the hills of the Limassol district in July 2025. Our office turned into a collection point for essentials while the fires were still burning; afterwards, we joined <a href="https://thetechisland.org/" target="_blank" rel="noreferrer noopener nofollow">TechIsland</a> and more than 50 local tech companies in prevention work, backed a <a href="https://adtechholding.com/blog/hacktech25-the-big-recap/" target="_blank" rel="noreferrer noopener">hackathon</a> with the Cyprus Deputy Ministry of Research, Innovation and Digital Policy on the same problem, and spent the autumn and the following spring in the burnt areas putting the tree line back.&nbsp;</p>



<p class="wp-block-paragraph">Nobody was assigned to any of it. People gave up their weekends and brought their kids, partners, and dogs along. Not all of it takes weekends. We put money behind public spaces as well — the <a href="https://adtechholding.com/blog/adtech-holding-limassol-city-skate-park/" target="_blank" rel="noreferrer noopener">island’s first skate park</a> among them — and try to keep our own footprint in check, from waste sorting to how the office is powered.</p>



<p class="wp-block-paragraph">Other things run quietly alongside. The office becomes a blood donation point. We support local animal shelters, and colleagues go and spend time there. Inside the company, people train in first aid, run marathons, and fill the office with their children for their own parties. Our corporate celebrations often take the whole company abroad.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2025/09/adtech-holding-great-place-to-work-2025-1-1024x536.jpg" alt="AdTech Holding Is Great Place To Work® Certified™ in 2025" class="wp-image-2417 size-full" srcset="https://adtechholding.com/wp-content/uploads/2025/09/adtech-holding-great-place-to-work-2025-1-1024x536.jpg 1024w, https://adtechholding.com/wp-content/uploads/2025/09/adtech-holding-great-place-to-work-2025-1-300x157.jpg 300w, https://adtechholding.com/wp-content/uploads/2025/09/adtech-holding-great-place-to-work-2025-1-768x402.jpg 768w, https://adtechholding.com/wp-content/uploads/2025/09/adtech-holding-great-place-to-work-2025-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-great-place-to-work-2025/" target="_blank" rel="noreferrer noopener">The 3rd recognition in a row in 2025</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">And some of it is aimed at whoever comes next. <a href="https://internship.adtechholding.com/" target="_blank" rel="noreferrer noopener">Our AdStep internship</a> brings people in at the start of their careers, and three of them stayed on this year. We are the exclusive AdTech partner of <a href="https://youthtechfest.com/" target="_blank" rel="noreferrer noopener nofollow">Youth Tech Fest Cyprus</a>.</p>



<p class="wp-block-paragraph">None of this is why we are certified. That comes from what people said about trust, fairness, and leadership in an anonymous survey. But the two are related: people who feel heard at work are the ones who get involved when nothing requires them to.</p>



<p class="wp-block-paragraph">Most of this never turns into a blog post — it lives on our <a href="https://www.instagram.com/adtech_holding_careers/" target="_blank" rel="noreferrer noopener nofollow">Instagram</a>, where the photos do a better job than we would. You can also hear from <a href="https://adtechholding.com/blog/adtech-holding-cares-favorite-social-activities/" target="_blank" rel="noreferrer noopener">colleagues on the initiatives they value most</a>.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="538" src="https://adtechholding.com/wp-content/uploads/2026/09/adtech-gold-winner-brandon-hall-1024x538.png" alt="Gold at the Brandon Hall Group HCM Excellence Awards 2026 for Best Business Strategy. How AdTech Holding turned strategy into daily practice, with results." class="wp-image-2959 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/09/adtech-gold-winner-brandon-hall-1024x538.png 1024w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-gold-winner-brandon-hall-300x158.png 300w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-gold-winner-brandon-hall-768x403.png 768w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-gold-winner-brandon-hall.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-holding-brandon-hall-gold-award-2026/">AdTech Holding Recognized with Brandon Hall Group Gold HCM Excellence Award</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Looking Ahead</h2>



<p class="wp-block-paragraph">We&#8217;ll keep investing in our people, building on the trust we&#8217;ve earned, and protecting the culture that got us here.</p>



<p class="wp-block-paragraph">Our people are our greatest strength, and this certification is proof that growing together is what makes AdTech Holding what it is. If that sounds like a place you&#8217;d want to be, <a href="https://adtechholding.com/careers/" target="_blank" rel="noreferrer noopener">visit our careers page</a> and take a look at what&#8217;s open.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://adtechholding.com/blog/adtech-great-place-to-work-certified-2026/">Four in a Row: AdTech Holding Is Great Place To Work® Certified™ Again</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Can You Measure Brand Protection? The KPIs That Actually Exist</title>
		<link>https://adtechholding.com/blog/brand-protection-kpis/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 09:21:57 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2973</guid>

					<description><![CDATA[<p>Takedown count says how much work a team did, not whether the threat got smaller. This is a breakdown of the brand protection KPIs that hold up: what you can measure directly, what you have to model with assumptions, and what is still an estimate.</p>
<p>The post <a href="https://adtechholding.com/blog/brand-protection-kpis/">Can You Measure Brand Protection? The KPIs That Actually Exist</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For most of its history, brand protection reported one number: how many fakes we took down. A team filing 2,000 takedown notices per quarter looked more effective than one filing 400, regardless of whether either team actually reduced the threat.</p>



<p class="wp-block-paragraph">That no longer works. Brand protection teams are now expected to justify budgets in the same language finance uses for everything else: revenue recovered, risk reduced, outcomes demonstrated. The challenge is that some of what brand protection delivers is genuinely measurable, some requires modeling with assumptions, and some is still an educated guess dressed up as a metric.</p>



<p class="wp-block-paragraph">Knowing which is which is where a mature program starts.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>Key Takeaways</strong></p>



<ul class="wp-block-list">
<li>Brand protection KPIs fall into three layers: <a href="https://adtechholding.com/blog/adtech-brand-safety-measures-in-2024/" target="_blank" rel="noreferrer noopener">operational metrics</a> you can measure directly, financial metrics that require modeling, and soft metrics that remain largely estimated.</li>



<li>Takedown count measures activity, not outcome. A program filing 2,000 notices a month on a flat threat volume is running a removal machine, not reducing risk.</li>



<li>The operational standards (MTTD, time-to-takedown, enforcement success rate, channel coverage) are now widely adopted and form the baseline of any credible report.</li>



<li>Financial KPIs (recovered revenue, fraud losses prevented, legal cost reduction) are calculable but depend on assumptions that need to be made visible.</li>



<li>Attack decay rate is the single metric that most directly shows whether a program is shrinking the problem or just managing it.</li>



<li>2026 introduced a new challenge: measuring brand presence in AI-generated answers. The KPIs for this do not yet have industry consensus.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Brand Protection Spent Decades Without Real Metrics</h2>



<p class="wp-block-paragraph">Brand protection grew out of legal and enforcement work where success looked obvious. You removed the counterfeit or you did not. The idea that you needed to measure what happened downstream, in revenue or customer behavior, felt overly complicated when the immediate output was visible.</p>



<p class="wp-block-paragraph">Two things changed that. First, the threat surface expanded from a few high-volume counterfeit hubs to a fragmented landscape covering marketplaces, social media, domains, ad networks, app stores, and <a href="https://adtechholding.com/blog/ai-brand-protection-challenges/" target="_blank" rel="noreferrer noopener">now AI-generated content</a>. Volume scaled past what anyone could track intuitively. Second, the budgets got large enough to attract scrutiny. A seven-figure brand protection program needs a performance story that goes beyond &#8220;we filed a lot of notices.&#8221;</p>



<p class="wp-block-paragraph">What followed was an industry that developed operational metrics over the past five years, layered financial calculations of varying quality on top, and then made soft claims about trust and reputation that most programs assert but few can actually demonstrate. <a href="https://researchportal.port.ac.uk/en/publications/brand-protection-and-counterfeit-products-an-examination-of-resou/" target="_blank" rel="noreferrer noopener nofollow">A 2026 peer-reviewed study</a> interviewing practitioners from 35 multinational firms found that the two biggest impediments to adequate brand protection investment are indifferent leadership and the inability to quantify ROI from protection activities.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Layer One: The Four Operational KPIs That Are Now Standard</h2>



<p class="wp-block-paragraph">These measure what your operation is doing, how fast, and how broadly. <a href="https://www.netcraft.com/blog/the-comprehensive-guide-to-brand-protection-7-proven-ways-to-protect-your-brand-in-2026" target="_blank" rel="noreferrer noopener nofollow">Netcraft&#8217;s 2026 brand protection</a> guide describes the same four as its measurement baseline. They do not tell you whether the business outcome improved, but they are the foundation everything else builds on.</p>



<div class="atk-kpi">

<style>
.atk-kpi{color-scheme:light;max-width:1000px;margin:32px auto;padding:clamp(18px,4vw,30px);background:#ffffff;border:1px solid #E4E7EC;border-radius:20px;font-family:Inter,Arial,sans-serif;box-shadow:0 8px 24px rgba(16,24,40,.06);box-sizing:border-box}
.atk-kpi *{box-sizing:border-box}
.atk-kpi__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px;margin-bottom:26px}
.atk-kpi__eyebrow{font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#667085;margin-bottom:8px}
.atk-kpi__title{font-size:clamp(21px,4.4vw,27px);line-height:1.2;font-weight:750;color:#101828}
.atk-kpi__lede{max-width:310px;font-size:13px;line-height:1.5;color:#667085;text-align:right}
.atk-kpi__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.atk-kpi__card{background:#F8FAFC;border:1px solid #E4E7EC;border-radius:16px;padding:20px;min-height:275px;display:flex;flex-direction:column}
.atk-kpi__cardtop{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.atk-kpi__num{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0}
.atk-kpi__tag{font-size:11px;font-weight:700;letter-spacing:.7px}
.atk-kpi__name{font-size:20px;font-weight:750;color:#101828;margin-bottom:8px}
.atk-kpi__sub{font-size:13px;font-weight:600;color:#475467;margin-bottom:10px}
.atk-kpi__desc{font-size:14px;line-height:1.55;color:#667085}
.atk-kpi__foot{margin-top:auto;padding-top:15px;border-top:1px solid #E4E7EC}
.atk-kpi__foothead{font-size:10px;font-weight:750;letter-spacing:.7px;text-transform:uppercase;color:#98A2B3;margin-bottom:6px}
.atk-kpi__foottext{font-size:13px;line-height:1.45;color:#667085}
.atk-kpi__note{margin-top:20px;padding:18px 20px;background:#101828;border-radius:14px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
.atk-kpi__notelabel{font-size:12px;font-weight:750;letter-spacing:.7px;text-transform:uppercase;color:#98A2B3;white-space:nowrap}
.atk-kpi__rule{width:1px;height:22px;background:#475467;flex-shrink:0}
.atk-kpi__notetext{font-size:14px;line-height:1.5;color:#EAECF0;flex:1 1 240px}
@media (max-width:640px){
.atk-kpi__lede{text-align:left;max-width:none}
.atk-kpi__card{min-height:0}
.atk-kpi__rule{display:none}
}
</style>

<!-- HEADER -->
<div class="atk-kpi__head">
<div>
<div class="atk-kpi__eyebrow">Operational Metrics</div>
<div class="atk-kpi__title">The Four Operational KPIs</div>
</div>
<div class="atk-kpi__lede">Four complementary metrics for understanding how effectively a brand protection program operates.</div>
</div>

<!-- KPI CARDS -->
<div class="atk-kpi__grid">

<!-- MTTD -->
<div class="atk-kpi__card">
<div class="atk-kpi__cardtop">
<div class="atk-kpi__num" style="background:#E8F7F1;color:#087443;">01</div>
<div class="atk-kpi__tag" style="color:#087443;">DETECTION</div>
</div>
<div class="atk-kpi__name">MTTD</div>
<div class="atk-kpi__sub">Mean Time to Detection</div>
<div class="atk-kpi__desc">How quickly a threat is identified after it goes live.</div>
<div class="atk-kpi__foot">
<div class="atk-kpi__foothead">What it misses</div>
<div class="atk-kpi__foottext">Whether the right threats were found.</div>
</div>
</div>

<!-- TAKEDOWN -->
<div class="atk-kpi__card">
<div class="atk-kpi__cardtop">
<div class="atk-kpi__num" style="background:#EEF4FF;color:#3157D5;">02</div>
<div class="atk-kpi__tag" style="color:#3157D5;">ENFORCEMENT</div>
</div>
<div class="atk-kpi__name">Time to Takedown</div>
<div class="atk-kpi__sub">Enforcement Speed</div>
<div class="atk-kpi__desc">The time between detecting a threat and confirmed removal.</div>
<div class="atk-kpi__foot">
<div class="atk-kpi__foothead">What it misses</div>
<div class="atk-kpi__foottext">Whether removal changed the behavior.</div>
</div>
</div>

<!-- ESR -->
<div class="atk-kpi__card">
<div class="atk-kpi__cardtop">
<div class="atk-kpi__num" style="background:#FFF4E8;color:#B54708;">03</div>
<div class="atk-kpi__tag" style="color:#B54708;">SUCCESS RATE</div>
</div>
<div class="atk-kpi__name">Enforcement Success Rate</div>
<div class="atk-kpi__sub">Removal Hit Rate</div>
<div class="atk-kpi__desc">The ratio of threats successfully removed to threats detected.</div>
<div class="atk-kpi__foot">
<div class="atk-kpi__foothead">What it misses</div>
<div class="atk-kpi__foottext">Whether coverage was comprehensive.</div>
</div>
</div>

<!-- COVERAGE -->
<div class="atk-kpi__card">
<div class="atk-kpi__cardtop">
<div class="atk-kpi__num" style="background:#F4EFFA;color:#6941C6;">04</div>
<div class="atk-kpi__tag" style="color:#6941C6;">COVERAGE</div>
</div>
<div class="atk-kpi__name">Channel Coverage</div>
<div class="atk-kpi__sub">Monitoring Breadth</div>
<div class="atk-kpi__desc">Whether monitoring reaches the channels where threats actually appear.</div>
<div class="atk-kpi__foot">
<div class="atk-kpi__foothead">What it misses</div>
<div class="atk-kpi__foottext">Threat channels not yet mapped.</div>
</div>
</div>

</div>

<!-- BOTTOM MESSAGE -->
<div class="atk-kpi__note">
<div class="atk-kpi__notelabel">The bigger picture</div>
<div class="atk-kpi__rule"></div>
<div class="atk-kpi__notetext">No single KPI tells the whole story. The four metrics work together to reveal where detection, enforcement, or coverage is falling short.</div>
</div>

</div>



<h3 class="wp-block-heading">Mean Time to Detection (MTTD)</h3>



<p class="wp-block-paragraph">MTTD measures how long a threat exists before your monitoring finds it. A phishing site can convert victims within hours of going live. A counterfeit listing starts diverting purchase intent the moment it appears. Every hour between &#8220;threat goes live&#8221; and &#8220;threat is detected&#8221; is <a href="https://adtechholding.com/blog/ai-brand-protection-challenges/" target="_blank" rel="noreferrer noopener">a window where damage accumulates</a> with no intervention.</p>



<p class="wp-block-paragraph">Tracking MTTD requires timestamping threats at discovery and tracing back to when they were created. This is straightforward for domains (WHOIS records have registration timestamps) and marketplace listings (creation dates are usually available), but harder for social media impersonation where account creation dates may not be accessible.</p>



<p class="wp-block-paragraph">One useful approach: benchmark MTTD by threat type rather than as a single average. Phishing needs detection within 24 hours. Counterfeit listings carry a longer harm window because the damage accumulates over weeks of diverted sales. Your target should reflect how fast each threat type actually causes harm.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Time to Takedown</h3>



<p class="wp-block-paragraph">Time to takedown measures the gap between detection and confirmed removal. It is the operational KPI that legal and IP teams have tracked the longest, and the one where the platform matters more than your own process.&nbsp;</p>



<p class="wp-block-paragraph">In its<a href="https://ustr.gov/sites/default/files/files/Press/Releases/2026/2025%20Notorious%20Markets%20List%20(final).pdf" target="_blank" rel="noreferrer noopener nofollow"> 2025 Review of Notorious Markets for Counterfeiting and Piracy</a>, published 3 March 2026, the Office of the United States Trade Representative reported that while some e-commerce and social commerce platforms have taken positive steps to implement anti-counterfeiting policies, &#8220;many others still lack adequate anti-counterfeiting policies, processes, and tools such as identity verification, effective notice-and-takedown procedures, proactive anti-counterfeiting filters and tools, and strong policies against repeat infringers.&#8221;&nbsp;</p>



<p class="wp-block-paragraph">That is the gap a per-channel takedown time actually measures: it reflects platform compliance infrastructure and evidence quality, not just your team&#8217;s speed.</p>



<p class="wp-block-paragraph">The metric is more useful when segmented by channel. Social media platforms often respond to well-documented impersonation within a few days, though the spread between platforms is wide enough that a per-channel figure from your own logs beats any published average. Domain registrars using UDRP procedures take weeks to months. A single average number hides those differences and makes it harder to identify where your enforcement pipeline is actually slow.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Enforcement Success Rate (ESR)</h3>



<p class="wp-block-paragraph">ESR is the ratio of threats successfully removed to threats detected. It is the closest thing brand protection has to a hit rate. Many brands track it as their primary effectiveness metric, though no independent benchmark exists – your own trailing average is the target that matters. Below that, the problem usually traces to one of three things: insufficient IP registration in the relevant jurisdiction, incomplete evidence packages, or an unresponsive platform that needs a different escalation path.</p>



<p class="wp-block-paragraph">One limitation worth knowing: ESR can be gamed unintentionally. Teams that only submit high-confidence cases before actioning them will show excellent ESR while leaving a significant share of threats unaddressed. A stricter version tracks all confirmed threats in the denominator, not just the ones that seemed winnable.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Channel Coverage</h3>



<p class="wp-block-paragraph">Channel coverage measures whether your monitoring is looking where your threats actually are. It is the most underreported of the four operational KPIs, and the most revealing one about whether a program&#8217;s architecture reflects current threat reality.</p>



<p class="wp-block-paragraph">A program monitoring Amazon, eBay, and a list of known counterfeit domains may show excellent metrics on those channels while missing most of the actual threat volume on social commerce platforms, regional marketplaces, or paid ad networks running impersonation campaigns. The way to audit this is a quarterly threat mapping exercise: where were confirmed threats found, including those flagged by customers, partners, and internal teams? Any channel that shows up consistently there but not in your standard monitoring is a gap.</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><tbody><tr><td><strong>KPI</strong></td><td><strong>What It Measures</strong></td><td><strong>What It Misses</strong></td></tr><tr><td>MTTD</td><td>Speed of detection</td><td>Whether the right threats were found</td></tr><tr><td>Time to Takedown</td><td>Enforcement speed by channel</td><td>Whether removal changed the behavior</td></tr><tr><td>Enforcement Success Rate</td><td>Removal hit rate</td><td>Whether coverage was comprehensive</td></tr><tr><td>Channel Coverage</td><td>Monitoring breadth</td><td>Threat channels not yet mapped</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Metric Everyone Reports and Why It Misleads</h2>



<p class="wp-block-paragraph">Takedown count measures activity, not outcome.</p>



<p class="wp-block-paragraph">A brand running 500 takedowns per month on a marketplace where 500 new listings appear every month has not reduced the threat. It is sustaining a steady state. Reporting that volume as a success metric is accurate as a count of work done and misleading as evidence that the program is working.</p>



<p class="wp-block-paragraph">The difference between a vendor reporting activity counts and one providing audit-trail-backed outcome data is exactly the gap between a brand protection report that gets filed and one that gets funded.</p>



<p class="wp-block-paragraph">Takedown volume is still useful as an operational input. It feeds into ESR and informs recovery calculations. The problem is treating it as the primary outcome metric. A program whose takedown volume is falling because the underlying threat population is shrinking is performing better than a program where volume keeps rising.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Layer Two: Financial KPIs – Turning Enforcement Data Into Revenue Numbers</h2>



<p class="wp-block-paragraph">Financial KPIs are where brand protection programs earn budget credibility. They require <a href="https://adtechholding.com/blog/attention-metrics-advertising-measurement/" target="_blank" rel="noreferrer noopener">modeling rather than direct measurement</a>, which means the assumptions behind them need to be explicit. A number that looks like revenue recovered is often revenue recovered multiplied by a conversion assumption (and the assumption is doing a lot of work).</p>



<h3 class="wp-block-heading">Recovered Revenue</h3>



<p class="wp-block-paragraph">The standard calculation: take the volume of confirmed infringing inventory removed, apply a conversion assumption (what share of customers who bought the fake would have bought the genuine product instead), and multiply by your average selling price.</p>



<p class="wp-block-paragraph">The conversion assumption is where most programs get vague. There is no published industry figure to fall back on, so pick a rate you can defend rather than one you found in an article. A commodity brand can defensibly assume a higher rate than a premium brand, because the price gap between fake and genuine is smaller and the buyer could have afforded the original.</p>



<h3 class="wp-block-heading">Fraud Losses Prevented</h3>



<p class="wp-block-paragraph">For brands dealing with phishing, account takeover, or fake advertising rather than counterfeits, the financial metric is fraud loss prevented. This comes from confirmed fraud incidents intercepted before completion, documented through platform case records or support tickets resolved as fraudulent.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-joint-article-1024x536.png" alt="Fraud Without Borders: How AdTech and Nuvei Fight Fraud" class="wp-image-2906 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-joint-article-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-joint-article-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-joint-article-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-joint-article.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/fraud-without-borders-adtech-nuvei/" target="_blank" rel="noreferrer noopener">How Ad Tech and Payment Platforms Fight Financial Crime Together</a></p>
</div></div>



<p class="wp-block-paragraph">The difference between a loss-prevention figure backed by case-level documentation and one derived from estimated exposure multiplied by probability is significant. Finance treats the first as evidence and the second as a projection.</p>



<h3 class="wp-block-heading">Legal Cost Reduction</h3>



<p class="wp-block-paragraph">Programs that intercept threats before they reach formal legal proceedings generate measurable cost reduction in outside counsel fees, filing costs, and case management time. The data source is your legal department&#8217;s billing records, segmented by brand protection matters. It requires coordination between teams, which is why it is underused, but it is not difficult to produce once that reporting relationship is established.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Layer Three: What You&#8217;re Estimating – Trust, LTV, and Reputation</h2>



<p class="wp-block-paragraph">These metrics are real in terms of business impact. They are also largely impossible to measure directly at the program level with current standard tools.</p>



<h3 class="wp-block-heading">Customer Trust and NPS</h3>



<p class="wp-block-paragraph">NPS moves in response to too many variables simultaneously for brand protection activity to be cleanly attributed. What you can do is track customer complaints specifically attributed to suspected counterfeit or impersonation incidents and show a reduction in that category as enforcement increases. That is a proxy, not a direct measurement, but it is defensible.</p>



<p class="wp-block-paragraph">The measurement gap here is not permanent. It reflects the current state of attribution methodology, not a hard limit on what is knowable.&nbsp;</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg" alt="KYC in AdTech: novel threats and measures in 2026" class="wp-image-2575 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg 1024w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-300x157.jpg 300w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-768x402.jpg 768w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/kyc-and-new-fraud-threats-2026/" target="_blank" rel="noreferrer noopener">KYC and New Fraud Threats in 2026</a></p>
</div></div>



<h3 class="wp-block-heading">LTV of Recovered Customers</h3>



<p class="wp-block-paragraph">The theory is sound: a customer who encounters a counterfeit and has a bad experience either churns or permanently shifts perception of the brand. A program that removes the counterfeit before that customer is harmed preserves that LTV. The problem is that you cannot observe the counterfactual.</p>



<p class="wp-block-paragraph">Some programs model this by estimating how many customers would have encountered the removed inventory, applying a harm probability, and multiplying by average LTV. Present it as a modeled estimate with visible assumptions, not as a measured outcome. The number is useful for illustrating program value; it should not be presented as verified data.</p>



<h3 class="wp-block-heading">Reputational Impact</h3>



<p class="wp-block-paragraph">Share of voice and brand sentiment are useful brand health metrics, but they respond to too many variables to be attributed to enforcement activity. The honest position is that brand protection preserves the conditions under which brand investment can work. Measuring that preservation is not yet standardized.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The KPI That Separates Mature Programs From Busy Ones</h2>



<p class="wp-block-paragraph">Attack decay rate is the single metric that most directly answers the question a board actually wants answered: is this program making the problem smaller, or just managing it at a steady state?</p>



<div class="atk-adr">

<style>
.atk-adr{color-scheme:light;max-width:1000px;margin:32px auto;padding:clamp(18px,4vw,30px);background:#ffffff;border:1px solid #E4E7EC;border-radius:20px;font-family:Inter,Arial,sans-serif;box-shadow:0 8px 24px rgba(16,24,40,.06);box-sizing:border-box}
.atk-adr *{box-sizing:border-box}
.atk-adr__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px 28px;margin-bottom:22px}
.atk-adr__eyebrow{font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#667085;margin-bottom:8px}
.atk-adr__title{font-size:clamp(21px,4.4vw,27px);line-height:1.2;font-weight:750;color:#101828}
.atk-adr__lede{max-width:360px;font-size:13px;line-height:1.55;color:#667085;text-align:right}
.atk-adr__notice{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;margin-bottom:22px;background:#F8FAFC;border:1px solid #E4E7EC;border-radius:10px}
.atk-adr__badge{flex-shrink:0;font-size:10px;font-weight:750;letter-spacing:.8px;text-transform:uppercase;color:#475467;padding:3px 8px;background:#EAECF0;border-radius:5px}
.atk-adr__noticetext{font-size:13px;line-height:1.5;color:#667085}
.atk-adr__legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-bottom:14px}
.atk-adr__legenditem{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#475467}
.atk-adr__swatch{flex-shrink:0;overflow:visible}
.atk-adr__scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.atk-adr__chart{display:block;width:100%;height:auto;font-family:Inter,Arial,sans-serif;overflow:visible}
.atk-adr__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:14px;margin-top:18px}
.atk-adr__card{padding:17px 19px;background:#F8FAFC;border:1px solid #E4E7EC;border-radius:14px}
.atk-adr__card--warn{background:#FFFAF5;border-color:#F2D6B3}
.atk-adr__cardhead{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.atk-adr__cardlabel{font-size:11px;font-weight:750;letter-spacing:.7px;text-transform:uppercase;color:#667085}
.atk-adr__cardlabel--warn{color:#B54708}
.atk-adr__cardtext{font-size:14px;line-height:1.5;color:#475467}
.atk-adr__take{margin-top:18px;padding:18px 20px;background:#101828;border-radius:14px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.atk-adr__takelabel{font-size:11px;font-weight:750;letter-spacing:.8px;text-transform:uppercase;color:#98A2B3;white-space:nowrap}
.atk-adr__rule{width:1px;height:24px;background:#475467;flex-shrink:0}
.atk-adr__taketext{font-size:14px;line-height:1.5;color:#EAECF0;flex:1 1 240px}
.atk-adr__taketext strong{color:#ffffff}
@media (max-width:760px){
.atk-adr__lede{text-align:left;max-width:none}
.atk-adr__chart{min-width:720px}
.atk-adr__rule{display:none}
}
</style>

  <!-- HEADER -->
  <div class="atk-adr__head">
    <div>
      <div class="atk-adr__eyebrow">Threat Lifecycle Metric</div>
      <div class="atk-adr__title">Attack Decay Rate</div>
    </div>
    <div class="atk-adr__lede">A working enforcement program should reduce active threats over time — not simply remove them one by one.</div>
  </div>

  <!-- ILLUSTRATIVE NOTICE -->
  <div class="atk-adr__notice">
    <span class="atk-adr__badge">Illustrative</span>
    <span class="atk-adr__noticetext">Two hypothetical trajectories, drawn to show the shape of the metric. The axes are relative and carry no units — this is not plotted data.</span>
  </div>

  <!-- LEGEND -->
  <div class="atk-adr__legend">
    <span class="atk-adr__legenditem">
      <svg class="atk-adr__swatch" width="26" height="10" fill="none" aria-hidden="true">
        <line x1="0" y1="5" x2="26" y2="5" stroke="#087443" stroke-width="2.5" stroke-linecap="round"></line>
        <circle cx="13" cy="5" r="4" fill="#087443" stroke="#ffffff" stroke-width="2"></circle>
      </svg>
      Working program
    </span>
    <span class="atk-adr__legenditem">
      <svg class="atk-adr__swatch" width="26" height="10" fill="none" aria-hidden="true">
        <line x1="0" y1="5" x2="26" y2="5" stroke="#B54708" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="5 4"></line>
        <rect x="9" y="1" width="8" height="8" fill="#B54708" stroke="#ffffff" stroke-width="2"></rect>
      </svg>
      Removal without deterrence
    </span>
  </div>

  <!-- CHART -->
  <div class="atk-adr__scroll">
  <svg class="atk-adr__chart" viewBox="0 0 960 400" width="100%" role="img" aria-label="Illustrative diagram. Two hypothetical trajectories of active threat volume after enforcement begins. The working program curve declines from a high starting level and settles at a lower sustained baseline. The removal-without-deterrence curve stays flat and drifts slightly upward from the same starting level. The axes are relative and carry no units; no measured data is shown.">
    <title>Attack decay rate — illustrative</title>

    <!-- Y AXIS TITLE -->
    <text x="16" y="175" transform="rotate(-90 16 175)" text-anchor="middle" font-size="12" font-weight="650" fill="#98A2B3">Active threat volume</text>

    <!-- Y AXIS RELATIVE ENDS -->
    <text x="62" y="42" text-anchor="end" font-size="11" fill="#98A2B3">Higher</text>
    <text x="62" y="318" text-anchor="end" font-size="11" fill="#98A2B3">Lower</text>

    <!-- GRID: solid hairlines, one shade off the surface -->
    <line x1="70" y1="30" x2="930" y2="30" stroke="#F2F4F7" stroke-width="1"></line>
    <line x1="70" y1="105" x2="930" y2="105" stroke="#F2F4F7" stroke-width="1"></line>
    <line x1="70" y1="180" x2="930" y2="180" stroke="#F2F4F7" stroke-width="1"></line>
    <line x1="70" y1="255" x2="930" y2="255" stroke="#F2F4F7" stroke-width="1"></line>

    <!-- AXES -->
    <line x1="70" y1="30" x2="70" y2="322" stroke="#D0D5DD" stroke-width="1"></line>
    <line x1="70" y1="322" x2="930" y2="322" stroke="#D0D5DD" stroke-width="1"></line>

    <!-- ENFORCEMENT MARKER -->
    <line x1="185" y1="30" x2="185" y2="322" stroke="#087443" stroke-width="1.5"></line>
    <text x="193" y="46" font-size="12" font-weight="750" fill="#087443">Enforcement starts</text>

    <!-- AREA UNDER THE WORKING CURVE -->
    <path d="M70 78 L130 78 C160 80 172 86 185 96
             C240 140 300 228 372 266
             C452 306 542 316 632 319
             C742 322 842 322 930 322
             L930 322 L70 322 Z" fill="#E8F7F1" opacity=".6"></path>

    <!-- REMOVAL WITHOUT DETERRENCE (dashed) -->
    <path d="M70 86 L130 86 C170 86 230 84 310 81
             C430 77 570 71 710 65
             C800 61 872 57 930 54" fill="none" stroke="#B54708" stroke-width="2.5" stroke-dasharray="7 5" stroke-linecap="round"></path>

    <!-- WORKING PROGRAM (solid) -->
    <path d="M70 78 L130 78 C160 80 172 86 185 96
             C240 140 300 228 372 266
             C452 306 542 316 632 319
             C742 322 842 322 930 322" fill="none" stroke="#087443" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>

    <!-- INFLECTION -->
    <circle cx="185" cy="96" r="5" fill="#ffffff" stroke="#087443" stroke-width="2.5"></circle>

    <!-- END MARKERS: shape differs, so identity survives colour loss -->
    <circle cx="930" cy="322" r="5" fill="#087443" stroke="#ffffff" stroke-width="2"></circle>
    <rect x="925" y="49" width="10" height="10" fill="#B54708" stroke="#ffffff" stroke-width="2"></rect>

    <!-- DIRECT LABELS: mandatory secondary encoding for this colour pair -->
    <text x="700" y="44" text-anchor="end" font-size="13" font-weight="700" fill="#B54708">Flat or rising</text>
    <text x="700" y="61" text-anchor="end" font-size="12" fill="#98A2B3">volume replaced as fast as it is removed</text>

    <text x="632" y="290" font-size="13" font-weight="700" fill="#087443">Lower baseline, sustained</text>
    <text x="632" y="306" font-size="12" fill="#98A2B3">deterrence, not just removal</text>

    <!-- X AXIS -->
    <text x="70" y="346" font-size="11" fill="#98A2B3">Enforcement begins</text>
    <text x="930" y="346" text-anchor="end" font-size="11" fill="#98A2B3">Later</text>
    <text x="500" y="372" text-anchor="middle" font-size="12" font-weight="650" fill="#98A2B3">Time since enforcement begins — relative, not to scale</text>
  </svg>
  </div>

  <!-- EXPLANATION CARDS -->
  <div class="atk-adr__cards">
    <div class="atk-adr__card">
      <div class="atk-adr__cardhead">
        <svg width="16" height="10" fill="none" aria-hidden="true" style="flex-shrink:0;">
          <line x1="0" y1="5" x2="16" y2="5" stroke="#087443" stroke-width="2.5" stroke-linecap="round"></line>
        </svg>
        <span class="atk-adr__cardlabel">Working program</span>
      </div>
      <div class="atk-adr__cardtext">Threat volume declines as enforcement pressure builds and actors adapt or stop, then holds at a lower level.</div>
    </div>

    <div class="atk-adr__card atk-adr__card--warn">
      <div class="atk-adr__cardhead">
        <svg width="16" height="10" fill="none" aria-hidden="true" style="flex-shrink:0;">
          <line x1="0" y1="5" x2="16" y2="5" stroke="#B54708" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="5 4"></line>
        </svg>
        <span class="atk-adr__cardlabel atk-adr__cardlabel--warn">Warning signal</span>
      </div>
      <div class="atk-adr__cardtext">A flat or rising curve means removal is happening without meaningful deterrence — the same work, repeated indefinitely.</div>
    </div>
  </div>

  <!-- BOTTOM TAKEAWAY -->
  <div class="atk-adr__take">
    <div class="atk-adr__takelabel">The goal</div>
    <div class="atk-adr__rule"></div>
    <div class="atk-adr__taketext">Removal is the mechanism. <strong>Deterrence is the outcome.</strong></div>
  </div>
</div>



<p class="wp-block-paragraph">The metric tracks the lifecycle of a threat class over time. Plot the volume of active threats in a given category from the point your program starts targeting them. A working program shows a decay curve: high initial volume, declining as enforcement pressure builds, settling at a lower baseline. A program that is not working shows a flat or rising line despite removal activity.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The 2026 Frontier: Measuring Brand Presence in AI-Generated Answers</h2>



<p class="wp-block-paragraph">AI assistants and generative search features have introduced a brand protection problem the industry has not solved. When a user asks an AI system whether a product is genuine, who the authorized resellers are, or what a brand&#8217;s return policy is, the answer may come from training data that is out of date, from a third-party source with inaccurate claims, or from content a bad actor deliberately introduced to influence AI outputs. AI summaries can repeat incorrect information quickly, and systematic detection and correction is not yet standard practice.</p>



<p class="wp-block-paragraph">The measurement challenge is structural. A counterfeit listing has a URL, a seller account, and a removable artifact. AI-generated misinformation about a brand exists as an output of a probabilistic system that produces different responses to the same query across different sessions, models, and regions. There is no single thing to take down. Two categories of KPIs are emerging, though neither has reached industry consensus:</p>



<p class="wp-block-paragraph"><strong>Presence metrics:</strong> Is the brand surfaced in AI-generated responses to category queries? Tracking this requires systematic querying of major AI systems across target markets and logging mention frequency over time.</p>



<p class="wp-block-paragraph"><strong>Accuracy metrics:</strong> When the brand is mentioned, is the information correct?<br>This requires sampling AI outputs and scoring them against a maintained ground truth: product details, authorized reseller lists, pricing, policy information.</p>



<p class="wp-block-paragraph">Both are currently tracked manually by the brands that track them at all. Automated tooling is early-stage. Programs already running actor-level threat intelligence and infrastructure mapping, the kind of domain abuse investigation work that feeds detection today, are better positioned to extend into AI-generated content monitoring than programs running keyword scanning alone.&nbsp;</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">How to Build a Brand Protection Dashboard That Finance Will Actually Read</h2>



<p class="wp-block-paragraph">Most brand protection dashboards are built for the brand protection team. They show operational throughput. Finance wants to see business impact. That translation is where most programs lose budget arguments.</p>



<p class="wp-block-paragraph">A dashboard that works for both layers has three things:</p>



<p class="wp-block-paragraph"><strong>Top line: 2 or 3 outcome numbers<br></strong>Revenue recovered or at-risk eliminated, fraud losses prevented, and attack decay rate trend for the program&#8217;s primary threat class. These answer the question:<br><em>&#8220;Is this working and what did it return?&#8221;</em></p>



<p class="wp-block-paragraph"><strong>Middle: operational performance</strong><strong><br></strong>MTTD trend, time-to-takedown by channel, ESR by platform. These answer the question:&nbsp; <em>&#8220;How efficiently is the operation running?&#8221;</em> and give context to the outcome numbers.</p>



<p class="wp-block-paragraph"><strong>Bottom: coverage audit<br></strong>Channel coverage map updated quarterly, showing monitored channels versus confirmed-threat channels. This answers the question:<br></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>&#8220;Are we looking in the right places?&#8221;</em></p>
</blockquote>



<p class="wp-block-paragraph">One practice that consistently improves finance reception: label your numbers by confidence level. A revenue recovery figure built on a conversion assumption should say &#8220;modeled recovery, 15% conversion assumption, methodology on file.&#8221; A figure pulled from fraud case records says &#8220;verified prevented loss.&#8221;<br></p>



<p class="wp-block-paragraph"><strong>That distinction matters.</strong> Modeled estimates are necessary in brand protection reporting. But numbers backed by case-level audit trails carry more weight with finance than projections. Platforms that produce aggregated reports per traffic source, with detailed reports available on request, give brand protection teams more numbers in the verified column and fewer in the modeled one. That is what turns a cost-center report into a renewal case.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading"><strong>What is the most important brand protection KPI?</strong></h3>



<p class="wp-block-paragraph">It depends on the program&#8217;s primary threat type. For marketplace counterfeiting, enforcement success rate and revenue recovery matter most. For phishing and impersonation, MTTD and fraud losses prevented are more relevant. If you can only track one metric that speaks to effectiveness rather than activity, attack decay rate is the most informative.</p>



<h3 class="wp-block-heading"><strong>Is takedown count a useful KPI?</strong></h3>



<p class="wp-block-paragraph">Yes, as an operational input. No, as a primary outcome metric. It feeds ESR and informs recovery calculations. But a high takedown count with flat threat volume means you are maintaining a steady state, not reducing risk.</p>



<h3 class="wp-block-heading"><strong>How do you calculate enforcement success rate?</strong></h3>



<p class="wp-block-paragraph">Divide confirmed threats removed by confirmed threats detected and actioned. The targets in circulation come from vendors rather than an independent body, and the rate varies enough by channel that a single figure would mislead. Track it per channel against your own trailing average to find where your enforcement pipeline is weakest.</p>



<h3 class="wp-block-heading"><strong>Can brand protection ROI be measured accurately?</strong></h3>



<p class="wp-block-paragraph">The hard components (legal cost reduction, verified fraud loss prevention, marketplace-data revenue recovery) can be measured with reasonable accuracy when the methodology is documented consistently. The soft components (trust, LTV effects, reputational impact) can be modeled but not directly measured with current standard tools. Present each with its appropriate confidence level rather than combining them into one ROI figure.</p>



<h3 class="wp-block-heading"><strong>What are the emerging KPIs for AI-generated content?</strong></h3>



<p class="wp-block-paragraph">There are no established standards yet. The emerging approach tracks presence (whether the brand appears in AI-generated responses to category queries) and accuracy (whether information about the brand in those responses is correct). Both currently require manual sampling. Programs running actor-level threat intelligence are better positioned to extend into this area as tooling develops.</p>



<h3 class="wp-block-heading"><strong>How often should brand protection KPIs be reviewed?</strong></h3>



<p class="wp-block-paragraph">Operational metrics monthly. Both financial metrics and channel coverage are advised to be reviewed quarterly. Last but not least, attack decay rate should be reviewed at the end of each 12-month period.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">Brand protection has historically undersold itself by reporting activity as if it were an outcome. Thankfully, the frameworks for doing it properly now exist!</p>



<p class="wp-block-paragraph"><br>Programs that want to move from cost-center to value-generating need three things: a data infrastructure that categorizes threats consistently enough to track lifecycle curves, a financial methodology that labels hard numbers and modeled estimates separately, and the discipline to report attack decay alongside removal volume.</p>



<p class="wp-block-paragraph">The AI measurement problem adds a layer no program has fully solved yet. Brand presence in AI-generated answers is a real and growing concern, and the KPIs are nascent. The programs that are ahead of this in 2027 will be the ones measuring it in 2026.</p>
<p>The post <a href="https://adtechholding.com/blog/brand-protection-kpis/">Can You Measure Brand Protection? The KPIs That Actually Exist</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AdTech Holding Recognized with Brandon Hall Group Gold HCM Excellence Award for Excellence in Best Business Strategy</title>
		<link>https://adtechholding.com/blog/adtech-holding-brandon-hall-gold-award-2026/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Thu, 03 Sep 2026 13:39:52 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[AdTech Holding]]></category>
		<category><![CDATA[Awards]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2948</guid>

					<description><![CDATA[<p>AdTech Holding and PropellerAds have won a Gold Brandon Hall Group HCM Excellence Award 2026 for Best Business Strategy. Here is what the strategy-first program changed inside the company, and how it was judged.</p>
<p>The post <a href="https://adtechholding.com/blog/adtech-holding-brandon-hall-gold-award-2026/">AdTech Holding Recognized with Brandon Hall Group Gold HCM Excellence Award for Excellence in Best Business Strategy</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We&#8217;re proud to share that <a href="https://adtechholding.com/" target="_blank" rel="noreferrer noopener">AdTech Holding</a> and its flagship advertising platform <a href="https://propellerads.com/" target="_blank" rel="noreferrer noopener">PropellerAds</a>, have <a href="https://brandonhall.com/brandon-hall-group-announces-winners-of-the-2026-hcm-excellence-awards/" target="_blank" rel="noreferrer noopener nofollow">won</a> a Gold <a href="https://brandonhall.com/" target="_blank" rel="noreferrer noopener nofollow">Brandon Hall Group</a> HCM Excellence Award 2026 in the Best Business Strategy category, within the Future of Work program area.</p>



<p class="wp-block-paragraph">The award recognizes our &#8220;AdTech Holding Becomes Strategy-First Organization&#8221; program, which we ran together with business strategy consultancy <a href="https://sotapeople.com/" target="_blank" rel="noreferrer noopener nofollow">SOTA</a>.</p>



<p class="wp-block-paragraph">The Brandon Hall Group HCM Excellence Awards are decided by a panel of independent senior industry experts, analysts, and executives. They judge against a published evaluation framework rather than popularity or nomination alone. </p>



<p class="wp-block-paragraph">That independent validation strengthens both our employer brand and the confidence our partners place in us, across AdTech Holding, SOTA, and PropellerAds.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">About the Brandon Hall Group HCM Excellence Awards</h2>



<p class="wp-block-paragraph">For more than 30 years, the Brandon Hall Group HCM Excellence Awards have recognized organizations that turn workforce strategy into measurable business results. </p>



<p class="wp-block-paragraph">The program is widely regarded as the <a href="https://brandonhall.com/brandon-hall-group-announces-winners-of-the-2026-hcm-excellence-awards/" target="_blank" rel="noreferrer noopener nofollow">Academy Awards</a> of Human Capital Management.</p>



<p class="wp-block-paragraph">What makes a Gold here worth having is how entries are judged. Brandon Hall Group describes the process this way: every submission is reviewed by a panel of veteran independent industry experts, its own analysts, and executives, against the same four published criteria:</p>



<ul class="wp-block-list">
<li>Alignment to the business need and environment</li>



<li>Program design, functionality, and delivery</li>



<li>Adoption, integration, user experience, innovation, and creativity</li>



<li>Overall effectiveness, impact, and measurable benefits</li>
</ul>



<p class="wp-block-paragraph">In other words, recognition is earned on demonstrated results rather than on popularity or a nomination alone. A program has to show what it changed, not just that it happened.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Winning Program</h2>



<p class="wp-block-paragraph">The winning entry, AdTech Holding Becomes Strategy-First Organization, reshaped how the company sets direction and <a href="https://adtechholding.com/blog/adtech-financial-meetup-in-the-new-office/" target="_blank" rel="noreferrer noopener">turns strategy into everyday practice</a>. We designed and delivered it alongside SOTA, whose expertise helped us build a working system that teams across the organization now use.</p>



<p class="wp-block-paragraph">The results show up in how leaders read the strategy and work with it. In our leadership pulse survey, OKR effectiveness came in at 88%, and 94% of leaders said the strategy is clear to them.</p>



<p class="wp-block-paragraph">Gold in this category recognizes that the way AdTech Holding is run, from how decisions get made to how strategy reaches the teams delivering on it, meets the standards this program measures against.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">In Their Words</h2>



<p class="wp-block-paragraph">Brandon Hall Group put it this way when announcing the 2026 winners:&nbsp;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Every year, the HCM Excellence Awards® remind us that innovation is ultimately about impact. The organizations recognized this year have demonstrated that great HR and learning strategies don&#8217;t just improve programs; they strengthen organizations, empower people, and deliver measurable business results. We are honored to celebrate their achievements,</p>
</blockquote>



<p class="wp-block-paragraph"><strong>said <a href="https://www.linkedin.com/in/rachelcooke/" target="_blank" rel="noreferrer noopener nofollow">Rachel Cooke</a>, COO of Brandon Hall Group™ and HCM Excellence Awards® Program Leader</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Becoming strategy-first means turning direction into a shared operating discipline. We have built a system that helps our teams make clearer choices, stay aligned and translate priorities into measurable action. This recognition reflects the commitment of everyone who made that change part of how we work every day,</p>
</blockquote>



<p class="wp-block-paragraph"><strong>said <a href="https://www.linkedin.com/in/elena-dolya-04a72640/" target="_blank" rel="noreferrer noopener nofollow">Elena Dolya</a>, Chief Administrative Officer at AdTech Holding.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Looking Ahead</h2>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The Gold will be presented in person at the Brandon Hall Group HCM Excellence Conference on January 26 to 28, 2027. Winners walk across the stage during the Awards Ceremony to receive the trophy from Mike Cooke, Rachel Cooke, and Michael Rochelle.</p>



<p class="wp-block-paragraph">An award like this belongs to a lot of people. Thank you to the teams across AdTech Holding who did the work, and to SOTA, whose partnership shaped the program from the start.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/05/Adtech-deloitte-fast-50-1024x536.png" alt="AdTech Holding is a Deloitte Fast 50 Winner, for the 4th Consecutive Time
" class="wp-image-2605 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/05/Adtech-deloitte-fast-50-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/05/Adtech-deloitte-fast-50-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/05/Adtech-deloitte-fast-50-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/05/Adtech-deloitte-fast-50.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-holding-is-a-deloitte-fast-50-winner/" target="_blank" rel="noreferrer noopener">AdTech Holding is a Deloitte Fast 50 Winner</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">We take recognition like this as a checkpoint rather than a finish line. The strategy-first way of working is now part of how we operate, and we&#8217;ll keep building on it, <a href="https://adtechholding.com/careers/" target="_blank" rel="noreferrer noopener">for our people</a>, for our projects, and for the partners who grow with us.</p>
<p>The post <a href="https://adtechholding.com/blog/adtech-holding-brandon-hall-gold-award-2026/">AdTech Holding Recognized with Brandon Hall Group Gold HCM Excellence Award for Excellence in Best Business Strategy</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fraud Without Borders: How Ad Tech and Payment Platforms Fight Financial Crime Together</title>
		<link>https://adtechholding.com/blog/fraud-without-borders-adtech-nuvei/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Thu, 03 Sep 2026 06:38:17 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Fraud]]></category>
		<category><![CDATA[KYC]]></category>
		<category><![CDATA[Risk management]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2893</guid>

					<description><![CDATA[<p>Ad fraud and payment fraud run on the same infrastructure. AdTech Holding and Nuvei compare what each side sees, and where the two still miss each other.</p>
<p>The post <a href="https://adtechholding.com/blog/fraud-without-borders-adtech-nuvei/">Fraud Without Borders: How Ad Tech and Payment Platforms Fight Financial Crime Together</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>A joint perspective from AdTech Holding and Nuvei</em></p>



<p class="wp-block-paragraph">When people picture financial crime, they usually think of stolen card numbers and disputed charges first. What’s less visible is that a huge part of this fraud starts earlier in advertising, long before any payment happens.</p>



<p class="wp-block-paragraph">A fraudulent transaction is frequently just the last visible step in a chain that starts with fake traffic: a bot clicks an ad, a compromised device generates a fraudulent lead, or a fake user profile completes a sign-up flow built purely to be monetized later. Seen from the ad tech side, fraud isn’t two separate problems split neatly between ‘advertising’ and ‘payments.’</p>



<p class="wp-block-paragraph">It’s one criminal economy moving through whichever checkpoint is weakest. Ad platforms simply sit at an earlier checkpoint than payment providers, which means they often see the same bad actors before those actors ever reach a checkout page.</p>



<p class="wp-block-paragraph">That’s the core argument for treating fraud prevention as a shared discipline rather than two parallel industries, and it’s the idea behind this joint piece from <a href="https://adtechholding.com/" target="_blank" rel="noreferrer noopener">AdTech Holding</a> and <a href="https://www.nuvei.com/" target="_blank" rel="noreferrer noopener">Nuvei</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What ad fraud actually looks like</h2>



<p class="wp-block-paragraph">Ad fraud comes in different variations, and each has a different relationship to the financial crime that follows it downstream:</p>



<ul class="wp-block-list">
<li><strong>Bot traffic and click farms. </strong>Automated scripts or human-operated device farms simulate genuine engagement&nbsp; – clicks, impressions, app installs – to drain <a href="https://adtechholding.com/blog/ad-tech-security-brands-advertisers/" target="_blank" rel="noreferrer noopener">advertiser budgets</a> or manufacture fake performance data.</li>



<li><strong>Fraudulent lead generation. </strong>Fake or incentivized sign-ups are built to pass basic validation checks. These often feed directly into payment fraud: a fake account exists specifically to test stolen card details or absorb a promotional credit.</li>



<li><strong>Device and identity spoofing. </strong><a href="https://adtechholding.com/blog/anti-fraud-solutions-for-mobile-traffic/" target="_blank" rel="noreferrer noopener">Fraud rings mask device fingerprints</a>, IP addresses, and user-agent strings to bypass detection filters and appear as unique, legitimate users.</li>



<li><strong>Domain and SDK spoofing. </strong>Bad actors misrepresent where an ad actually appeared, redirecting advertiser spend toward fraudulent inventory instead of real audiences.</li>
</ul>



<p class="wp-block-paragraph">The detail that matters most here is that several of these tactics rely on the exact same infrastructure – device farms, <a href="https://adtechholding.com/blog/ai-brand-protection-challenges/" target="_blank" rel="noreferrer noopener">spoofed identities</a>, scripted behavior – that later resurfaces in account takeover, promo abuse, and payment fraud. A bot network built to fake ad engagement rarely gets thrown away after one use. It gets repurposed.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">How AdTech Holding detects and prevents it</h2>



<p class="wp-block-paragraph">In 2025 alone, PropellerAds — one of AdTech Holding&#8217;s flagship advertising platforms — banned 1,676 advertiser accounts for fraud-pattern violations – cloaking, confirmed fraud, fake identity, multi-accounting, carding, and scam landing pages – with cloaking as the single largest category, at roughly 78% of those bans. The first half of 2026 is already on a comparable pace.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-1024x536.png" alt="adtech-ai-banner" class="wp-image-913 size-full" srcset="https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-artificial-intelligence-trends-predictions/" target="_blank" rel="noreferrer noopener">Artificial Intelligence in AdTech: Trends and Predictions</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">As one example of scale: on a single vertical alone, PropellerAds&#8217; real-time systems flag and redirect confirmed fraudulent traffic continuously – roughly 1 in every 35,000 impressions over a recent 30-day window. That’s a high-confidence redirect layer sitting on top of, not instead of, <a href="https://adtechholding.com/blog/programmatic-auctions-ai-bidding-supply-chain/" target="_blank" rel="noreferrer noopener">earlier pre-bid scoring</a> and blocklist filtering further upstream.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Fraud on the ad tech side rarely looks dramatic in the moment. It’s a cloaked domain, a device farm running the same script a thousand times, an account that keeps coming back under a new name. What changes the economics for fraud rings isn’t catching one instance; it’s making the pattern expensive to repeat. That’s what real-time scoring and cross-referencing with partners like Nuvei actually buys us.’</em></p>
</blockquote>



<p class="wp-block-paragraph"><strong><a href="https://www.linkedin.com/in/farukh-rakhimov-6b7a133a?originalSubdomain=cy" target="_blank" rel="noreferrer noopener nofollow">— Farukh Rakhimov, Head of Finance Operations and Compliance Group, AdTech Holding</a></strong></p>



<p class="wp-block-paragraph">Traffic quality enforcement at scale depends on layering multiple types of defense, because no single signal catches everything on its own:</p>



<ul class="wp-block-list">
<li><strong>Real-time traffic scoring, </strong>which evaluates clicks and impressions against behavioral, technical, and historical signals before advertiser spend is finalized – not after the fact.</li>



<li><strong>Device and IP reputation systems, </strong>cross-referencing traffic sources against known fraud patterns and continuously updated blocklists.</li>



<li><strong>Behavioral analysis, </strong>looking for patterns real humans don’t produce: impossible click speeds, unnatural session paths, or geographic and time zone mismatches.</li>



<li><strong>Post-click and conversion validation, </strong>checking whether ‘engaged’ traffic actually behaves like genuine users further down the funnel – which is exactly where overlap with a payment partner’s fraud signals becomes valuable.</li>



<li><strong>Alignment with industry verification standards, </strong>such as <a href="https://mediaratingcouncil.org/" target="_blank" rel="noreferrer noopener nofollow">MRC</a>/<a href="https://www.iab.com/guidelines/iab-invalid-traffic-ivt-detection-and-filtration-guidelines/" target="_blank" rel="noreferrer noopener nofollow">IAB</a> invalid traffic (IVT) definitions and independent third-party verification, so fraud rates aren’t a metric platforms grade on their own homework.</li>
</ul>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="512" src="https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB-1024x512.png" alt="AdTech - Adex joins IAB" class="wp-image-344 size-full" srcset="https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB-1024x512.png 1024w, https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB-300x150.png 300w, https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB-768x384.png 768w, https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB-1536x768.png 1536w, https://adtechholding.com/wp-content/uploads/2022/08/AdTech-Adex-joins-IAB.png 1800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-holding-project-update-adex-joins-iab/" target="_blank" rel="noreferrer noopener">AdTech Holding Project Update: ADEX Joins IAB<br></a><br></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">None of these methods work in isolation. A device that looks slightly suspicious on one signal but clean on the rest needs to be evaluated as a pattern, not a single red flag – which is the same logic payment risk teams apply to transactions.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The other half of the chain: fraud at the point of payment</h2>



<p class="wp-block-paragraph">If ad platforms are the earlier checkpoint, payment infrastructure is where the same fraud economy tries to cash out. Nuvei has built one of the world’s most connected payments infrastructures around that premise, connecting businesses to their customers in more than 200 markets, over 720 alternative payment methods and 150 currencies, all through one integration – with <a href="https://www.nuvei.com/solutions/fraud-risk-management" target="_blank" rel="noreferrer noopener nofollow">fraud and risk management</a> running inside that same infrastructure rather than alongside it.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>‘Businesses face substantial financial losses due to fraud, which can amount to billions of dollars annually.’</em></p>
</blockquote>



<p class="wp-block-paragraph"><strong>— <a href="https://www.linkedin.com/in/lauramillerny/" target="_blank" rel="noreferrer noopener nofollow">Laura Miller, Chief Revenue Officer and Global Head of eCommerce</a>, Nuvei, in an </strong><a href="https://www.pymnts.com/news/payments-innovation/2024/gain-without-the-pain-nuvei-head-of-ecomm-on-whats-driving-payments-optimization/" target="_blank" rel="noreferrer noopener nofollow"><strong>interview with PYMNTS</strong></a><strong>&nbsp;</strong></p>



<p class="wp-block-paragraph">Holding those losses down isn&#8217;t the job of one fraud check at the end of the flow. It&#8217;s built into a few concrete layers:</p>



<ul class="wp-block-list">
<li><strong>Network tokenization. </strong>Replacing static card numbers with dynamic, scheme-issued tokens and one-time-use cryptograms means stolen card data has a shorter shelf life: tokens survive card reissuance and expiry, which improves authorization rates while shrinking fraud exposure and the merchant’s PCI scope.</li>



<li><strong>Regulatory-grade screening. </strong>Real-time sanctions and PEP screening, multi-language name matching, adverse media scoring, and perpetual <a href="https://adtechholding.com/blog/kyc-and-new-fraud-threats-2026/" target="_blank" rel="noreferrer noopener">KYC monitoring</a> sit underneath every transaction, with automated SAR and STR workflows feeding regulator-specific reporting.</li>



<li><strong>Fraud thresholds tied to regulation, not just risk appetite. </strong>Under <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32015L2366" target="_blank" rel="noreferrer noopener nofollow">PSD2’s Strong Customer Authentication rules</a>, Nuvei manages Transaction Risk Analysis exemptions for qualifying transactions – but only by holding fraud rates at the levels regulators require to qualify for that exemption in the first place. Compliance and fraud prevention aren’t separate workstreams here; the second is a precondition for the first.</li>
</ul>



<p class="wp-block-paragraph">None of this runs as a separate module bolted onto payment processing. Nuvei&#8217;s Payment Orchestration hub evaluates every transaction against risk, cost, and compliance criteria in the same real-time decision sequence, before choosing a route, retrying a failed attempt, or stepping up authentication. </p>



<p class="wp-block-paragraph">Fraud scoring isn&#8217;t a checkpoint a transaction passes through; it&#8217;s one input the routing engine weighs alongside everything else, on every single transaction.&nbsp;</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg" alt="KYC in AdTech: novel threats and measures in 2026" class="wp-image-2575 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg 1024w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-300x157.jpg 300w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-768x402.jpg 768w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><a href="https://adtechholding.com/blog/kyc-and-new-fraud-threats-2026/" target="_blank" rel="noreferrer noopener">The Future of KYC: How to Respond to New Fraud Threats in 2026<br></a><br></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Nuvei has also held <a href="https://www.pcisecuritystandards.org/standards/pci-dss/" target="_blank" rel="noreferrer noopener nofollow">PCI DSS Level 1</a> certification, the highest tier of the standard, since 2007, validated annually through independent security audits. Merchants routing payments through Nuvei inherit that certification, meaning it materially reduces their own compliance burden instead of adding to it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Where the two sides of the ecosystem meet</h2>



<p class="wp-block-paragraph">This is the part that makes a joint analysis more useful than two separate ones: fraud signals detected in advertising traffic often resurface, sometimes days or weeks later, as fraud signals in a payment flow. </p>



<p class="wp-block-paragraph">A device flagged for bot-like ad engagement is a meaningfully higher-risk device when it shows up at checkout. A user acquired through a fraudulent lead campaign is statistically more likely to be involved in a chargeback dispute or promo abuse further downstream.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="814" height="611" src="https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-venn-diagram-2.png" alt="A short two-circle Venn diagram titled &quot;Two Data Sets, One Picture.&quot; One circle represents AdTech Holding's fraud signals (bot-like ad engagement, device reputation flags, fraudulent lead patterns), the other represents Nuvei's fraud signals (chargeback disputes, risk-scoring flags, promo-abuse patterns). The overlap shows what's shared today: for joint clients, data is already matched via API, though it's noted as two parallel processes, not a unified system yet." class="wp-image-2938" srcset="https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-venn-diagram-2.png 814w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-venn-diagram-2-300x225.png 300w, https://adtechholding.com/wp-content/uploads/2026/09/adtech-nuvei-venn-diagram-2-768x576.png 768w" sizes="(max-width: 814px) 100vw, 814px" /></figure>



<p class="wp-block-paragraph">Right now, most of the industry treats these as separate detection systems that simply don’t talk to each other. In practice, for shared clients, AdTech Holding and Nuvei already compare notes at the data level – client information collected via API on our side is matched against Nuvei’s own records. </p>



<p class="wp-block-paragraph">That said, this remains two parallel detection processes today, not a unified system – which is precisely the gap this partnership is pointing at.</p>



<p class="wp-block-paragraph">This is where transaction-side expertise – the kind reflected in Nuvei’s work on <a href="https://www.nuvei.com/solutions/fraud-risk-management" target="_blank" rel="noreferrer noopener nofollow">chargeback fraud, dispute automation, and real-time risk scoring</a> – becomes the natural counterpart to traffic-side fraud detection at the holding&#8217;s advertising platforms. The two data sets, viewed together, tell a more complete story than either does alone.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why this partnership itself is the point</h2>



<p class="wp-block-paragraph">Fraud prevention runs on trust, and trust is hard to fake at scale. AdTech Holding and Nuvei didn’t choose each other by accident: both operate in categories – advertising and payments – where a single weak link in fraud controls becomes everyone’s liability. </p>



<p class="wp-block-paragraph">A holding whose advertising platforms take ad fraud seriously and a payment provider that takes chargeback fraud seriously are, by definition, more compatible partners for clients who need both.</p>



<p class="wp-block-paragraph">This piece is itself a small proof point of that: two companies willing to put their fraud posture in writing, side by side.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The systemic case</h2>



<p class="wp-block-paragraph">Ad fraud and payment fraud are both symptoms of the same underlying economics: fraud follows wherever verification is weakest, and the payoff is fastest. Solving it at only one layer – blocking bad clicks but not bad transactions, or vice versa – doesn’t eliminate the fraudulent actor. It just pushes them one step further down the funnel, into whichever system hasn’t caught up yet.</p>



<p class="wp-block-paragraph">The more the ad tech and payments industries share pattern-level insight – not necessarily raw data, but a common understanding of what fraudulent behavior looks like at each stage – the harder it becomes for the same bad actors to keep exploiting the gap between &#8216;before the click&#8217; and &#8216;after the charge.&#8217;</p>



<div class="fwb2026v2-about-wrap">
  <div class="fwb2026v2-about-card">
    <div class="fwb2026v2-about-topbar fwb2026v2-bar-nuvei"></div>
    <div class="fwb2026v2-about-body">
      <div class="fwb2026v2-about-mark fwb2026v2-mark-nuvei">N</div>
      <div class="fwb2026v2-about-name">About Nuvei</div>
      <div class="fwb2026v2-about-text">
        Nuvei is the growth infrastructure for every payment, everywhere. One intelligent system built to scale. Its modular, flexible, and scalable technology enables leading companies to accept next-generation payments, offer all payout options, and benefit from card issuing, banking, risk, and fraud management services. Connecting businesses to their customers in more than 200 markets, with local acquiring in 52 markets, 150 currencies, and over 720 alternative payment methods, Nuvei provides the technology and insights for customers and partners to succeed locally and globally through one integration.
      </div>
    </div>
  </div>

  <div class="fwb2026v2-about-card">
    <div class="fwb2026v2-about-topbar fwb2026v2-bar-adtech"></div>
    <div class="fwb2026v2-about-body">
      <div class="fwb2026v2-about-mark fwb2026v2-mark-adtech">AH</div>
      <div class="fwb2026v2-about-name">About AdTech Holding</div>
      <div class="fwb2026v2-about-text">
        AdTech Holding is a global innovator in marketing and advertising technology, developing products and services that empower advertisers and partners worldwide. Since 2011, headquartered in Limassol, Cyprus, the company employs over 400 professionals and delivers cutting-edge digital solutions to the global market. Fraud prevention, from real-time traffic scoring to advertiser-side enforcement, is engineered into our products&#8217; technology stacks as infrastructure.
      </div>
    </div>
  </div>
</div>

<style>
.fwb2026v2-about-wrap {
  font-family: 'Segoe UI', Arial, Helvetica, sans-serif;
  max-width: 940px;
  margin: 40px auto;
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
}
.fwb2026v2-about-wrap * {
  box-sizing: border-box;
}
.fwb2026v2-about-card {
  flex: 1 1 340px;
  background: #ffffff;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 4px 6px rgba(15, 23, 42, 0.04), 0 10px 24px rgba(15, 23, 42, 0.08);
  border: 1px solid #eef0f4;
}
.fwb2026v2-about-topbar {
  height: 6px;
  width: 100%;
}
.fwb2026v2-bar-adtech {
  background: linear-gradient(90deg, #1e1b4b, #4f46e5);
}
.fwb2026v2-bar-nuvei {
  background: linear-gradient(90deg, #075985, #0ea5e9);
}
.fwb2026v2-about-body {
  padding: 28px 26px 30px;
}
.fwb2026v2-about-mark {
  width: 46px;
  height: 46px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 15px;
  color: #ffffff;
  margin-bottom: 18px;
  letter-spacing: 0.3px;
}
.fwb2026v2-mark-adtech {
  background: linear-gradient(135deg, #4f46e5, #1e1b4b);
}
.fwb2026v2-mark-nuvei {
  background: linear-gradient(135deg, #0ea5e9, #075985);
}
.fwb2026v2-about-name {
  font-size: 17px;
  font-weight: 800;
  color: #0f172a;
  margin-bottom: 12px;
  letter-spacing: -0.2px;
}
.fwb2026v2-about-text {
  font-size: 14px;
  line-height: 1.7;
  color: #475569;
}

@media (max-width: 640px) {
  .fwb2026v2-about-wrap { flex-direction: column; }
}
</style>
<p>The post <a href="https://adtechholding.com/blog/fraud-without-borders-adtech-nuvei/">Fraud Without Borders: How Ad Tech and Payment Platforms Fight Financial Crime Together</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI Brand Protection Challenges: What Changed When Faking a Brand Got Cheap</title>
		<link>https://adtechholding.com/blog/ai-brand-protection-challenges/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 12:37:14 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2857</guid>

					<description><![CDATA[<p>Most of what attackers do to brands in 2026 is not new. Cloned websites, fake support accounts, counterfeit storefronts, and executive impersonation all predate generative AI by years. What changed is the cost structure. A convincing clone used to take a skilled operator hours to build and a working knowledge of the target&#8217;s design system. [&#8230;]</p>
<p>The post <a href="https://adtechholding.com/blog/ai-brand-protection-challenges/">AI Brand Protection Challenges: What Changed When Faking a Brand Got Cheap</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Most of what attackers do to brands in 2026 is not new. Cloned websites, fake support accounts, counterfeit storefronts, and executive impersonation all predate generative AI by years. What changed is the cost structure. A convincing clone used to take a skilled operator hours to build and a working knowledge of the target&#8217;s design system. It now takes a prompt, and the same operator can run hundreds of variants in the time the old workflow produced one.</p>



<p class="wp-block-paragraph">That shift matters more than any individual technique, because brand protection was built around the old economics. Legal-led takedown processes assume a small number of infringements worth pursuing individually. When generation is effectively free, and enforcement still runs at legal speed, the arithmetic stops working.</p>



<p class="wp-block-paragraph">This piece covers three challenges that did not meaningfully exist before AI: impersonation at industrial volume, synthetic content that carries the brand&#8217;s likeness, and a new layer sitting between the brand and the customer where the model itself can send people to an attacker.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Key Takeaways:</strong></h2>



<ul class="wp-block-list">
<li>AI changed the economics of brand abuse rather than the categories. The defensive question is throughput.</li>



<li>Netcraft&#8217;s research found that 34% of login URLs a large language model suggested for 50 well-known brands were not controlled by those brands, and roughly 29% pointed at domains that were unregistered or parked and therefore available to claim.</li>



<li>Gartner reported in September 2025 that 62% of surveyed organizations had experienced a deepfake attack involving social engineering or automated process abuse in the preceding year.</li>



<li>Defensive domain registration does not scale against hallucinated domains, because the variation space is unbounded and regenerates.</li>



<li>The practical shift is organizational: brand protection behaves like a monitoring and response function, measured in time to detection and time to takedown.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Actually Changed: The Economics</h2>



<p class="wp-block-paragraph">It is worth being precise here, because &#8216;AI changed everything&#8217; is the kind of claim that sounds informative and is not.</p>



<p class="wp-block-paragraph">The attack categories are largely stable. Domain spoofing, fake social profiles, counterfeit listings, phishing pages, and impersonation of named executives were all mature techniques before generative models were widely available. What AI removed was the labor cost at each step: writing convincing copy in the target&#8217;s voice, reproducing a visual identity, localizing into a dozen languages, and generating enough variation to survive pattern-based detection.</p>



<p class="wp-block-paragraph">Remove that cost and two things follow: the volume of attempts rises, and the marginal attempt becomes worth making even when the expected return is small. A campaign that would not have justified a week of work justifies an afternoon, so brands that were previously too small to target profitably now get targeted.</p>



<p class="wp-block-paragraph">The defensive consequence is that enforcement capacity becomes the binding constraint. A brand protection function that could handle forty cases a quarter is not failing when it handles forty; it is failing because the input queue now has four hundred.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Challenge One: Impersonation at Industrial Volume</h2>



<p class="wp-block-paragraph">The first challenge is straightforward to describe and unpleasant to manage. Clones, lookalike domains, fake profiles, and scam ads wearing the brand&#8217;s identity now appear faster than a manual process removes them.</p>



<p class="wp-block-paragraph">Netcraft documented one version of this at scale, finding more than <a href="https://www.netcraft.com/blog/large-language-models-are-falling-for-phishing-scams" target="_blank" rel="noreferrer noopener nofollow">17,000 AI-generated phishing pages hosted on a documentation platform</a> and styled as legitimate product documentation and support hubs. The pages were clean, fast, and written in fluent product-marketing English. </p>



<p class="wp-block-paragraph">That combination is the point: the volume is machine-scale, and the individual quality is high enough that a human reviewer cannot triage by looking. The consumer-side cost is measurable. The FTC reported that people lost <a href="https://www.ftc.gov/news-events/news/press-releases/2026/06/ftc-data-show-people-reported-losing-3-point-5-billion-imposter-scams-2025" target="_blank" rel="noreferrer noopener nofollow">$3.5 billion to imposter scams in 2025</a>, a category that includes business and government impersonation. Not all of that traces to AI-generated infrastructure, and the FTC does not break it out that way. It does establish the scale of the surface that cheap generation is now feeding.</p>



<p class="wp-block-paragraph">The shift most teams underestimate is what this does to prioritization: when the queue was small, every case got attention. When the queue is large, someone has to decide which infringements are worth enforcement, and that decision is now the job.&nbsp;</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Programmatic-Auctions-AI-Bidding-Supply-Chain-1024x536.png" alt="AdTech - programmatic auctions, showing AI bidding, first-price auctions, bid shading, supply path optimization, and a cleaner advertising supply chain." class="wp-image-2818 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Programmatic-Auctions-AI-Bidding-Supply-Chain-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Programmatic-Auctions-AI-Bidding-Supply-Chain-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Programmatic-Auctions-AI-Bidding-Supply-Chain-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Programmatic-Auctions-AI-Bidding-Supply-Chain.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/programmatic-auctions-ai-bidding-supply-chain/" target="_blank" rel="noreferrer noopener">How Programmatic Auctions Changed: New Bid Models, AI, and a Cleaner Supply Chain</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Challenge Two: Synthetic Content That Wears the Brand</h2>



<p class="wp-block-paragraph">The second challenge is content that carries the brand&#8217;s likeness without touching the brand&#8217;s infrastructure at all. Deepfake video and audio of named executives, AI-generated product reviews, and synthetic influencers promoting counterfeits all sit outside the traditional brand protection perimeter –&nbsp; on a social platform, inside a messaging app, or in a video call.</p>



<p class="wp-block-paragraph"><a href="https://www.gartner.com/en/newsroom/press-releases/2025-09-22-gartner-survey-reveals-generative-artificial-intelligence-attacks-are-on-the-rise" target="_blank" rel="noreferrer noopener nofollow">Gartner&#8217;s September 2025 survey</a> found that 62% of the organizations it surveyed had experienced a deepfake attack involving social engineering or the exploitation of automated processes in the prior twelve months. As an exposure signal, it is high.</p>



<p class="wp-block-paragraph">The part that is genuinely hard is that detection and enforcement live with third parties. A brand can prove a video is fabricated. It cannot remove the video, which means response time is bounded by a platform&#8217;s review process rather than by the brand&#8217;s own capability. Building relationships and reporting paths with the platforms where the brand&#8217;s audience actually is turns out to matter more than any detection tooling, because detection without a route to removal produces a well-documented problem.</p>



<div class="adtvz-3">
<style>
.adtvz-3{
  --at-ink:#001847; --at-body:#3A4A6A; --at-mute:#5A6A8A; --at-faint:#8A99BB;
  --at-line:#D6E2F5; --at-hair:#EBF2FF; --at-bg:#F5F7FC; --at-tint:#F8FAFE;
  --at-blue:#0055CC; --at-amber:#E07B39; --at-red:#C43030;
  all:initial;
  display:block !important;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif !important;
  color:var(--at-body) !important;
  background:var(--at-bg) !important;
  border:1.5px solid var(--at-line) !important;
  border-radius:12px !important;
  padding:22px 20px 18px !important;
  margin:32px 0 !important;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.adtvz-3 *,.adtvz-3 *::before,.adtvz-3 *::after{box-sizing:border-box !important;}

.adtvz-3 .at-eyebrow{
  margin:0 0 6px !important;font-size:10px !important;font-weight:700 !important;
  letter-spacing:2px !important;color:var(--at-blue) !important;text-transform:uppercase !important;line-height:1.3 !important;
}
.adtvz-3 .at-title{
  margin:0 !important;padding:0 !important;border:0 !important;
  font-size:18px !important;line-height:1.25 !important;font-weight:800 !important;
  color:var(--at-ink) !important;font-family:inherit !important;
}
.adtvz-3 .at-sub{
  margin:6px 0 18px !important;font-size:12.5px !important;line-height:1.6 !important;
  color:var(--at-mute) !important;font-weight:400 !important;max-width:620px !important;
}

.adtvz-3 .at-scroll{overflow-x:auto !important;-webkit-overflow-scrolling:touch !important;
  border:1.5px solid var(--at-line) !important;border-radius:12px !important;background:#fff !important;}

.adtvz-3 table{
  width:100% !important;min-width:700px !important;
  border-collapse:collapse !important;border-spacing:0 !important;
  margin:0 !important;background:transparent !important;border:0 !important;
  font-size:12px !important;table-layout:fixed !important;
}
.adtvz-3 col.at-c1{width:22%;} .adtvz-3 col.at-c2{width:24%;}
.adtvz-3 col.at-c3{width:26%;} .adtvz-3 col.at-c4{width:28%;}

.adtvz-3 thead th{
  padding:11px 14px !important;
  font-size:10px !important;font-weight:700 !important;letter-spacing:0.09em !important;
  text-transform:uppercase !important;text-align:left !important;
  color:var(--at-mute) !important;background:#EEF2FA !important;
  border:0 !important;border-bottom:2px solid var(--at-line) !important;
  vertical-align:bottom !important;font-family:inherit !important;
}
.adtvz-3 thead th:not(:last-child){border-right:1px solid var(--at-line) !important;}
.adtvz-3 thead th.at-h1{border-top:3px solid var(--at-faint) !important;}
.adtvz-3 thead th.at-h2{border-top:3px solid #8A99BB !important;}
.adtvz-3 thead th.at-h3{border-top:3px solid var(--at-amber) !important;}
.adtvz-3 thead th.at-h4{border-top:3px solid var(--at-red) !important;}

.adtvz-3 tbody tr{border-bottom:1px solid var(--at-line) !important;background:transparent !important;}
.adtvz-3 tbody tr:last-child{border-bottom:0 !important;}
.adtvz-3 tbody td{
  padding:14px !important;vertical-align:top !important;
  font-size:12px !important;line-height:1.6 !important;color:var(--at-body) !important;
  border:0 !important;font-family:inherit !important;
}
.adtvz-3 tbody td:not(:last-child){border-right:1px solid var(--at-hair) !important;}

.adtvz-3 .at-dim{background:var(--at-tint) !important;}
.adtvz-3 .at-ico{
  width:28px !important;height:28px !important;border-radius:8px !important;
  background:#EBF2FF !important;display:flex !important;align-items:center !important;
  justify-content:center !important;margin:0 0 8px !important;
}
.adtvz-3 .at-ico svg{width:15px !important;height:15px !important;display:block !important;
  stroke:#0055CC !important;fill:none !important;stroke-width:1.7 !important;
  stroke-linecap:round !important;stroke-linejoin:round !important;}
.adtvz-3 .at-name{font-size:12px !important;font-weight:800 !important;color:var(--at-ink) !important;line-height:1.35 !important;}

.adtvz-3 .at-before{background:#FAFBFD !important;color:#4A5878 !important;}
.adtvz-3 .at-after{background:#FFFBF6 !important;color:#7A4A12 !important;}
.adtvz-3 .at-conseq{background:#FFF8F8 !important;color:#8F2222 !important;}

.adtvz-3 .at-chip{
  display:inline-flex !important;align-items:center !important;gap:5px !important;
  margin:8px 0 0 !important;padding:2px 9px !important;border-radius:20px !important;
  font-size:10px !important;font-weight:700 !important;letter-spacing:0.04em !important;line-height:1.7 !important;
  background:#EBF2FF !important;color:#0055CC !important;
}
.adtvz-3 .at-chip i{width:5px !important;height:5px !important;border-radius:50% !important;background:currentColor !important;display:block !important;font-style:normal !important;}

/* payoff row: the least obvious shift, anchored as the closing line */
.adtvz-3 tr.at-key{border-top:2px solid #0055CC !important;}
.adtvz-3 tr.at-key td{background:#F4F8FF !important;}
.adtvz-3 tr.at-key td.at-dim{background:#EBF2FF !important;}
.adtvz-3 tr.at-key .at-name{color:#0055CC !important;}
.adtvz-3 tr.at-key .at-ico{background:#D6E2F5 !important;}
.adtvz-3 tr.at-key .at-ico svg{stroke:#00368A !important;}
.adtvz-3 tr.at-key td.at-conseq{color:#00368A !important;font-weight:700 !important;background:#EFF5FF !important;}

.adtvz-3 .at-foot{
  display:flex !important;flex-wrap:wrap !important;align-items:center !important;gap:16px !important;
  margin:14px 0 0 !important;padding:12px 2px 0 !important;border-top:1px solid var(--at-line) !important;
}
.adtvz-3 .at-leg{display:flex !important;align-items:center !important;gap:6px !important;
  font-size:11px !important;line-height:1.4 !important;color:var(--at-faint) !important;}
.adtvz-3 .at-bar{width:12px !important;height:3px !important;border-radius:2px !important;display:block !important;flex:0 0 auto !important;}
.adtvz-3 .at-src{margin-left:auto !important;font-size:10px !important;color:#A8B6D0 !important;letter-spacing:0.05em !important;}
.adtvz-3 .at-hint{display:none !important;}

@media (max-width:760px){
  .adtvz-3{padding:18px 14px 14px !important;}
  .adtvz-3 .at-hint{display:block !important;margin:0 0 8px !important;font-size:11px !important;color:var(--at-faint) !important;}
  .adtvz-3 .at-src{margin-left:0 !important;}
}
</style>

  <p class="at-eyebrow">AdTech Holding</p>
  <p class="at-title">What Changed in the Economics of Brand Abuse</p>
  <p class="at-sub">The attack types stayed the same. What moved was the cost of running them</p>

  <p class="at-hint">Scroll the table sideways to see all four columns.</p>

  <div class="at-scroll">
    <table>
      <colgroup>
        <col class="at-c1"><col class="at-c2"><col class="at-c3"><col class="at-c4">
      </colgroup>
      <thead>
        <tr>
          <th class="at-h1" scope="col">Dimension</th>
          <th class="at-h2" scope="col">Pre-AI</th>
          <th class="at-h3" scope="col">With Generative AI</th>
          <th class="at-h4" scope="col">Defensive Consequence</th>
        </tr>
      </thead>
      <tbody>

        <tr>
          <td class="at-dim">
            <div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="8.5" y="8.5" width="12" height="12" rx="2.5"/><path d="M15.5 5.5h-9a3 3 0 0 0-3 3v9"/></svg></div>
            <div class="at-name">Cost to produce one convincing clone</div>
          </td>
          <td class="at-before">Hours of skilled work, plus working knowledge of the target&#8217;s design system.</td>
          <td class="at-after">Minutes from a prompt, repeated as many times as the attacker wants.</td>
          <td class="at-conseq">Volume becomes the constraint on defense, not quality.</td>
        </tr>

        <tr>
          <td class="at-dim">
            <div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8.5"/><path d="M3.5 12h17"/><path d="M12 3.5c2.3 2.5 3.4 5.4 3.4 8.5S14.3 18 12 20.5C9.7 18 8.6 15.1 8.6 12S9.7 6 12 3.5Z"/></svg></div>
            <div class="at-name">Localization</div>
          </td>
          <td class="at-before">A separate production effort for every language.</td>
          <td class="at-after">Close to free, in any language the target audience reads.</td>
          <td class="at-conseq">Brands in small markets lose the obscurity advantage.</td>
        </tr>

        <tr>
          <td class="at-dim">
            <div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M3.5 6.5h3.2c1.6 0 3 .9 3.7 2.4l3.2 6.2c.7 1.5 2.1 2.4 3.7 2.4h2.2"/><path d="M3.5 17.5h3.2c1.6 0 3-.9 3.7-2.4"/><path d="M14.4 8.9c.7-1.5 2.1-2.4 3.7-2.4h2.4"/><path d="M18.2 4.2l2.4 2.3-2.4 2.3M18.2 15.2l2.4 2.3-2.4 2.3"/></svg></div>
            <div class="at-name">Variation to evade pattern detection</div>
          </td>
          <td class="at-before">Manual and limited, so reuse across attempts was visible.</td>
          <td class="at-after">Unbounded, with no two samples sharing a signature.</td>
          <td class="at-conseq">Signature-based detection degrades over time.</td>
        </tr>

        <tr>
          <td class="at-dim">
            <div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 20.5V7.2l6.4-3.2v16.5"/><path d="M10.4 10.4H20v10.1"/><path d="M2.6 20.5h18.8"/><path d="M13.4 13.7h3.2M13.4 16.9h3.2M6.6 9.5h1.4M6.6 12.7h1.4M6.6 15.9h1.4"/></svg></div>
            <div class="at-name">Viable target size</div>
          </td>
          <td class="at-before">Large brands only, where the payoff justified the labor.</td>
          <td class="at-after">Any brand with a payment flow or a login page.</td>
          <td class="at-conseq">Mid-size brands enter the target set for the first time.</td>
        </tr>

        <tr class="at-key">
          <td class="at-dim">
            <div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M3 18.5c3.4 0 4.6-4.2 7.4-4.2 2 0 2.6 2.1 4.6 2.1 2.4 0 3.2-3.1 5-3.1"/><circle cx="18.6" cy="6.8" r="3.2"/><path d="M18.6 1.9v1.4M18.6 10.3v1.4M13.7 6.8h1.4M22.1 6.8h1.4"/></svg></div>
            <div class="at-name">Traffic acquisition for the lure</div>
            <span class="at-chip"><i></i>The least obvious shift</span>
          </td>
          <td class="at-before">The attacker had to buy or earn the traffic to reach the fake.</td>
          <td class="at-after">An AI answer can point the user at it directly.</td>
          <td class="at-conseq">The lure no longer needs a traffic budget at all.</td>
        </tr>

      </tbody>
    </table>
  </div>

  <div class="at-foot">
    <span class="at-leg"><span class="at-bar" style="background:#8A99BB"></span>How it worked before</span>
    <span class="at-leg"><span class="at-bar" style="background:#E07B39"></span>What AI changed</span>
    <span class="at-leg"><span class="at-bar" style="background:#C43030"></span>What it costs the defender</span>
    <span class="at-src">Traffic acquisition row grounded in Netcraft login-URL research, July 2025</span>
  </div>

</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Challenge Three: The Model Sitting Between You and Your Customer</h2>



<p class="wp-block-paragraph">The third challenge is the one with no pre-AI equivalent, and it is where the interesting failure lives.</p>



<p class="wp-block-paragraph">When a customer asks an assistant where to log in to a brand, the assistant answers with a URL. Netcraft tested this directly: across natural-language login queries for 50 well-known brands, the model returned 131 unique hostnames, and 34% of them were not controlled by the brand in question. Roughly 29% pointed at domains that were unregistered, parked, or otherwise inactive. About 5% pointed at unrelated legitimate businesses. In one live case the researchers documented, an AI search product answered a Wells Fargo login query with a phishing page hosted on a free site builder, ranked above the real domain.</p>



<p class="wp-block-paragraph">Sit with the second number for a moment, because it is the one that changes the threat model. An unregistered domain that a widely used model confidently recommends is not a mistake sitting harmlessly in an output. It is a lure with pre-attached traffic, available to anyone willing to spend registration fees.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-1024x536.png" alt="AdTech guide to data pipeline security for high-volume ad impression processing, PII protection, fraud detection, and compliance." class="wp-image-2763 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/data-pipeline-security-ad-impressions/" target="_blank" rel="noreferrer noopener">Data Pipeline Security in High-Volume Ad Impression Processing</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">That inverts the economics of phishing. The classic problem for an attacker was distribution: build a convincing fake, then find a way to get people in front of it through email, ads, or search manipulation. Traffic acquisition was the expensive, detectable step. When a model reliably points at a domain that nobody owns, the attacker skips that step entirely. The traffic arrives because a trusted interface sent it, and the interface will keep sending it, because the behavior producing the recommendation has not changed.</p>



<p class="wp-block-paragraph">There is a second-order version documented in the same research: attackers seeding fake developer resources, repositories, and tutorials so that AI coding assistants recommend a malicious API. In that case, the poisoned code made it into real projects, some of which appear to have been built with AI coding tools, which feeds the pattern back into the next round of training data.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Defensive Domain Registration Stopped Working</h2>



<p class="wp-block-paragraph">The obvious response to hallucinated domains is to register them. It does not hold up.</p>



<p class="wp-block-paragraph">Netcraft&#8217;s own conclusion on this is blunt, and the reasoning is sound: the variations are effectively unbounded, and models will produce new ones. Defensive registration is a finite budget applied to an infinite set. It also degrades in a specific way that is easy to miss. Buying the fifty most likely variants raises the attacker&#8217;s search cost slightly and does nothing about the fifty-first, while creating an internal impression that the problem is handled.</p>



<p class="wp-block-paragraph">Registration still has a role for the small number of variants that are genuinely high-traffic and predictable, particularly exact-match typos of the primary domain. Treating it as the strategy rather than as one narrow tactic is what fails.</p>



<p class="wp-block-paragraph">What works better is unglamorous: monitoring for newly registered domains that resemble the brand, watching for the specific hallucinated variants that models are currently producing, and having a takedown route that runs in hours rather than weeks. That is a detection and response capability, which is a different organizational thing from a trademark portfolio.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Speed Problem Nobody Solves With Tooling</h2>



<p class="wp-block-paragraph">Every part of this comes back to one asymmetry: generation runs in minutes, and enforcement runs at the speed of whoever has to approve it.</p>



<p class="wp-block-paragraph">A typical takedown path involves identifying the infringement, confirming it internally, drafting a notice, sending it to a registrar or platform, and waiting. Each of those steps is reasonable in isolation. Together they produce a response measured in days at best, against an attack that was assembled in an afternoon and may have already collected what it came for.</p>



<p class="wp-block-paragraph">Compressing that is mostly a permissions question rather than a technology question. Who can authorize a takedown without a legal review, for which categories of infringement, up to what threshold? Brands that have answered those questions in advance respond in hours. Brands that have not will discover the answer during an incident, which is the expensive time to discover it.</p>



<p class="wp-block-paragraph">This is also where the limit sits: faster response reduces exposure duration. It does not prevent the attack, and it does not recover the customers who were caught in the window before detection. Any framing that presents monitoring as prevention is overselling it.</p>



<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.11.0/dist/tabler-icons.min.css">
<style>
  :root {
    --surface-0: #ffffff;
    --surface-1: #f5f4f1;
    --surface-2: #ffffff;
    --text-primary: #1a1a18;
    --text-secondary: #6b6a65;
    --text-muted: #97968f;
    --border: #e3e1dc;
    --border-strong: #cfcdc7;
    --bg-accent: #eef2fb;
    --text-accent: #2a5bd7;
    --border-accent: #b8c9f0;
    --bg-danger: #fcefee;
    --text-danger: #b4241c;
    --border-danger: #f0c2be;
    --bg-success: #edf6ef;
    --text-success: #1f6b34;
    --border-success: #bcdcc5;
    --radius: 8px;
  }
  .ai-brand-protection-wrap { max-width: 680px; margin: 40px auto; }
  .sr-only {
    position: absolute; width: 1px; height: 1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
  }
  p { margin: 0; }
</style>
<div class="ai-brand-protection-wrap">
<h2 class="sr-only">A timeline comparison showing that an infringement campaign is assembled in about four hours while a standard takedown path takes roughly 96 hours, and that pre-authorised enforcement compresses this to about 12 hours.</h2>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:2rem">
  <div style="background:var(--surface-1);border-radius:var(--radius);padding:1rem">
    <p style="font-size:13px;color:var(--text-secondary);margin:0 0 6px">Time to generate</p>
    <p style="font-size:24px;font-weight:500;margin:0;">~4h</p>
  </div>
  <div style="background:var(--surface-1);border-radius:var(--radius);padding:1rem">
    <p style="font-size:13px;color:var(--text-secondary);margin:0 0 6px">Time to enforce</p>
    <p style="font-size:24px;font-weight:500;margin:0;">~96h</p>
  </div>
  <div style="background:var(--surface-1);border-radius:var(--radius);padding:1rem">
    <p style="font-size:13px;color:var(--text-secondary);margin:0 0 6px">Asymmetry</p>
    <p style="font-size:24px;font-weight:500;margin:0;color:var(--text-danger)">24×</p>
  </div>
</div>

<div style="background:var(--surface-2);border:0.5px solid var(--border);border-radius:12px;padding:1.25rem;margin-bottom:2rem">

  <div style="display:flex;align-items:center;gap:12px;margin-bottom:14px">
    <div style="width:104px;flex:none;font-size:12px;color:var(--text-secondary)">Attack</div>
    <div style="flex:1;display:flex;height:30px">
      <div style="width:4.17%;background:var(--bg-danger);border:0.5px solid var(--border-danger);border-radius:var(--radius) 0 0 var(--radius)"></div>
      <div style="width:95.83%;border:0.5px solid var(--border-danger);border-left:none;border-radius:0 var(--radius) var(--radius) 0;display:flex;align-items:center;padding-left:10px;font-size:12px;color:var(--text-danger)">Exposure window — already collecting</div>
    </div>
  </div>

  <div style="display:flex;align-items:flex-start;gap:12px;margin-bottom:14px">
    <div style="width:104px;flex:none;font-size:12px;color:var(--text-secondary);padding-top:7px">Standard path</div>
    <div style="flex:1">
      <div style="display:flex;height:30px">
        <div style="width:25%;background:var(--bg-accent);border:0.5px solid var(--border-accent);border-right:none;border-radius:var(--radius) 0 0 var(--radius)"></div>
        <div style="width:16.67%;background:var(--bg-accent);border:0.5px solid var(--border-accent);border-right:none"></div>
        <div style="width:10.42%;background:var(--bg-accent);border:0.5px solid var(--border-accent);border-right:none"></div>
        <div style="width:47.91%;background:var(--bg-accent);border:0.5px solid var(--border-accent);border-radius:0 var(--radius) var(--radius) 0"></div>
      </div>
      <div style="display:flex;margin-top:6px">
        <div style="width:25%;font-size:11px;color:var(--text-secondary)">Identify · <span>24h</span></div>
        <div style="width:16.67%;font-size:11px;color:var(--text-secondary)">Confirm · <span>16h</span></div>
        <div style="width:10.42%;font-size:11px;color:var(--text-secondary)">Draft · <span>10h</span></div>
        <div style="width:47.91%;font-size:11px;color:var(--text-secondary)">Registrar queue · <span>46h</span></div>
      </div>
    </div>
  </div>
  <div style="display:flex;align-items:center;gap:12px">
    <div style="width:104px;flex:none;font-size:12px;color:var(--text-secondary)">Pre-authorised</div>
    <div style="flex:1;display:flex;align-items:center">
      <div style="width:12.5%;height:30px;background:var(--bg-success);border:0.5px solid var(--border-success);border-radius:var(--radius)"></div>
      <div style="padding-left:10px;font-size:12px;color:var(--text-success)">Same steps, no approval wait — <span>12h</span></div>
    </div>
  </div>

  <div style="display:flex;gap:12px;margin-top:16px;padding-top:12px;border-top:0.5px solid var(--border)">
    <div style="width:104px;flex:none"></div>
    <div style="flex:1;display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted);">
      <span>0h</span><span>24h</span><span>48h</span><span>72h</span><span>96h</span>
    </div>
  </div>

</div>

<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:2rem">
  <div style="background:var(--surface-2);border:0.5px solid var(--border);border-radius:12px;padding:1rem 1.25rem">
    <i class="ti ti-user-check" style="font-size:20px;color:var(--text-accent)" aria-hidden="true"></i>
    <p style="font-size:14px;font-weight:500;margin:8px 0 4px">Who authorises</p>
    <p style="font-size:13px;color:var(--text-secondary);margin:0;line-height:1.5">Named role, no legal review</p>
  </div>
  <div style="background:var(--surface-2);border:0.5px solid var(--border);border-radius:12px;padding:1rem 1.25rem">
    <i class="ti ti-category" style="font-size:20px;color:var(--text-accent)" aria-hidden="true"></i>
    <p style="font-size:14px;font-weight:500;margin:8px 0 4px">Which categories</p>
    <p style="font-size:13px;color:var(--text-secondary);margin:0;line-height:1.5">Scoped in advance, not per case</p>
  </div>
  <div style="background:var(--surface-2);border:0.5px solid var(--border);border-radius:12px;padding:1rem 1.25rem">
    <i class="ti ti-adjustments-horizontal" style="font-size:20px;color:var(--text-accent)" aria-hidden="true"></i>
    <p style="font-size:14px;font-weight:500;margin:8px 0 4px">Up to what threshold</p>
    <p style="font-size:13px;color:var(--text-secondary);margin:0;line-height:1.5">Ceiling set before the incident</p>
  </div>
</div>

<div style="background:var(--bg-danger);border-left:2px solid var(--border-danger);border-radius:0;padding:1rem 1.25rem">
  <p style="font-size:13px;font-weight:500;margin:0 0 10px;color:var(--text-danger)">What this does not do</p>
  <div style="display:flex;flex-direction:column;gap:7px">
    <div style="display:flex;gap:8px;align-items:flex-start"><i class="ti ti-x" style="font-size:16px;color:var(--text-danger);flex:none;line-height:1.5" aria-hidden="true"></i><span style="font-size:13px;color:var(--text-danger);line-height:1.5">Prevent the attack from being assembled</span></div>
    <div style="display:flex;gap:8px;align-items:flex-start"><i class="ti ti-x" style="font-size:16px;color:var(--text-danger);flex:none;line-height:1.5" aria-hidden="true"></i><span style="font-size:13px;color:var(--text-danger);line-height:1.5">Recover customers caught before detection</span></div>
    <div style="display:flex;gap:8px;align-items:flex-start"><i class="ti ti-x" style="font-size:16px;color:var(--text-danger);flex:none;line-height:1.5" aria-hidden="true"></i><span style="font-size:13px;color:var(--text-danger);line-height:1.5">Qualify as prevention — it reduces duration only</span></div>
  </div>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Brand Protection Looks Like as a Security Function</h2>



<p class="wp-block-paragraph">The change worth making is less about tools than about where the function sits and what it is measured on.</p>



<p class="wp-block-paragraph">A legal-led brand protection function measures cases filed, notices sent, and domains recovered. Those are outputs of a process designed for a small, high-value caseload. A security-led function measures time to detection and time to removal, treats the infringement queue as a monitoring surface, and accepts that most items will be handled by rule rather than by judgment.</p>



<p class="wp-block-paragraph">That reframing changes a few concrete things:</p>



<ul class="wp-block-list">
<li>Triage criteria get written down, so that the team is not re-deciding priority per case.&nbsp;</li>



<li>Takedown authority gets delegated for defined categories.&nbsp;</li>



<li>Monitoring extends past domains to the surfaces where synthetic content actually appears, including the AI interfaces customers now use as a first stop.&nbsp;</li>



<li>Detection signals get treated as probabilistic inputs to a decision rather than as verdicts.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Detection Can and Cannot Confirm</h2>



<p class="wp-block-paragraph">A few limits are worth stating plainly, because vendor material in this space tends to blur them.</p>



<ul class="wp-block-list">
<li><strong>Deepfake detection is probabilistic and adversarial</strong>. Detectors score likelihood, not truth, and they degrade as generation models improve. A detector that performs well on today&#8217;s outputs is making a claim about today&#8217;s outputs. Human review stays in the loop for anything consequential, and any tool presented as a binary authenticity verdict should be treated with suspicion.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Monitoring coverage is partial by construction</strong>. A monitoring service sees the surfaces it has access to. Closed messaging platforms, private groups, and regional apps outside its coverage are blind spots, and a clean report from a monitoring vendor means nothing was found in the monitored set rather than that nothing exists.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Takedown success rates vary enormously by platform and jurisdiction</strong>, and vendors quoting a single global rate are averaging across conditions that do not resemble each other. The number that matters for a specific brand is the rate on the specific platforms where its audience lives.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading"><strong>What are the main AI brand protection challenges in 2026?</strong></h3>



<p class="wp-block-paragraph">Three that did not previously exist in this form: impersonation produced at machine volume, synthetic content carrying executive or brand likeness on third-party platforms, and AI assistants directing customers to domains the brand does not control. The underlying change is cost, which turns a manageable caseload into a throughput problem.</p>



<h3 class="wp-block-heading"><strong>Can we just register the domains AI models hallucinate?</strong></h3>



<p class="wp-block-paragraph">Not as a strategy. The set of plausible variants is unbounded and regenerates as models change. Defensive registration is worth it for a small number of high-traffic exact-match typos and is not worth treating as coverage.</p>



<h3 class="wp-block-heading"><strong>How do we find out what AI assistants say about our brand?</strong></h3>



<p class="wp-block-paragraph">Query them directly, from a clean session, using the phrasings a customer would use: where to log in, where to get support, where to download the app. Repeat across the assistants your audience actually uses and across several phrasings. This is a manual check that most teams have never run.</p>



<h3 class="wp-block-heading"><strong>Is a deepfake detection tool worth buying?</strong></h3>



<p class="wp-block-paragraph">It depends on what you expect from it. Detectors give a probability, not a verdict, and their performance moves as generation improves. They are useful as a triage input inside a process that includes human review. They are not useful as an authenticity guarantee.</p>



<h3 class="wp-block-heading"><strong>Who should own brand protection now?</strong></h3>



<p class="wp-block-paragraph">Wherever it reports, it needs to operate like a monitoring and response function: measured on time to detection and time to removal, with pre-delegated takedown authority for defined categories. Legal ownership without delegated response authority produces the speed problem described above.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Wrapping Up</h2>



<p class="wp-block-paragraph">The uncomfortable part of this is that none of the three challenges are solved by working harder at the old model. Filing more notices does not close a gap created by generation cost falling to near zero, and buying more domains does not close a gap created by an unbounded variation space.</p>



<p class="wp-block-paragraph">What does change the outcome is response time, and response time is mostly a set of decisions made before anything happens. So the concrete thing to take from this: find out what the assistants your customers use say about your brand today, and find out who in your organization can authorize a takedown at 9 pm on a Friday without a meeting. Those two answers will tell you more about your actual exposure than any threat report will.</p>
<p>The post <a href="https://adtechholding.com/blog/ai-brand-protection-challenges/">AI Brand Protection Challenges: What Changed When Faking a Brand Got Cheap</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Brand Safety in Media Buying: How Careless Buying Damages Brand Equity</title>
		<link>https://adtechholding.com/blog/brand-safety-in-media-buying/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 12:37:09 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2863</guid>

					<description><![CDATA[<p>Media buying gets judged on performance metrics: cost per click, cost per acquisition, conversion rate, return on ad spend, and more. Every one of those numbers is real, but every one of them is incomplete, because each placement also does something the performance dashboard never reports: it either builds brand equity or spends it. That [&#8230;]</p>
<p>The post <a href="https://adtechholding.com/blog/brand-safety-in-media-buying/">Brand Safety in Media Buying: How Careless Buying Damages Brand Equity</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Media buying gets judged on performance metrics: cost per click, cost per acquisition, conversion rate, return on ad spend, and more. Every one of those numbers is real, but every one of them is incomplete, because each placement also does something the performance dashboard never reports: it either builds brand equity or spends it.</p>



<p class="wp-block-paragraph">That second effect used to be an argument, but it is now closer to a measurement. In November 2025, the ANA added Brand Safety and Suitability metrics to its <a href="https://www.ana.net/content/show/id/pr-2025-11-transparency" target="_blank" rel="noreferrer noopener nofollow">Q3 2025 Programmatic Transparency Benchmark</a>, reporting that 99.1% of programmatic spend ran in low-risk environments. That is a genuinely good number, and it also quietly relocates the problem. When almost all inventory clears the safety bar, the damage that remains is happening somewhere the safety bar does not look.</p>



<p class="wp-block-paragraph">This piece covers four buying decisions that cost brand equity without ever showing up as a policy violation: what sits next to the ad, where cheap impressions actually come from, how often the same person sees the same creative, and whether the creative belongs on the surface it landed on.&nbsp;</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Key Takeaways:</strong></h2>



<p class="wp-block-paragraph">Brand safety in media buying is largely governed by campaign configuration: exclusions, frequency rules, inventory selection, and creative routing. Those are controllable inputs.</p>



<ul class="wp-block-list">
<li>Made for Advertising (MFA) inventory is the clearest example of the gap between safe and suitable. The joint trade-group definition notes MFA sites typically show good viewability and low invalid traffic, which means a verification stack can mark them clean while the brand still sits in a low-value context. What defines MFA is the site&#8217;s purpose.</li>
</ul>



<ul class="wp-block-list">
<li>Frequency damage is usually a measurement failure before it is a creative failure. Caps are enforced within the systems that set them, and a user reached through several paths can exceed the intended ceiling without any single system registering it.</li>
</ul>



<ul class="wp-block-list">
<li>Creative mismatch reads as a media quality problem in reporting, which sends teams to fix the wrong layer.</li>
</ul>



<ul class="wp-block-list">
<li>The buyers who avoid most of this are making fewer, tighter inventory decisions and reviewing them on a schedule.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Brand Safety in Media Buying Is a Buying Problem</h2>



<p class="wp-block-paragraph">The phrase ‘brand safety’ carries a legacy meaning: keep the ad away from violence, hate speech, and adjacent categories nobody wants to fund. That layer is now largely automated. Category filters that block obvious unsafe content run by default on most buying platforms, and the ANA benchmark figure above reflects how well that baseline works at scale.</p>



<p class="wp-block-paragraph">What the baseline does not cover is suitability, which is the harder question of whether a specific environment fits a specific brand at a specific moment. The <a href="https://www.brandsafetyinstitute.com/resources/frameworks/brand-safety-floor-suitability" target="_blank" rel="noreferrer noopener nofollow">Brand Safety Institute&#8217;s framework</a> separates the two deliberately: the floor is the universal set of content nobody should advertise against, while suitability is brand-specific and sits above it. A news site covering a disaster is not unsafe, but it may still be the wrong place for a cheerful product launch.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Adjacency: What the Reader Carries From the Page to Your Ad</h2>



<p class="wp-block-paragraph">Readers do not evaluate an ad in isolation –&nbsp;they evaluate it inside whatever they were already feeling when it appeared. An ad served next to a distressing article inherits some of that distress, and the association attaches to the brand rather than to the page. This is why suitability cannot be solved with a single global exclusion list. The same publisher can be the right environment on Tuesday and the wrong one on Wednesday, depending on what is on the page. Keyword-level and topic-level controls exist for exactly this reason, and they are the part of the setup most likely to be configured once at launch and never revisited.&nbsp;</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Open-Web-vs-Walled-Gardens-1024x536.png" alt="AdTech Holding -explains how Open Web vs Walled Gardens shapes data control, ad measurement, and budget strategy." class="wp-image-2731 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Open-Web-vs-Walled-Gardens-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Open-Web-vs-Walled-Gardens-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Open-Web-vs-Walled-Gardens-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Open-Web-vs-Walled-Gardens.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/open-web-vs-walled-gardens-adtech/">Open Web vs. Walled Gardens: Where Is AdTech Headed</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The practical version of the problem is narrower than the theoretical one. Most brands do not need a sophisticated sentiment model. They need someone to decide, before launch, which three or four topics genuinely do not work for this campaign, and then to check quarterly whether that list still matches what the brand is doing. Teams that skip the second half end up with exclusion lists that describe a campaign from two years ago.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">When Price Is the Only Constraint</h2>



<p class="wp-block-paragraph">A bid strategy optimized purely for low cost per thousand impressions will find low cost. The question is what else it finds on the way there.</p>



<p class="wp-block-paragraph">Two things get collapsed here that are worth keeping apart. A low CPM is a price. A low-value environment is a context. They correlate often enough that the industry uses one as a proxy for the other, but they are not the same fact, and treating them as one produces a conclusion that does not hold: that the way out is to pay more. Plenty of inventory clears at a low CPM for reasons that have nothing to do with quality – format, geography, device mix, or simply a shorter supply path with fewer intermediaries taking a margin. Paying a higher CPM into an unconstrained auction buys more expensive drift, not less of it. What creates the drift is that price ends up as the <em>only</em> constraint in the auction. A strategy with a ceiling on cost and a floor on context behaves differently from one with a ceiling on cost alone, at identical CPMs.</p>



<p class="wp-block-paragraph">The clearest illustration of what an unconstrained auction finds is MFA inventory. In September 2023, the ANA, 4A&#8217;s, WFA, and ISBA published a <a href="https://www.ana.net/content/show/id/pr-2023-09-made-for-advertising" target="_blank" rel="noreferrer noopener nofollow">joint definition of Made for Advertising websites</a>: sites built primarily to buy and sell advertising inventory, typically carrying low-quality content and heavy ad density. The detail that matters for buyers is in the same definition. MFA sites generally show high measurability, good viewability, and low levels of invalid traffic, and they usually sit in brand-safe content categories.</p>



<p class="wp-block-paragraph">Read that again from the point of view of a verification dashboard:</p>



<ul class="wp-block-list">
<li>Viewable: yes;</li>



<li>Measurable: yes;</li>



<li>Invalid traffic: low;</li>



<li>Content category: safe.</li>
</ul>



<p class="wp-block-paragraph">Every signal the standard stack checks comes back green, because MFA inventory is engineered to pass those checks. The thing that is wrong with the placement is not any single measured attribute: it’s the environment as a whole, and no individual metric captures it.&nbsp;</p>



<p class="wp-block-paragraph">The good news is that this is getting caught. The ANA&#8217;s Q3 2025 benchmark we mentioned before put MFA exposure at 0.39% of spend, roughly half the previous quarter&#8217;s level, which is a meaningful drop from the double-digit percentages of impressions the earlier ANA work reported. The less comfortable news is why it took a coordinated industry effort with log-level data to find something that every viewability report had already marked as fine. The controllable variable in all of this is not the CPM. It is whether any suitability constraint is competing with the price constraint at the moment of the bid. When nothing is, the auction resolves in one direction, thousands of times per second, and does so correctly by the only rule it was given.</p>



<div class="adtvz-1"><style>.adtvz-1{--at-ink:#001847;--at-body:#3A4A6A;--at-mute:#5A6A8A;--at-faint:#8A99BB;--at-line:#D6E2F5;--at-hair:#EBF2FF;--at-bg:#F5F7FC;--at-tint:#F8FAFE;--at-blue:#0055CC;--at-green:#3A9142;--at-amber:#E07B39;--at-red:#C43030;all:initial;display:block!important;max-width:100%!important;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif!important;color:var(--at-body)!important;background:var(--at-bg)!important;border:1.5px solid var(--at-line)!important;border-radius:12px!important;padding:22px 20px 18px!important;margin:32px 0!important;-webkit-font-smoothing:antialiased}.adtvz-1 *,.adtvz-1 *::before,.adtvz-1 *::after{box-sizing:border-box!important}.adtvz-1 br{display:none!important}.adtvz-1 p:empty{display:none!important}.adtvz-1 p{margin:0!important;padding:0!important}.adtvz-1 .at-eyebrow{margin:0 0 6px!important;font-size:10px!important;font-weight:700!important;letter-spacing:2px!important;color:var(--at-blue)!important;text-transform:uppercase!important;line-height:1.3!important}.adtvz-1 .at-title{margin:0!important;padding:0!important;border:0!important;font-size:18px!important;line-height:1.25!important;font-weight:800!important;color:var(--at-ink)!important;font-family:inherit!important}.adtvz-1 .at-sub{margin:6px 0 18px!important;font-size:12.5px!important;line-height:1.6!important;color:var(--at-mute)!important;font-weight:400!important;max-width:620px!important}.adtvz-1 .at-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch!important;max-width:100%!important;border:1.5px solid var(--at-line)!important;border-radius:12px!important;background:#fff!important}.adtvz-1 table{width:100%!important;min-width:640px!important;border-collapse:collapse!important;border-spacing:0!important;margin:0!important;background:transparent!important;border:0!important;font-size:12px!important;table-layout:fixed!important}.adtvz-1 col.at-c1{width:19%}.adtvz-1 col.at-c2{width:26%}.adtvz-1 col.at-c3{width:27%}.adtvz-1 col.at-c4{width:28%}.adtvz-1 thead th{padding:11px 14px!important;font-size:10px!important;font-weight:700!important;letter-spacing:.09em!important;text-transform:uppercase!important;text-align:left!important;color:var(--at-mute)!important;background:#EEF2FA!important;border:0!important;border-bottom:2px solid var(--at-line)!important;vertical-align:bottom!important;font-family:inherit!important}.adtvz-1 thead th:not(:last-child){border-right:1px solid var(--at-line)!important}.adtvz-1 thead th.at-h1{border-top:3px solid var(--at-faint)!important}.adtvz-1 thead th.at-h2{border-top:3px solid var(--at-green)!important}.adtvz-1 thead th.at-h3{border-top:3px solid var(--at-amber)!important}.adtvz-1 thead th.at-h4{border-top:3px solid var(--at-red)!important}.adtvz-1 tbody tr{border-bottom:1px solid var(--at-line)!important;background:transparent!important}.adtvz-1 tbody tr:last-child{border-bottom:0!important}.adtvz-1 tbody td{padding:14px!important;vertical-align:top!important;font-size:12px!important;line-height:1.6!important;color:var(--at-body)!important;border:0!important;font-family:inherit!important}.adtvz-1 tbody td:not(:last-child){border-right:1px solid var(--at-hair)!important}.adtvz-1 .at-sig{background:var(--at-tint)!important}.adtvz-1 .at-ico{width:28px!important;height:28px!important;border-radius:8px!important;background:#EBF2FF!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 0 8px!important}.adtvz-1 .at-ico svg{width:15px!important;height:15px!important;display:block!important;stroke:#0055CC!important;fill:none!important;stroke-width:1.7!important;stroke-linecap:round!important;stroke-linejoin:round!important}.adtvz-1 .at-name{font-size:12px!important;font-weight:800!important;color:var(--at-ink)!important;line-height:1.35!important}.adtvz-1 .at-yes{background:#F7FCF7!important;color:#2A5E30!important}.adtvz-1 .at-no{background:#FFFBF6!important;color:#7A4A12!important}.adtvz-1 .at-fail{background:#FFF8F8!important;color:#8F2222!important}.adtvz-1 .at-chip{display:inline-flex!important;align-items:center!important;gap:5px!important;margin:8px 0 0!important;padding:2px 9px!important;border-radius:20px!important;font-size:10px!important;font-weight:700!important;letter-spacing:.04em!important;line-height:1.7!important}.adtvz-1 .at-chip i{width:5px!important;height:5px!important;border-radius:50%!important;background:currentColor!important;display:block!important;font-style:normal!important}.adtvz-1 .at-chip-auto{background:#EBF2FF!important;color:#0055CC!important}.adtvz-1 .at-chip-manual{background:#FFF4F4!important;color:#A32020!important}.adtvz-1 tr.at-key td{background:#F4F8FF!important}.adtvz-1 tr.at-key td.at-sig{background:#EBF2FF!important}.adtvz-1 tr.at-key .at-name{color:#0055CC!important}.adtvz-1 tr.at-key .at-ico{background:#D6E2F5!important}.adtvz-1 tr.at-key .at-ico svg{stroke:#00368A!important}.adtvz-1 .at-foot{display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:16px!important;margin:14px 0 0!important;padding:12px 2px 0!important;border-top:1px solid var(--at-line)!important}.adtvz-1 .at-leg{display:flex!important;align-items:center!important;gap:6px!important;font-size:11px!important;line-height:1.4!important;color:var(--at-faint)!important}.adtvz-1 .at-bar{width:12px!important;height:3px!important;border-radius:2px!important;display:block!important;flex:0 0 auto!important}.adtvz-1 .at-src{margin-left:auto!important;font-size:10px!important;color:#A8B6D0!important;letter-spacing:.05em!important}.adtvz-1 .at-hint{display:none!important}@media (max-width:700px){.adtvz-1{padding:18px 14px 14px!important}.adtvz-1 .at-hint{display:block!important;margin:0 0 8px!important;font-size:11px!important;color:var(--at-faint)!important}.adtvz-1 .at-src{margin-left:0!important}}</style><p class="at-eyebrow">AdTech Holding</p><p class="at-title">Safe Is Not the Same as Suitable</p><p class="at-sub">Why every standard verification signal can return clean on inventory that still costs brand equity</p><p class="at-hint">Scroll the table sideways to see all four columns.</p><div class="at-scroll"><table><colgroup><col class="at-c1"><col class="at-c2"><col class="at-c3"><col class="at-c4"></colgroup><thead><tr><th class="at-h1" scope="col">Signal Checked</th><th class="at-h2" scope="col">What It Confirms</th><th class="at-h3" scope="col">What It Does Not Confirm</th><th class="at-h4" scope="col">Where It Fails</th></tr></thead><tbody><tr><td class="at-sig"><div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M2 12s3.6-6.5 10-6.5S22 12 22 12s-3.6 6.5-10 6.5S2 12 2 12Z"></path><circle cx="12" cy="12" r="2.6"></circle></svg></div><div class="at-name">Viewability</div><span class="at-chip at-chip-auto"><i></i>Automated</span></td><td class="at-yes">The ad was rendered in a viewable position on the page.</td><td class="at-no">Whether anyone was actually paying attention to it.</td><td class="at-fail">MFA pages with stacked ad units score well while attention per impression stays low.</td></tr><tr><td class="at-sig"><div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="4" y="8" width="16" height="12" rx="3"></rect><path d="M12 4.5V8"></path><circle cx="12" cy="3.2" r="1.3"></circle><path d="M9 13v1.6M15 13v1.6"></path></svg></div><div class="at-name">Invalid traffic rate</div><span class="at-chip at-chip-auto"><i></i>Automated</span></td><td class="at-yes">The traffic was human rather than bot-generated.</td><td class="at-no">Whether the page earned that visit or the site owner bought it to resell.</td><td class="at-fail">An MFA operator buys its audience and resells the impressions, so the visitors are genuine and the rate stays clean by definition.</td></tr><tr><td class="at-sig"><div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M3 7.5a2 2 0 0 1 2-2h3.6l1.9 2.3H19a2 2 0 0 1 2 2v8.7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z"></path><path d="M3 11.4h18"></path></svg></div><div class="at-name">Content category</div><span class="at-chip at-chip-auto"><i></i>Automated</span></td><td class="at-yes">The page does not sit in a blocked or unsafe category.</td><td class="at-no">Whether the page carries any editorial value at all.</td><td class="at-fail">Auto-generated content farms classify as safe because nothing on them is unsafe.</td></tr><tr class="at-key"><td class="at-sig"><div class="at-ico"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8.2"></circle><circle cx="12" cy="12" r="3.6"></circle><path d="M12 1.6v2.6M12 19.8v2.6M1.6 12h2.6M19.8 12h2.6"></path></svg></div><div class="at-name">Brand suitability</div><span class="at-chip at-chip-manual"><i></i>Manual setup</span></td><td class="at-yes">Nothing, unless someone configured it for this brand.</td><td class="at-no">The campaign-specific fit, which no default setting defines.</td><td class="at-fail">This is the layer that is usually left at default, which is why the gap survives a green dashboard.</td></tr></tbody></table></div><div class="at-foot"><span class="at-leg"><span class="at-bar" style="background:#3A9142"></span>Confirmed</span><span class="at-leg"><span class="at-bar" style="background:#E07B39"></span>Out of scope</span><span class="at-leg"><span class="at-bar" style="background:#C43030"></span>Blind spot</span><span class="at-src">MFA characteristics per the ANA / 4A&#8217;s / WFA / ISBA joint definition</span></div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Frequency: When Repetition Stops Building Recognition</h2>



<p class="wp-block-paragraph">Frequency is the scenario where the failure is most visible to the audience and least visible in reporting.</p>



<p class="wp-block-paragraph">The mechanism is well understood. Repeated exposure builds recognition up to a point, then continues past it into irritation, and irritation attaches to the brand rather than to the placement. Where teams go wrong is assuming the cap they set is the ceiling the user experiences.</p>



<p class="wp-block-paragraph">A frequency cap is enforced inside the system that holds it. If a campaign runs through more than one buying path, each path enforces its own cap against its own view of the user. The same person reached through two paths can see the creative twice as often as intended, and neither system reports an error, because neither system exceeded its own limit. Identity fragmentation makes this worse rather than better: the less reliably a user is recognized across environments, the more likely they are to be counted as several different people, each with a fresh allowance.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Creative Mismatch: The Failure That Looks Like a Media Problem</h2>



<p class="wp-block-paragraph">The fourth scenario is the one most likely to be misdiagnosed. A creative built for one surface and served on another performs badly, and the reporting attributes the result to the inventory.</p>



<p class="wp-block-paragraph">A message written for a considered, long-attention environment will underperform in a fast, high-turnover one. It is a statement about fit, and the IAB&#8217;s <a href="https://www.iab.com/guidelines/attention/" target="_blank" rel="noreferrer noopener nofollow">attention measurement guidelines</a> exist because the industry needed a common vocabulary for exactly this distinction rather than treating every impression as equivalent. The brand cost is subtle. A creative that lands wrong does not just fail to convert but it teaches the viewer something slightly off about what the brand is, and it does so at whatever scale the campaign is running. Then the team sees weak numbers, blames the placement, adds the source to a blocklist, and repeats the mismatch somewhere else.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-1024x536.png" alt="AdTech Holding guide to cyber threat intelligence in AdTech product lifecycles." class="wp-image-2698 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/cyber-threat-intelligence/">Cyber Threat Intelligence in the AdTech Product Lifecycle</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">What makes this hard to catch is that the fix and the misdiagnosis produce similar short-term data. Cutting the source improves the average. So does fixing the creative. Only one of them is repeatable.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Where the Controls Actually Sit</h2>



<p class="wp-block-paragraph">Two buying models are in play here, and mixing up their control surfaces is a common source of wasted effort.</p>



<p class="wp-block-paragraph">On transparent programmatic paths, where a buyer sees individual domains and apps, the controls are inclusion lists, domain and app exclusions, supply path choices, and pre-bid category filtering. </p>



<p class="wp-block-paragraph">On performance networks, which sell against zones and traffic segments rather than named placements, the equivalent controls are zone and subzone exclusions, vertical and format selection, audience tier settings, and the network&#8217;s own quality framework. Advice written for one model does not transfer cleanly to the other, and a buyer applying transparent-programmatic tactics on a network path will conclude, incorrectly, that the controls do not exist.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-1024x536.png" alt="adtech-security-for-brands" class="wp-image-2714 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/ad-tech-security-brands-advertisers/" target="_blank" rel="noreferrer noopener">Ad Tech Security for Brands and Advertisers: A Practical Checklist<br></a><br></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">There is also a layer of control that sits upstream of both, and buyers tend to treat it as invisible. By the time inventory reaches a bid request, the exchange or network has already made decisions about it: which publishers were admitted and what they had to document, whether the seller declares itself in sellers.json so the path can be audited against the publisher&#8217;s ads.txt, what monitoring runs post-onboarding, and what threshold removes a zone or a domain rather than flagging it. </p>



<p class="wp-block-paragraph">On a network path, the artifacts are different rather than absent: what a publisher had to document to be admitted, whether the network is itself the accountable seller of record rather than one hop in a chain, and what behaviour pulls a zone out of rotation without a buyer having to ask. Those are answerable questions, and a supplier who cannot answer them is telling you something either way.</p>



<p class="wp-block-paragraph">Those decisions determine the shape of the pool a buyer&#8217;s own exclusion list is filtering. The list is the last filter, and it cannot recover quality that was never admitted.</p>



<p class="wp-block-paragraph">What holds across both is the shape of the routine:</p>



<ul class="wp-block-list">
<li>Define suitability before launch, in writing, at the level of three or four specific topics or environments that do not work for this campaign;</li>



<li>Set frequency intent as a number the team agrees on, then verify what is actually being enforced rather than what was requested;</li>



<li>Consolidate buying paths where the same audience is reachable through several, because every additional path is another cap that enforces independently;</li>



<li>Treat the supply path as part of the configuration: an undeclared or unnecessarily long path is a quality signal before any placement-level data arrives;</li>



<li>Review exclusions on a fixed schedule instead of after an incident;</li>



<li>Route creative by surface, and keep at least one variant per major surface type rather than one universal asset.</li>
</ul>



<p class="wp-block-paragraph">None of that is expensive. All of it is the kind of work that gets postponed when a campaign is performing acceptably.</p>



<div class="adtvz-2"><style>.adtvz-2{--at-ink:#001847;--at-body:#3A4A6A;--at-mute:#5A6A8A;--at-faint:#8A99BB;--at-line:#D6E2F5;--at-bg:#F5F7FC;--at-blue:#0055CC;--at-green:#3A9142;--at-red:#C43030;all:initial;display:block!important;max-width:100%!important;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif!important;color:var(--at-body)!important;background:var(--at-bg)!important;border:1.5px solid var(--at-line)!important;border-radius:12px!important;padding:22px 20px 18px!important;margin:32px 0!important;-webkit-font-smoothing:antialiased}.adtvz-2 *,.adtvz-2 *::before,.adtvz-2 *::after{box-sizing:border-box!important}.adtvz-2 br{display:none!important}.adtvz-2 p:empty{display:none!important}.adtvz-2 p{margin:0!important;padding:0!important}.adtvz-2 .at-eyebrow{margin:0 0 6px!important;font-size:10px!important;font-weight:700!important;letter-spacing:2px!important;color:var(--at-blue)!important;text-transform:uppercase!important;line-height:1.3!important}.adtvz-2 .at-title{margin:0!important;padding:0!important;border:0!important;font-size:18px!important;line-height:1.25!important;font-weight:800!important;color:var(--at-ink)!important;font-family:inherit!important}.adtvz-2 .at-sub{margin:6px 0 18px!important;font-size:12.5px!important;line-height:1.6!important;color:var(--at-mute)!important;font-weight:400!important;max-width:620px!important}.adtvz-2 .at-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch!important;max-width:100%!important;border:1.5px solid var(--at-line)!important;border-radius:12px!important;background:#fff!important;padding:16px 14px 12px!important}.adtvz-2 .at-svg{display:block!important;width:100%!important;min-width:880px!important;height:auto!important}.adtvz-2 .at-foot{display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:16px!important;margin:14px 0 0!important;padding:12px 2px 0!important;border-top:1px solid var(--at-line)!important}.adtvz-2 .at-leg{display:flex!important;align-items:center!important;gap:6px!important;font-size:11px!important;line-height:1.4!important;color:var(--at-faint)!important}.adtvz-2 .at-bar{width:12px!important;height:3px!important;border-radius:2px!important;display:block!important;flex:0 0 auto!important}.adtvz-2 .at-src{margin-left:auto!important;font-size:10px!important;color:#A8B6D0!important;letter-spacing:.05em!important}.adtvz-2 .at-hint{display:none!important}@media (max-width:760px){.adtvz-2{padding:18px 14px 14px!important}.adtvz-2 .at-hint{display:block!important;margin:0 0 8px!important;font-size:11px!important;color:var(--at-faint)!important}.adtvz-2 .at-src{margin-left:0!important}}</style><p class="at-eyebrow">AdTech Holding</p><p class="at-title">How an Unconstrained Bid Strategy Drifts Toward Low-Value Inventory</p><p class="at-sub">The dashboard stays green at every step, which is what keeps the loop running</p><p class="at-hint">Scroll sideways to follow the full sequence.</p><div class="at-scroll"><svg class="at-svg" viewBox="0 0 1020 306" role="img" xmlns="http://www.w3.org/2000/svg" aria-labelledby="adt2t adt2d" focusable="false"><title id="adt2t">How an unconstrained bid strategy drifts toward low-value inventory</title><desc id="adt2d">A five-step sequence. Bidding on price alone, with no suitability floor, leads to the cheapest inventory that clears every verification check, which concentrates in high-density low-editorial environments, which still reports as viewable, human and brand-safe, while brand equity cost accrues unmeasured. A feedback arrow runs from the green dashboard step back to the bidding step.</desc><defs><marker id="adt2-ar" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="6.5" markerHeight="6.5" orient="auto-start-reverse"><path d="M0 0.8 L9 5 L0 9.2 Z" fill="#8A99BB"></path></marker><marker id="adt2-arr" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0.8 L9 5 L0 9.2 Z" fill="#C43030"></path></marker></defs><g font-family="'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif"><rect x="10" y="10" width="176" height="112" rx="10" fill="#FAFCFF" stroke="#D6E2F5" stroke-width="1.5"></rect><rect x="22" y="22" width="23" height="16" rx="4" fill="#EBF2FF"></rect><text x="33.5" y="33.5" font-size="9.5" font-weight="700" fill="#0055CC" text-anchor="middle" letter-spacing="0.04em">01</text><text x="22" y="57" font-size="11.5" font-weight="800" fill="#001847">Price-only bidding</text><text x="22" y="75" font-size="10" fill="#3A4A6A">Campaign optimizes on cost</text><text x="22" y="89" font-size="10" fill="#3A4A6A">alone, with no suitability</text><text x="22" y="103" font-size="10" fill="#3A4A6A">floor in the auction.</text><line x1="192" y1="66" x2="210" y2="66" stroke="#8A99BB" stroke-width="1.5" marker-end="url(#adt2-ar)"></line><rect x="216" y="10" width="176" height="112" rx="10" fill="#FAFCFF" stroke="#D6E2F5" stroke-width="1.5"></rect><rect x="228" y="22" width="23" height="16" rx="4" fill="#EBF2FF"></rect><text x="239.5" y="33.5" font-size="9.5" font-weight="700" fill="#0055CC" text-anchor="middle" letter-spacing="0.04em">02</text><text x="228" y="57" font-size="11.5" font-weight="800" fill="#001847">Cheapest passing fill</text><text x="228" y="75" font-size="10" fill="#3A4A6A">Algorithm finds inventory</text><text x="228" y="89" font-size="10" fill="#3A4A6A">clearing every standard</text><text x="228" y="103" font-size="10" fill="#3A4A6A">check at the lowest price.</text><line x1="398" y1="66" x2="416" y2="66" stroke="#8A99BB" stroke-width="1.5" marker-end="url(#adt2-ar)"></line><rect x="422" y="10" width="176" height="112" rx="10" fill="#FAFCFF" stroke="#D6E2F5" stroke-width="1.5"></rect><rect x="434" y="22" width="23" height="16" rx="4" fill="#EBF2FF"></rect><text x="445.5" y="33.5" font-size="9.5" font-weight="700" fill="#0055CC" text-anchor="middle" letter-spacing="0.04em">03</text><text x="434" y="57" font-size="11.5" font-weight="800" fill="#001847">Low-editorial drift</text><text x="434" y="75" font-size="10" fill="#3A4A6A">That supply concentrates in</text><text x="434" y="89" font-size="10" fill="#3A4A6A">high-density, low-editorial</text><text x="434" y="103" font-size="10" fill="#3A4A6A">environments.</text><line x1="604" y1="66" x2="622" y2="66" stroke="#8A99BB" stroke-width="1.5" marker-end="url(#adt2-ar)"></line><rect x="628" y="10" width="176" height="112" rx="10" fill="#F4FBF4" stroke="#A9D6AE" stroke-width="1.6"></rect><rect x="640" y="22" width="23" height="16" rx="4" fill="#DDF0DD"></rect><text x="651.5" y="33.5" font-size="9.5" font-weight="700" fill="#2A5E30" text-anchor="middle" letter-spacing="0.04em">04</text><text x="640" y="57" font-size="11.5" font-weight="800" fill="#2A5E30">Dashboard reads green</text><text x="640" y="75" font-size="10" fill="#31563A">Viewable, human, brand-safe</text><text x="640" y="89" font-size="10" fill="#31563A">category. Nothing in the</text><text x="640" y="103" font-size="10" fill="#31563A">report looks wrong.</text><line x1="810" y1="66" x2="828" y2="66" stroke="#8A99BB" stroke-width="1.5" marker-end="url(#adt2-ar)"></line><rect x="834" y="10" width="176" height="112" rx="10" fill="#FFF8F8" stroke="#F5BFBF" stroke-width="1.6"></rect><rect x="846" y="22" width="23" height="16" rx="4" fill="#FBDCDC"></rect><text x="857.5" y="33.5" font-size="9.5" font-weight="700" fill="#A32020" text-anchor="middle" letter-spacing="0.04em">05</text><text x="846" y="57" font-size="11.5" font-weight="800" fill="#A32020">Unmeasured equity cost</text><text x="846" y="75" font-size="10" fill="#8F2222">Brand equity is spent, and</text><text x="846" y="89" font-size="10" fill="#8F2222">no metric in the stack</text><text x="846" y="103" font-size="10" fill="#8F2222">reports it.</text><path d="M716 122 L716 196 Q716 214 698 214 L116 214 Q98 214 98 196 L98 138" fill="none" stroke="#C43030" stroke-width="2.4" stroke-linecap="round" marker-end="url(#adt2-arr)"></path><rect x="286" y="200" width="242" height="28" rx="14" fill="#FFF4F4" stroke="#F5BFBF" stroke-width="1.2"></rect><text x="407" y="218.5" font-size="11" font-weight="800" fill="#A32020" text-anchor="middle">The green dashboard reinforces the bid</text><text x="407" y="252" font-size="10.5" fill="#8A99BB" text-anchor="middle">Nothing in the reporting loop ever contradicts the strategy that created the drift,</text><text x="407" y="268" font-size="10.5" fill="#8A99BB" text-anchor="middle">so the campaign keeps buying more of the same inventory.</text></g></svg></div><div class="at-foot"><span class="at-leg"><span class="at-bar" style="background:#8A99BB"></span>Buying sequence</span><span class="at-leg"><span class="at-bar" style="background:#3A9142"></span>Reported as clean</span><span class="at-leg"><span class="at-bar" style="background:#C43030"></span>Unreported cost and feedback loop</span><span class="at-src">Verification signals per the ANA / 4A&#8217;s / WFA / ISBA joint MFA definition</span></div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading"><strong>What does brand safety mean in media buying specifically?</strong></h3>



<p class="wp-block-paragraph">It covers two layers. The floor is the universal exclusion set: content categories no advertiser should fund, which most platforms filter by default. Suitability is the brand-specific layer above it, covering environments that are permitted but wrong for a particular campaign, product, or moment.</p>



<h3 class="wp-block-heading"><strong>How do I actually tell MFA inventory apart from cheap inventory?</strong></h3>



<p class="wp-block-paragraph">By intent. An MFA site exists in order to arbitrage ad inventory; the content is there to justify the page. Heavy ad density and low prices are things MFA sites usually have, but they are not what makes a site MFA – the same two symptoms describe a great deal of legitimate supply, including free-to-read publishers, mobile games, and utility apps that are entirely reasonable environments for most brands. A screen that flags density or CPM alone will flag all of them and still miss a well-built MFA site. The question that separates the two is simpler than most detection heuristics: if you removed the advertising, would there be any reason for this page to exist? For a game or a utility app, obviously yes. For MFA, there is nothing underneath.</p>



<h3 class="wp-block-heading"><strong>How do I know if frequency is hurting my campaign?</strong></h3>



<p class="wp-block-paragraph">Look for creative performance decaying faster than impression volume explains, alongside rising cost per action on a stable audience. Frequency reports from a single buying path will not show the problem if the same user is being reached through more than one path.</p>



<h3 class="wp-block-heading"><strong>Can verification vendors solve this for me?</strong></h3>



<p class="wp-block-paragraph">They can confirm what they measure, which is a real and necessary layer. They cannot define suitability for your brand, and they do not report on creative-to-surface fit. Those decisions stay with the buying team.</p>



<h3 class="wp-block-heading"><strong>Does this apply differently on ad networks versus programmatic?</strong></h3>



<p class="wp-block-paragraph">The principles are identical; the control surfaces differ. Networks give you zone, subzone, vertical, format, and audience tier controls plus their published quality framework. Transparent programmatic paths give you domain and app level lists and supply path choices. Use the controls the model actually exposes rather than the ones an article assumed you had.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Wrapping Up</h2>



<p class="wp-block-paragraph">The useful reframe is this: every campaign has a brand safety configuration, including the campaigns where nobody configured one. Defaults are a decision. A campaign optimizing purely on cost has decided that price outranks context, and it will act on that decision thousands of times per second without asking again.</p>



<p class="wp-block-paragraph">So the question worth taking into your next campaign review is not whether your verification reports are clean. They probably are. It is narrower and more uncomfortable: which three environments would genuinely embarrass this brand, are they actually excluded in the platform right now, and when did someone last open that list and read it? Most teams cannot answer the third part, and that gap is where the equity goes.</p>
<p>The post <a href="https://adtechholding.com/blog/brand-safety-in-media-buying/">Brand Safety in Media Buying: How Careless Buying Damages Brand Equity</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Attention Metrics in Advertising: Hype or the Future of Measurement?</title>
		<link>https://adtechholding.com/blog/attention-metrics-advertising-measurement/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 09:41:42 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Tracking]]></category>
		<category><![CDATA[User Behavior]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2802</guid>

					<description><![CDATA[<p>What if your ad is “viewable,” but nobody actually notices it? This article explains attention metrics, how they go beyond viewability, and when they deserve a place in your measurement stack.</p>
<p>The post <a href="https://adtechholding.com/blog/attention-metrics-advertising-measurement/">Attention Metrics in Advertising: Hype or the Future of Measurement?</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The <a href="https://www.iab.com/news/viewability-has-arrived-what-you-need-to-know-to-see-through-this-sea-change/" target="_blank" rel="noreferrer noopener nofollow">IAB viewability standard</a> has been in place since 2014: an ad counts as viewable if 50% of its pixels are on screen for at least one second (two seconds for video). At the time, this was a meaningful step up from raw impression counts. It at least filtered out ads loaded below the fold that no one scrolled to.</p>



<p class="wp-block-paragraph">The problem is that viewability became a floor, and the industry started treating it as a ceiling. A viewable impression in a fast-scrolling social feed, with the sound off and three other content pieces competing for attention, is not the same as a viewable impression on a high-quality editorial page where someone is reading. Both count as &#8220;viewable&#8221; under the standard.</p>



<p class="wp-block-paragraph">From a buying perspective, what teams see in practice is campaigns hitting 70-80% viewability while brand recall numbers stay flat. The metric confirmed delivery. It said nothing about whether the ad actually landed.</p>



<p class="wp-block-paragraph">That gap is what attention metrics are designed to close.</p>





<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Key Takeaways</h3>



<ul class="wp-block-list">
<li>Viewability tells you an ad could have been seen. Attention metrics try to measure whether it actually was.</li>



<li>IAB and the Media Rating Council (MRC) released formal Attention Measurement Guidelines in November 2025, the first industry-wide standard for this space.</li>



<li>Those guidelines define attention as a complementary signal, not a replacement for CTR, viewability, or conversion metrics.</li>



<li>For brand campaigns, attention data improves the prediction of recall and lift. For performance campaigns, CTR and CPA remain the right primary signals.</li>



<li>The biggest remaining challenge is vendor fragmentation: attention scores are not yet reliably comparable across measurement providers.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Attention Metrics Actually Measure</h2>



<p class="wp-block-paragraph">Attention metrics shift the question from &#8220;was the ad on screen?&#8221; to &#8220;did someone likely notice it?&#8221;</p>



<p class="wp-block-paragraph">The signals that feed into attention measurement vary by vendor and method, but the core categories are:</p>



<ul class="wp-block-list">
<li><strong>Active dwell time:</strong> How long the ad was in genuine view, not just technically on-screen. An ad scrolled past in 200 milliseconds is not the same as one held in view for 8 seconds.</li>



<li><strong>Audibility signals:</strong> For video, whether the sound was on and at what level.</li>



<li><strong>Screen position and competition:</strong> Whether the ad was placed where users look, or buried under other elements.</li>



<li><strong>Interaction signals:</strong> Hover behavior, cursor proximity, or scroll deceleration near the ad unit.</li>



<li><strong>Eye-tracking data:</strong> In panel-based measurement, the user&#8217;s gaze actually fell on the page.</li>
</ul>



<p class="wp-block-paragraph">No single signal is sufficient on its own. The vendors building attention products (Adelaide, IAS, DoubleVerify, Lumen Research, among others) combine proxy signals from publisher environments with panel-based calibration data to produce an attention score. The quality of the calibration and the transparency of the methodology differ considerably by provider.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630"><em>The table below compares what each metric actually covers and when to use it as a primary signal.</em></p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Metric</strong></td><td><strong>What it measures</strong></td><td><strong>What it predicts</strong></td><td><strong>Known blind spots</strong></td></tr><tr><td>Viewability</td><td>Opportunity to see (50% pixels, 1 sec)</td><td>Delivery compliance</td><td>No signal on engagement quality</td></tr><tr><td>Attention</td><td>Likelihood of active notice (dwell time, audibility, gaze)</td><td>Brand recall and awareness lift</td><td>Vendor inconsistency; no direct outcome signal</td></tr><tr><td>CTR</td><td>Immediate click-through behavior</td><td>Direct response and engagement</td><td>Misses brand impact entirely; biased toward bottom-funnel formats</td></tr></tbody></table></figure>



<p class="has-small-font-size wp-block-paragraph"><em>Table: Viewability vs. Attention vs. CTR</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Evidence: What the Research Shows</h2>



<p class="wp-block-paragraph">The case for attention metrics is stronger than most new measurement categories can offer at this stage.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2023/01/adtech-user-behavior-banner-1024x536.png" alt="adtech-user-behavior-banner" class="wp-image-554 size-full" srcset="https://adtechholding.com/wp-content/uploads/2023/01/adtech-user-behavior-banner-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2023/01/adtech-user-behavior-banner-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2023/01/adtech-user-behavior-banner-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2023/01/adtech-user-behavior-banner.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/predicting-user-behavior/">Predicting User Behavior: Challenges and Opportunities</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><a href="https://ebiquity.com/research/maximising-profit-through-attention-new-insights-for-media-leaders/?ki-cf-botcl=1" target="_blank" rel="noreferrer noopener nofollow">A 2024 study by Lumen Research and Ebiquity</a> covering six major media types found a near-perfect correlation between attentive minutes per thousand impressions and incremental profit across those channels. DoubleVerify reported in its annual <a href="https://doubleverify.com/company/newsroom/doubleverifys-8th-annual-global-insights-report-highlights-the-rising-importance-of-attention-metrics" target="_blank" rel="noreferrer noopener nofollow">Global Insights Report</a> that adoption of its DV Authentic Attention tripled in adoption over the past yeartripled year-over-year among its advertiser base. Adelaide, one of the leading attention measurement vendors, <a href="https://www.adelaidemetrics.com/blog/adelaide-launches-2025-outcomes-guide-collection-of-case-studies-demonstrates-average-41-upper-funnel-and-55-lower-funnel-lift-from-attention-metrics" target="_blank" rel="noreferrer noopener nofollow">reports that campaigns optimized</a> toward attention signals delivered an average of 41% higher brand lift and 55% improvement in lower-funnel outcomes compared to viewability-optimized campaigns. These are vendor-reported figures and should be treated as directional benchmarks, not as independently verified numbers.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The directional finding across multiple independent studies is consistent: attention data predicts brand recall and awareness better than viewability alone. The finding for direct-response performance campaigns is less settled. Research mostly shows attention&#8217;s strength in brand and awareness contexts, where there is no direct behavioral signal to rely on.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">How Attention Gets Measured in Practice</h2>



<p class="wp-block-paragraph">There are four main approaches, and they are not interchangeable.</p>



<p class="wp-block-paragraph">1. <strong>Panel-based eye-tracking</strong> is the most direct: recruit participants, use eye-tracking technology, and observe exactly where the gaze falls. Accurate, but expensive and hard to scale. Results represent a sample, not your actual campaign audience.</p>



<p class="wp-block-paragraph">2. <strong>Proxy signal models</strong> use publisher data (viewability signals, audio state, scroll depth, cursor proximity) to estimate attention without direct observation. These scale across the open web but depend on model quality and cannot be directly validated against what any individual user actually noticed.</p>



<p class="wp-block-paragraph">3. <strong>Physiological measurement</strong> (biometrics, galvanic skin response, facial coding) is used in research contexts, mostly for creative testing and format evaluation. It is not a live campaign measurement tool.</p>



<p class="wp-block-paragraph">4. <strong>Survey-based methods</strong> measure recall and recognition after exposure. Useful for brand impact studies, but introduces a gap between the moment of exposure and the moment of measurement.</p>



<p class="wp-block-paragraph">Most attention products available in programmatic environments today use proxy signal models, often calibrated against panel data. That calibration gap matters when you are comparing scores across vendors or making buy decisions based on attention scores from a source you have not validated.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/adtech-myths-2026/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/adtech-myths-on-advertising-1024x536.png" alt="5 AdTech myths researched and explained for buyers and publishers." class="wp-image-2723 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/adtech-myths-on-advertising-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-myths-on-advertising-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-myths-on-advertising-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-myths-on-advertising.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-myths-2026/" target="_blank" rel="noreferrer noopener">AdTech Myths That Still Exist in 2026</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The IAB/MRC Standards Moment: November 2025</h2>



<p class="wp-block-paragraph">For most of the attention measurement&#8217;s short history, there was no standard. Each vendor defined attention differently, used different signals, and reported scores that could not be meaningfully compared.</p>



<p class="wp-block-paragraph">That changed, at least partially, in November 2025 when the IAB and the Media Rating Council published the <a href="https://www.iab.com/guidelines/attention/" target="_blank" rel="noreferrer noopener nofollow">Attention Measurement Guidelines</a>, developed with input from more than 200 experts across brands, agencies, publishers, and measurement companies. The guidelines define core terminology, methodological requirements, and disclosure expectations across four measurement approaches. They also form the basis for MRC accreditation audits of attention measurement services.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">This is a meaningful step. It does not eliminate vendor fragmentation overnight, but it gives buyers a framework to evaluate providers against shared criteria rather than comparing proprietary systems with no common reference point.</p>



<p class="wp-block-paragraph">The guidelines also include a clarification that gets lost in much of the industry coverage: attention is explicitly positioned as a complementary signal, not a replacement for delivery or outcome metrics. The IAB/MRC framing is careful here: attention helps you understand whether an exposure likely translated into engagement, but it is not an outcome measure on its own.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Where Attention Metrics Fall Short</h2>



<p class="wp-block-paragraph">Any honest reading of the space has to include the limitations, and they are real.</p>



<ul class="wp-block-list">
<li><strong>Measurement inconsistency across vendors is still a problem. </strong>Even with the November 2025 guidelines in place, different vendors produce different scores for the same inventory. Until MRC accreditation is widely adopted and buyers can evaluate providers against the same criteria, attention data is most reliable when used within a single vendor&#8217;s system over time.</li>



<li><strong>Format coverage is uneven. </strong>Attention measurement for display and video is relatively mature. For audio, digital out-of-home, and connected TV, the methods are less developed, and the calibration data is thinner. A mixed-media buy means accepting that some channels are measured well and others are not.</li>



<li><strong>Panel data does not represent your audience. </strong>Panel sizes are in the thousands, not millions. The calibration is useful, but it is a model of attention behavior, not a direct measurement of your specific audience on your specific placement.</li>



<li><strong>Close attention does not automatically mean high conversion. </strong>An attentive impression from someone with no interest in your product is still a wasted impression. Attention gets you closer to measuring exposure quality, but it does not replace audience targeting or offer relevance.</li>
</ul>



<p class="wp-block-paragraph">What teams optimizing across programmatic environments usually underestimate is the distance between an attention score and an outcome. Attention is a signal that the ad had a real chance to work. Whether it worked depends on everything that comes after the exposure: the message, the offer, the creative, the landing experience.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Attention vs. CTR: Not a Competition</h2>



<p class="wp-block-paragraph">CTR and attention metrics measure entirely different things, for different campaign types. Treating them as rivals misframes the question.</p>



<p class="wp-block-paragraph">CTR is a direct signal for direct-response campaigns. If the campaign goal is a click and a conversion, CTR is your primary signal. Attention data adds limited predictive value there. Your conversion metrics already tell you what you need to know.</p>



<p class="wp-block-paragraph">Where attention metrics earn their place is in brand and awareness campaigns, where CTR is a poor KPI. A high-quality video ad on a premium editorial page may drive very low CTR and very high brand recall. CTR would flag that campaign as underperforming. Attention data would tell you it is working.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The practical implication for product and media teams: attention metrics and CTR belong in different parts of your measurement framework. They answer different questions.</p>



<div class="propeller-attention-flow-block">
  <style>
    .propeller-attention-flow-block,
    .propeller-attention-flow-block * {
      box-sizing: border-box;
    }

    .propeller-attention-flow-block {
      width: 100%;
      max-width: 880px;
      margin: 28px 0;
      padding: 18px;
      background: transparent;
      overflow: visible;
    }

    .propeller-attention-flow-block .paf-chart {
      display: block;
      width: 100%;
      height: auto;
      overflow: visible;
    }

    .propeller-attention-flow-block .paf-line {
      stroke: #c0c8d8;
      stroke-width: 2;
    }

    .propeller-attention-flow-block .paf-text {
      font-family: Arial, sans-serif;
    }

    .propeller-attention-flow-block .paf-root {
      fill: #1a56b0;
    }

    .propeller-attention-flow-block .paf-root-text {
      font-size: 15px;
      font-weight: 700;
      fill: #ffffff;
    }

    .propeller-attention-flow-block .paf-branch-performance {
      font-size: 12px;
      font-style: italic;
      fill: #e07b39;
    }

    .propeller-attention-flow-block .paf-branch-brand {
      font-size: 12px;
      font-style: italic;
      fill: #1a56b0;
    }

    .propeller-attention-flow-block .paf-box-performance {
      fill: #fff3e8;
      stroke: #e07b39;
      stroke-width: 1.5;
    }

    .propeller-attention-flow-block .paf-box-brand {
      fill: #ebf5ff;
      stroke: #1a56b0;
      stroke-width: 1.5;
    }

    .propeller-attention-flow-block .paf-box-outcome {
      fill: #eaf7ea;
      stroke: #3a9142;
      stroke-width: 1.5;
    }

    .propeller-attention-flow-block .paf-box-shared {
      fill: #f5f5f5;
      stroke: #cccccc;
      stroke-width: 1.5;
    }

    .propeller-attention-flow-block .paf-title-performance {
      font-size: 14px;
      font-weight: 700;
      fill: #b85500;
    }

    .propeller-attention-flow-block .paf-title-brand {
      font-size: 14px;
      font-weight: 700;
      fill: #1a56b0;
    }

    .propeller-attention-flow-block .paf-title-outcome {
      font-size: 13px;
      font-weight: 700;
      fill: #2a7030;
    }

    .propeller-attention-flow-block .paf-title-shared {
      font-size: 13px;
      font-weight: 700;
      fill: #444444;
    }

    .propeller-attention-flow-block .paf-body-text {
      font-size: 13px;
      fill: #666666;
    }

    .propeller-attention-flow-block .paf-small-text {
      font-size: 12px;
      fill: #555555;
    }

    .propeller-attention-flow-block .paf-shared-text {
      font-size: 12.5px;
      fill: #555555;
    }

    .propeller-attention-flow-block .paf-arrow {
      fill: #c0c8d8;
    }

    .propeller-attention-flow-block .paf-legend-text {
      font-size: 12px;
      fill: #888888;
    }

    .propeller-attention-flow-block .paf-legend-performance {
      fill: #fff3e8;
      stroke: #e07b39;
      stroke-width: 1;
    }

    .propeller-attention-flow-block .paf-legend-brand {
      fill: #ebf5ff;
      stroke: #1a56b0;
      stroke-width: 1;
    }

    .propeller-attention-flow-block .paf-legend-outcome {
      fill: #eaf7ea;
      stroke: #3a9142;
      stroke-width: 1;
    }

    .propeller-attention-flow-block .paf-legend-shared {
      fill: #f5f5f5;
      stroke: #cccccc;
      stroke-width: 1;
    }

    @media (max-width: 640px) {
      .propeller-attention-flow-block {
        padding: 10px 0;
      }

      .propeller-attention-flow-block .paf-root-text {
        font-size: 14px;
      }

      .propeller-attention-flow-block .paf-title-performance,
      .propeller-attention-flow-block .paf-title-brand {
        font-size: 13px;
      }

      .propeller-attention-flow-block .paf-body-text {
        font-size: 12px;
      }

      .propeller-attention-flow-block .paf-small-text,
      .propeller-attention-flow-block .paf-legend-text {
        font-size: 11px;
      }
    }
  </style>

  <svg class="paf-chart" viewBox="0 0 780 575" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="paf-title paf-desc">
    <title id="paf-title">When to Add Attention Metrics to Your Measurement Stack</title>
    <desc id="paf-desc">Decision flowchart showing where attention data fits based on campaign objective.</desc>

    <line class="paf-line" x1="390" y1="60" x2="390" y2="132" />
    <line class="paf-line" x1="178" y1="132" x2="602" y2="132" />
    <line class="paf-line" x1="178" y1="132" x2="178" y2="200" />
    <line class="paf-line" x1="602" y1="132" x2="602" y2="200" />
    <line class="paf-line" x1="178" y1="200" x2="178" y2="345" />
    <line class="paf-line" x1="602" y1="200" x2="602" y2="345" />
    <line class="paf-line" x1="178" y1="345" x2="178" y2="422" />
    <line class="paf-line" x1="602" y1="345" x2="602" y2="422" />
    <line class="paf-line" x1="178" y1="422" x2="602" y2="422" />
    <line class="paf-line" x1="390" y1="422" x2="390" y2="488" />

    <rect class="paf-root" x="218" y="28" width="344" height="64" rx="9" />
    <text class="paf-text paf-root-text" x="390" y="52" text-anchor="middle">What is your primary</text>
    <text class="paf-text paf-root-text" x="390" y="71" text-anchor="middle">campaign objective?</text>

    <text class="paf-text paf-branch-performance" x="178" y="126" text-anchor="middle">Direct Response</text>
    <text class="paf-text paf-branch-brand" x="602" y="126" text-anchor="middle">Brand &amp; Awareness</text>

    <rect class="paf-box-performance" x="28" y="153" width="300" height="78" rx="7" />
    <text class="paf-text paf-title-performance" x="178" y="177" text-anchor="middle">Performance / Direct Response</text>
    <text class="paf-text paf-body-text" x="178" y="196" text-anchor="middle">CTR + CPA are your primary KPIs</text>
    <text class="paf-text paf-body-text" x="178" y="214" text-anchor="middle">Conversion data already tells you</text>

    <rect class="paf-box-brand" x="452" y="153" width="300" height="78" rx="7" />
    <text class="paf-text paf-title-brand" x="602" y="177" text-anchor="middle">Brand Awareness / Recall</text>
    <text class="paf-text paf-body-text" x="602" y="196" text-anchor="middle">No direct behavioral signal</text>
    <text class="paf-text paf-body-text" x="602" y="214" text-anchor="middle">Viewability alone is insufficient</text>

    <polygon class="paf-arrow" points="172,247 184,247 178,258" />
    <polygon class="paf-arrow" points="596,247 608,247 602,258" />

    <rect class="paf-box-outcome" x="28" y="263" width="300" height="82" rx="7" />
    <text class="paf-text paf-title-outcome" x="178" y="289" text-anchor="middle">Use attention as inventory</text>
    <text class="paf-text paf-title-outcome" x="178" y="307" text-anchor="middle">quality filter only</text>
    <text class="paf-text paf-small-text" x="178" y="327" text-anchor="middle">CTR + conversion = primary signal</text>

    <rect class="paf-box-outcome" x="452" y="263" width="300" height="82" rx="7" />
    <text class="paf-text paf-title-outcome" x="602" y="289" text-anchor="middle">Add attention as primary</text>
    <text class="paf-text paf-title-outcome" x="602" y="307" text-anchor="middle">quality signal</text>
    <text class="paf-text paf-small-text" x="602" y="327" text-anchor="middle">Validate with brand lift study</text>

    <polygon class="paf-arrow" points="384,435 396,435 390,446" />

    <rect class="paf-box-shared" x="148" y="449" width="484" height="78" rx="7" />
    <text class="paf-text paf-title-shared" x="390" y="473" text-anchor="middle">Evaluating new or unfamiliar inventory?</text>
    <text class="paf-text paf-shared-text" x="390" y="492" text-anchor="middle">Use attention as a pre-bid quality filter</text>
    <text class="paf-text paf-shared-text" x="390" y="510" text-anchor="middle">regardless of campaign type</text>

    <rect class="paf-legend-performance" x="28" y="548" width="14" height="8" rx="2" />
    <text class="paf-text paf-legend-text" x="48" y="557">Performance</text>

    <rect class="paf-legend-brand" x="140" y="548" width="14" height="8" rx="2" />
    <text class="paf-text paf-legend-text" x="160" y="557">Brand</text>

    <rect class="paf-legend-outcome" x="215" y="548" width="14" height="8" rx="2" />
    <text class="paf-text paf-legend-text" x="235" y="557">Outcome</text>

    <rect class="paf-legend-shared" x="305" y="548" width="14" height="8" rx="2" />
    <text class="paf-text paf-legend-text" x="325" y="557">Applies to both</text>
  </svg>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">So Will Attention Replace Traditional Metrics? A Direct Answer</h2>



<p class="wp-block-paragraph">No, and the organizations that built the industry standards say so clearly.</p>



<p class="wp-block-paragraph">The IAB and MRC&#8217;s November 2025 guidelines describe attention as &#8220;a complementary signal that, when combined with delivery and outcome metrics, helps marketers understand how media and creative influence business results.&#8221;&nbsp;</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-1024x536.png" alt="adtech-ai-banner" class="wp-image-913 size-full" srcset="https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-ai-banner.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/adtech-artificial-intelligence-trends-predictions/">Artificial Intelligence in AdTech: Trends and Predictions</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Some of the industry coverage has framed attention metrics as the next viewability, the single number the ecosystem will eventually converge on. That is not what the evidence or the standards support. What the evidence supports is that attention data, applied alongside existing metrics, improves your ability to evaluate inventory quality and predict brand outcomes for campaigns where no direct behavioral signal exists.</p>



<p class="wp-block-paragraph">For advertisers running brand campaigns, attention metrics have earned a place in your measurement stack. The November 2025 standards give you a more credible framework for evaluating vendors than existed a year earlier. For performance-focused advertisers: attention data is useful for assessing inventory quality, but your conversion data still drives optimization.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The hype-or-future framing presents a false choice: attention metrics are neither a revolution nor a fad. They are a measurable improvement to a specific part of the measurement problem, applied to a specific category of campaigns.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Product and Media Teams Should Do Now</h2>



<p class="wp-block-paragraph">Ask your current measurement vendor or DSP whether they surface attention data, and if so, which methodology they use and whether they are pursuing MRC accreditation under the November 2025 guidelines. That question alone filters out vendors whose attention products are mostly marketing language.</p>



<p class="wp-block-paragraph">If you run brand campaigns, run a parallel test: one flight optimized to viewability as normal, one optimized to attention score. Compare brand recall outcomes. The test will tell you more than any benchmark report.</p>



<p class="wp-block-paragraph">If you evaluate new inventory, use attention data as a quality filter rather than a performance signal. High attention scores on an unfamiliar placement are a useful indicator that the placement is worth the risk. Low attention scores on the inventory you assumed was premium are a useful flag to look closer.</p>



<p class="wp-block-paragraph">Do not replace CTR or conversion tracking with attention as your primary KPI. Attention is a signal, not a strategy.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/frequency-capping-hidden-cost-overexposure/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-1024x536.png" alt="AdTech-Frequency capping" class="wp-image-2662 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/frequency-capping-hidden-cost-overexposure/" target="_blank" rel="noreferrer noopener">The Hidden Cost of Overexposure: A New Look at Frequency Capping</a></strong></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Is attention measurement the same as viewability?</h3>



<p class="wp-block-paragraph">No. Viewability confirms that an ad had the opportunity to be seen: 50% of pixels on screen for at least one second. Attention measurement goes further, using behavioral signals and, in some cases, panel-based eye-tracking data to estimate whether the ad was actually noticed. The two are related but measure different things.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Which campaigns benefit most from attention metrics?</h3>



<p class="wp-block-paragraph">Brand awareness and recall campaigns benefit most. For direct-response campaigns where CTR and conversion rate are the primary signals, attention data adds limited predictive value. It is most useful as an inventory quality filter regardless of campaign type, but its strongest case is in contexts where no direct behavioral signal exists.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Are attention scores comparable across vendors?</h3>



<p class="wp-block-paragraph">Not reliably, as of mid-2026. The IAB/MRC November 2025 guidelines provide a standardized framework and the basis for MRC accreditation, which will improve comparability over time. Until accreditation is widely adopted, treat attention scores from different vendors as directional within each vendor&#8217;s own system, not as directly comparable numbers.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Will attention metrics eventually replace viewability?</h3>



<p class="wp-block-paragraph">The IAB and MRC explicitly position attention as a complementary signal, not a replacement for delivery metrics. The more likely trajectory is that attention data becomes a standard additional layer in measurement frameworks for brand campaigns, rather than displacing existing metrics.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What is the simplest way to start testing attention data?</h3>



<p class="wp-block-paragraph">Most major verification vendors and larger DSPs now offer attention measurement as part of their standard toolset. Starting with proxy-signal-based attention scores costs nothing extra if you already use their platform. Panel-based measurement (such as Lumen Research) requires a separate engagement but provides more direct observation data.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Attention Data Is a Better Question, Not a Final Answer</h2>



<p class="wp-block-paragraph">The case for attention metrics is not that they solve the measurement problem. It&#8217;s that they let you ask a better version of the question. Viewability asks: did this ad load where someone might have seen it? Attention asks: did someone likely notice it?</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">That shift is meaningful, with real research behind it and a formal industry framework to support it now. The limitation is that attention still tells you about the exposure, not about what happened after. Whether a noticed ad becomes a recalled brand, a considered product, or a conversion depends on everything the attention metric does not measure.</p>



<p class="wp-block-paragraph">Use it where it improves your predictions. Know where it does not.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://adtechholding.com/blog/attention-metrics-advertising-measurement/">Attention Metrics in Advertising: Hype or the Future of Measurement?</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How Programmatic Auctions Changed: New Bid Models, AI, and a Cleaner Supply Chain</title>
		<link>https://adtechholding.com/blog/programmatic-auctions-ai-bidding-supply-chain/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 09:41:40 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Data]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2813</guid>

					<description><![CDATA[<p>What if the auction changed, but your bidding strategy didn’t? This article explains how programmatic auctions evolved, from first-price bidding to AI models and smarter supply path optimization.</p>
<p>The post <a href="https://adtechholding.com/blog/programmatic-auctions-ai-bidding-supply-chain/">How Programmatic Auctions Changed: New Bid Models, AI, and a Cleaner Supply Chain</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The programmatic advertising market in the United States <a href="https://iabtechlab.com/press-releases/iab-tech-lab-launches-industry-council-to-address-transparency/" target="_blank" rel="noreferrer noopener nofollow">crossed $200 billion in annual spend in 2026</a>. That number gets repeated a lot. What gets discussed less is how dramatically the mechanics underneath it changed over the past few years, and why those changes matter for anyone buying or selling inventory today.</p>



<p class="wp-block-paragraph">This piece covers the specific set of shifts that changed how auctions actually behave: the move to first-price bidding, the rise of AI-driven optimization, the consolidation of supply paths, and the transparency push that has pulled industry heavyweights into a formal governance structure.</p>





<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Key Takeaways:</h3>



<ul class="wp-block-list">
<li>First-price auctions are now the standard across most major exchanges, which has changed what it takes to bid efficiently.</li>



<li>Bid shading – algorithmically reducing bids toward the likely clearing price – became essential once first-price became dominant, and AI is what makes it work at scale.</li>



<li>Supply path optimization (SPO) has moved from a cost-cutting exercise to a quality discipline: industry research shows the average DSP now works with around 12 SSP partners instead of 18.</li>



<li>AI does not just help buyers bid. In 2026, it will make thousands of real-time decisions per second that human teams could not execute manually, even if they wanted to.</li>



<li>Industry bodies are responding to scale and opacity: IAB Tech Lab launched a Programmatic Governance Council in April 2026, with Dentsu, Omnicom, WPP, Disney, and a dozen others at the table.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Actually Changed, and Why It Took Time to Show Up in Results</h2>



<p class="wp-block-paragraph">Programmatic advertising has been &#8220;evolving&#8221; as long as it has existed. But the past two or three years produced genuine structural changes, not incremental feature updates. Three things happened in rough sequence: most major exchanges switched from second-price to first-price auctions; AI moved from an optimization layer to the primary bidding engine; and buyers responded to efficiency pressure by consolidating their supply paths.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">Each shift affected the others. The move to first-price required smarter bidding, which accelerated AI adoption. AI adoption created efficiency pressure that made bloated supply paths more visibly wasteful. SPO pressure made supply chain transparency more urgent. These changes are easier to understand separately, but they reinforce each other in practice.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">First-Price Auctions Are Now the Standard: What That Means for What You Pay</h2>



<p class="wp-block-paragraph">In a second-price auction, the winning bidder pays one cent above the second-highest bid, not their own bid. The rational strategy is simple: bid your actual value, and let the auction settle the price. Google Ad Manager and most major exchanges ran this way for years.</p>



<p class="wp-block-paragraph">In a first-price auction, the winner pays exactly what they bid. If you bid $8 CPM (cost per thousand impressions) and win, you pay $8. This sounds like a minor mechanical change, but it is not. It changes the entire logic of how a buyer should set bids. In second-price, you could bid aggressively because overbidding was self-correcting – the auction handled the pricing. In first-price, overbidding costs real money. A buyer who bids $8 when the clearing price is $4.50 overpaid by nearly double. At the campaign scale, that inefficiency adds up fast.</p>



<p class="wp-block-paragraph">The shift also eliminated a particular kind of hidden arbitrage. SSPs (Supply-Side Platforms, the technology layer that connects publishers to buyer demand) running second-price auctions had been using bid floors in ways that generated margin for the exchange without buyers fully understanding the mechanism. First-price made the price you pay visible. It did not automatically make it fair, but it made it legible.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The practical consequence for buyers: bidding strategy became a competitive skill again. Teams that figured out how to estimate the right bid started seeing meaningfully better cost-per-win outcomes. Most did it with AI.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/data-pipeline-security-ad-impressions/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-1024x536.png" alt="AdTech guide to data pipeline security for high-volume ad impression processing, PII protection, fraud detection, and compliance." class="wp-image-2763 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Data-Pipeline-Security.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/data-pipeline-security-ad-impressions/" target="_blank" rel="noreferrer noopener">Data Pipeline Security in High-Volume Ad Impression Processing</a></strong></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Bid Shading: The Fix That Kept Buyers from Overpaying</h2>



<p class="wp-block-paragraph">Bid shading is the practice of submitting a bid below your maximum willingness to pay, based on a model that estimates what the clearing price is likely to be. The goal is to win the impression at a price closer to market value rather than at your ceiling.</p>



<p class="wp-block-paragraph">In second-price auctions, bid shading was mostly irrelevant. In the first-price, it became the difference between efficient and expensive spending.</p>



<p class="wp-block-paragraph">The challenge is that you need a lot of data to shade well. Clearing prices vary by placement, audience segment, time of day, device type, and dozens of other factors. A human buyer setting bid adjustments manually has no realistic way to track all of those signals. A machine learning model can.</p>



<p class="wp-block-paragraph">Most DSPs (Demand-Side Platforms, the buying interfaces that let advertisers bid on inventory across exchanges) now include some form of bid shading as part of their standard bidding logic. It runs automatically, evaluating historical win rates and clearing prices to adjust bids on every impression. The buyer sets the target – a CPA (Cost Per Acquisition) goal, a CPM ceiling, and an ROAS target – and the AI manages the shading.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">What this means operationally is that buyers who have not reviewed their bidding model configuration since their exchange moved to first-price may be spending more than necessary. The tool is there. The question is whether the campaign objective is configured in a way that lets the model optimize toward something meaningful.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Supply Path Optimization: Fewer Hops, Better Inventory</h2>



<p class="wp-block-paragraph">Before SPO became a buying-side discipline, a single impression request could travel through three or four intermediaries before a DSP saw it. The same inventory would often appear across multiple SSPs, meaning a buyer&#8217;s DSP was bidding against duplicate requests for the same placement. It inflated apparent competition and made pricing harder to read.</p>



<p class="wp-block-paragraph">SPO addresses this by having buyers evaluate their supply paths – the routes from a DSP through SSPs and exchanges to publisher inventory – and consolidate around the ones that deliver clean inventory, transparent pricing, and measurable value. According to industry research, the average number of SSP partners per DSP dropped from around 18 to around 12 in two years, a significant consolidation in how tightly the supply chain is managed.</p>



<p class="wp-block-paragraph">The initial driver was cost. Fewer hops means lower fees. But the practice evolved into something broader. SPO in 2026 is as much about inventory quality and accountability as it is about intermediary reduction. Buyers are asking: which supply paths produce outcomes, not just clicks? Which SSPs provide enough data to evaluate what you are actually buying? Which ones are transparent about auction dynamics?</p>



<div class="adtech-spo-table-block">
  <style>
    .adtech-spo-table-block,
    .adtech-spo-table-block * {
      box-sizing: border-box;
    }


.adtech-spo-table-block {
  width: 100%;
  max-width: 980px;
  margin: 32px 0;
  padding: 28px 0 22px;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  color: #1f2933;
}

.adtech-spo-table-block .astb-eyebrow {
  margin: 0 0 6px;
  color: #6f7785;
  font-size: 11px;
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.adtech-spo-table-block .astb-title {
  margin: 0 0 4px;
  color: #171b22;
  font-size: 22px;
  line-height: 1.25;
  font-weight: 650;
}

.adtech-spo-table-block .astb-subtitle {
  margin: 0 0 28px;
  color: #6f7785;
  font-size: 14px;
  line-height: 1.5;
  font-weight: 400;
}

.adtech-spo-table-block .astb-table {
  width: 100%;
  overflow: hidden;
  border: 1px solid #d9dee8;
  border-radius: 14px;
  background: #ffffff;
}

.adtech-spo-table-block .astb-head-row,
.adtech-spo-table-block .astb-row {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr) minmax(0, 1fr);
}

.adtech-spo-table-block .astb-head-label,
.adtech-spo-table-block .astb-head-old,
.adtech-spo-table-block .astb-head-new {
  min-height: 72px;
  padding: 16px 20px;
  display: flex;
  align-items: center;
  border-bottom: 1px solid #d9dee8;
}

.adtech-spo-table-block .astb-head-label {
  background: #f6f7f9;
}

.adtech-spo-table-block .astb-head-old {
  background: #f1efe8;
}

.adtech-spo-table-block .astb-head-new {
  background: #e1f5ee;
  border-left: 1px solid #d9dee8;
}

.adtech-spo-table-block .astb-head-tag {
  margin: 0 0 2px;
  font-size: 11px;
  line-height: 1.25;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.adtech-spo-table-block .astb-head-old .astb-head-tag {
  color: #5f5e5a;
}

.adtech-spo-table-block .astb-head-new .astb-head-tag {
  color: #0f6e56;
}

.adtech-spo-table-block .astb-head-year {
  margin: 0;
  font-size: 19px;
  line-height: 1.25;
  font-weight: 650;
}

.adtech-spo-table-block .astb-head-old .astb-head-year {
  color: #2c2c2a;
}

.adtech-spo-table-block .astb-head-new .astb-head-year {
  color: #04342c;
}

.adtech-spo-table-block .astb-row:last-child .astb-cell {
  border-bottom: 0;
}

.adtech-spo-table-block .astb-cell {
  min-height: 68px;
  padding: 16px 20px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  border-bottom: 1px solid #d9dee8;
  background: #ffffff;
  color: #1f2933;
  font-size: 15px;
  line-height: 1.45;
}

.adtech-spo-table-block .astb-row:nth-child(odd) .astb-cell {
  background: #fbfcfe;
}

.adtech-spo-table-block .astb-cell-label {
  background: #f6f7f9;
  color: #6f7785;
  font-size: 13px;
  font-weight: 650;
}

.adtech-spo-table-block .astb-row:nth-child(odd) .astb-cell-label {
  background: #f1f3f6;
}

.adtech-spo-table-block .astb-cell-new {
  border-left: 1px solid #d9dee8;
}

.adtech-spo-table-block .astb-icon {
  width: 18px;
  min-width: 18px;
  height: 18px;
  margin-top: 1px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #7b8494;
  font-size: 14px;
  line-height: 1;
}

.adtech-spo-table-block .astb-dot-old,
.adtech-spo-table-block .astb-dot-new {
  width: 7px;
  min-width: 7px;
  height: 7px;
  margin-top: 7px;
  border-radius: 50%;
}

.adtech-spo-table-block .astb-dot-old {
  background: #888780;
}

.adtech-spo-table-block .astb-dot-new {
  background: #1d9e75;
}

.adtech-spo-table-block .astb-value {
  display: inline-block;
}

.adtech-spo-table-block .astb-cell-old .astb-value {
  color: #1f2933;
  font-weight: 500;
}

.adtech-spo-table-block .astb-cell-new .astb-value {
  color: #0f6e56;
  font-weight: 650;
}

.adtech-spo-table-block .astb-source {
  margin: 14px 0 0;
  padding-left: 2px;
  color: #6f7785;
  font-size: 11px;
  line-height: 1.45;
}

@media (max-width: 760px) {
  .adtech-spo-table-block {
    padding: 24px 0 18px;
  }

  .adtech-spo-table-block .astb-title {
    font-size: 20px;
  }

  .adtech-spo-table-block .astb-table {
    border-radius: 12px;
  }

  .adtech-spo-table-block .astb-head-row {
    display: none;
  }

  .adtech-spo-table-block .astb-row {
    display: block;
    border-bottom: 1px solid #d9dee8;
  }

  .adtech-spo-table-block .astb-row:last-child {
    border-bottom: 0;
  }

  .adtech-spo-table-block .astb-cell {
    min-height: auto;
    padding: 13px 16px;
    border-bottom: 1px solid #e4e8ef;
  }

  .adtech-spo-table-block .astb-cell-label {
    background: #f1f3f6;
    font-size: 13px;
  }

  .adtech-spo-table-block .astb-cell-old::before,
  .adtech-spo-table-block .astb-cell-new::before {
    display: block;
    min-width: 54px;
    color: #7b8494;
    font-size: 11px;
    line-height: 1.45;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  .adtech-spo-table-block .astb-cell-old::before {
    content: "Then";
  }

  .adtech-spo-table-block .astb-cell-new::before {
    content: "Now";
  }

  .adtech-spo-table-block .astb-cell-new {
    border-left: 0;
  }

  .adtech-spo-table-block .astb-row:last-child .astb-cell:last-child {
    border-bottom: 0;
  }
}

@media (max-width: 480px) {
  .adtech-spo-table-block .astb-title {
    font-size: 19px;
  }

  .adtech-spo-table-block .astb-subtitle {
    font-size: 13px;
  }

  .adtech-spo-table-block .astb-cell {
    font-size: 14px;
  }
}
```

  </style>

  <div class="astb-content">
    <p class="astb-eyebrow">Supply path optimization</p>
    <h3 class="astb-title">How SPO changed from 2022 to 2026</h3>
    <p class="astb-subtitle">From cutting costs to proving value at every hop</p>


<div class="astb-table">
  <div class="astb-head-row">
    <div class="astb-head-label"></div>

    <div class="astb-head-old">
      <div>
        <p class="astb-head-tag">Then</p>
        <p class="astb-head-year">2022–2023</p>
      </div>
    </div>

    <div class="astb-head-new">
      <div>
        <p class="astb-head-tag">Now</p>
        <p class="astb-head-year">2026</p>
      </div>
    </div>
  </div>

  <div class="astb-row">
    <div class="astb-cell astb-cell-label">
      <span class="astb-icon">◎</span>
      <span>Primary goal</span>
    </div>
    <div class="astb-cell astb-cell-old">
      <span class="astb-dot-old"></span>
      <span class="astb-value">Reduce intermediary fees</span>
    </div>
    <div class="astb-cell astb-cell-new">
      <span class="astb-dot-new"></span>
      <span class="astb-value">Quality + accountability</span>
    </div>
  </div>

  <div class="astb-row">
    <div class="astb-cell astb-cell-label">
      <span class="astb-icon">✂</span>
      <span>What gets cut</span>
    </div>
    <div class="astb-cell astb-cell-old">
      <span class="astb-dot-old"></span>
      <span class="astb-value">Redundant hops</span>
    </div>
    <div class="astb-cell astb-cell-new">
      <span class="astb-dot-new"></span>
      <span class="astb-value">Paths that can&#8217;t prove value</span>
    </div>
  </div>

  <div class="astb-row">
    <div class="astb-cell astb-cell-label">
      <span class="astb-icon">▦</span>
      <span>SSP partners per DSP</span>
    </div>
    <div class="astb-cell astb-cell-old">
      <span class="astb-dot-old"></span>
      <span class="astb-value">18+ on average</span>
    </div>
    <div class="astb-cell astb-cell-new">
      <span class="astb-dot-new"></span>
      <span class="astb-value">~12 on average</span>
    </div>
  </div>

  <div class="astb-row">
    <div class="astb-cell astb-cell-label">
      <span class="astb-icon">☰</span>
      <span>Selection criteria</span>
    </div>
    <div class="astb-cell astb-cell-old">
      <span class="astb-dot-old"></span>
      <span class="astb-value">Hop count, CPM</span>
    </div>
    <div class="astb-cell astb-cell-new">
      <span class="astb-dot-new"></span>
      <span class="astb-value">Outcomes, data quality, auction transparency</span>
    </div>
  </div>

  <div class="astb-row">
    <div class="astb-cell astb-cell-label">
      <span class="astb-icon">✓</span>
      <span>Transparency standard</span>
    </div>
    <div class="astb-cell astb-cell-old">
      <span class="astb-dot-old"></span>
      <span class="astb-value">ads.txt / sellers.json basics</span>
    </div>
    <div class="astb-cell astb-cell-new">
      <span class="astb-dot-new"></span>
      <span class="astb-value">Auction mechanics + transaction signal consistency</span>
    </div>
  </div>
</div>

<p class="astb-source">Source: industry research on DSP–SSP consolidation trends, 2026</p>


  </div>
</div>



<p class="wp-block-paragraph">For performance networks operating outside the open exchange, SPO looks less like partner audits and more like zone and format-level exclusion logic. The principle is the same: direct spend toward inventory that performs, and cut the paths that do not.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">How AI Took Over Real-Time Bidding</h2>



<p class="wp-block-paragraph">The arithmetic of programmatic bidding makes human decision-making inadequate at scale. A campaign running across display, video, and push notifications in five markets will process several million bid requests on a typical working day. Each one requires a decision in under 200 milliseconds. The number of variables in play – placement, audience signal, competitive pressure, time of day, creative performance history – runs into the hundreds per impression.</p>



<p class="wp-block-paragraph">AI handles this not by following rules but by recognizing patterns. Models trained on historical campaign data learn which combinations of signals predict a conversion, then adjust bids dynamically to favor those combinations. The buyer sets the objective. The AI figures out how to hit it.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/adtech-ml-conference-1024x536.png" alt="AdTech Holding speakers shared how they apply AI solutions to optimize their daily workflows" class="wp-image-2776 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/adtech-ml-conference-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-ml-conference-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-ml-conference-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-ml-conference.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/ml-conference-how-we-automate-adtech/" target="_blank" rel="noreferrer noopener">AdTech Holding at ML Conference Serbia: How We Automate AdTech from the Inside</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Among marketers already using AI, 77% employ it for campaign management automation – a signal of how central it has become to day-to-day buying operations. These numbers reflect a practical reality: teams that tried to manage first-price auction bidding manually through bid adjustments and rules found themselves consistently outperformed by campaigns where the bidding model had autonomy to optimize.</p>



<p class="wp-block-paragraph">From a buying-side perspective, what we see most often is that the hardest transition is not technical. It is organizational. Buyers who spent years building manual optimization workflows often resist handing that control to a model, even when the model is demonstrably better. The campaigns that perform best in 2026 are the ones where the buyer&#8217;s job shifted: less bid management, more objective-setting and data quality work.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">AI bidding is not without limits. It needs data to learn from, which means it underperforms on new campaigns before it has enough conversion history. It optimizes toward what you measure, which means poorly defined objectives produce poor outcomes. And it does not catch fraud on its own – that requires a separate detection layer.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Agentic Advertising: When the Machine Starts Negotiating</h2>



<p class="wp-block-paragraph">Beyond automated bidding, a newer development is worth watching: agentic advertising, where AI systems do not just execute decisions but make them. This includes budget reallocation across channels, creative selection, audience segment expansion, and, in early implementations, negotiation of programmatic guaranteed and preferred deal terms via API.</p>



<p class="wp-block-paragraph">IAB Tech Lab formalized its work on this in 2026, publishing standards for agentic advertising signals and launching an Agent Registry – a tool that lets buyers and sellers register and authenticate the AI agents operating in their programmatic stack. The concern behind the registry is straightforward: as AI agents become more autonomous, it matters that both sides of a transaction can verify who – or what – is acting on behalf of a buyer or publisher.</p>



<p class="wp-block-paragraph">This is early-stage infrastructure, but it reflects a real directional shift. The programmatic supply chain is becoming less a set of human-operated platforms and more a set of machine-to-machine interactions, with humans setting objectives and reviewing outcomes rather than managing individual transactions.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/frequency-capping-hidden-cost-overexposure/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-1024x536.png" alt="AdTech-Frequency capping" class="wp-image-2662 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/05/AdTech-Frequency-capping.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/frequency-capping-hidden-cost-overexposure/" target="_blank" rel="noreferrer noopener">The Hidden Cost of Overexposure: A New Look at Frequency Capping</a></strong></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why the Whole Industry Is Talking About Transparency Right Now</h2>



<p class="wp-block-paragraph">In April 2026, <a href="https://iabtechlab.com/press-releases/iab-tech-lab-launches-industry-council-to-address-transparency" target="_blank" rel="noreferrer noopener nofollow">IAB Tech Lab launched the Programmatic Governance Council</a>, a formal industry body with Dentsu, Omnicom Media Group, WPP, Disney, Magnite, PubMatic, The Trade Desk, Amazon Ads, and others as founding participants. The stated goal: address transparency gaps in how auctions operate, how transaction signals are handled, and how buyers and sellers can verify that programmatic execution is trustworthy.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">&#8220;<em>Programmatic grew incredibly fast, but the governance around how that market should operate has not kept pace with its scale, complexity, and automation</em>,&#8221; said Anthony Katsur, CEO of IAB Tech Lab.</p>
</blockquote>
</blockquote>



<p class="wp-block-paragraph">The council&#8217;s existence is itself a signal. When organizations of this size commit to formal governance work, it reflects accumulated frustration that voluntary coordination was not resolving practical problems. The specific issues named – auction transparency, transaction signal consistency, bid duplication – are downstream effects of the shift to first-price auctions and the growth of AI-driven bidding. When machines are making millions of decisions per second and auction mechanics are complex, small inconsistencies in how signals are handled have large aggregate effects.</p>



<p class="wp-block-paragraph">For buyers, the transparency push matters because it creates pressure on SSPs and exchanges to document their auction mechanics more clearly. That documentation is what makes SPO and bid shading strategies defensible: you need to understand the auction you are bidding into before you can optimize intelligently for it.</p>



<div class="adtech-programmatic-auction-block">
  <style>
    .adtech-programmatic-auction-block,
    .adtech-programmatic-auction-block * {
      box-sizing: border-box;
    }


.adtech-programmatic-auction-block {
  width: 100%;
  max-width: 980px;
  margin: 32px 0;
  padding: 28px 0 22px;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  color: #1f2933;
}

.adtech-programmatic-auction-block .apab-eyebrow {
  margin: 0 0 6px;
  color: #6f7785;
  font-size: 11px;
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.adtech-programmatic-auction-block .apab-title {
  margin: 0 0 4px;
  color: #171b22;
  font-size: 22px;
  line-height: 1.25;
  font-weight: 650;
}

.adtech-programmatic-auction-block .apab-subtitle {
  margin: 0 0 28px;
  color: #6f7785;
  font-size: 14px;
  line-height: 1.5;
  font-weight: 400;
}

.adtech-programmatic-auction-block .apab-flow-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid #d9dee8;
  border-radius: 14px;
  overflow: hidden;
  background: #ffffff;
}

.adtech-programmatic-auction-block .apab-step {
  position: relative;
  min-height: 190px;
  padding: 18px 16px 16px;
  border-right: 1px solid #d9dee8;
  border-bottom: 1px solid #d9dee8;
  background: #ffffff;
}

.adtech-programmatic-auction-block .apab-step:nth-child(3),
.adtech-programmatic-auction-block .apab-step:nth-child(6) {
  border-right: 0;
}

.adtech-programmatic-auction-block .apab-step:nth-child(4),
.adtech-programmatic-auction-block .apab-step:nth-child(5),
.adtech-programmatic-auction-block .apab-step:nth-child(6) {
  border-bottom: 0;
}

.adtech-programmatic-auction-block .apab-step-teal {
  background: #f2fbf7;
}

.adtech-programmatic-auction-block .apab-step-blue {
  background: #f0f6fd;
}

.adtech-programmatic-auction-block .apab-step-num {
  margin: 0 0 9px;
  color: #6f7785;
  font-size: 11px;
  line-height: 1.3;
  font-weight: 650;
  letter-spacing: 0.06em;
}

.adtech-programmatic-auction-block .apab-step-icon {
  width: 36px;
  height: 36px;
  margin-bottom: 10px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f1f3f6;
  color: #6f7785;
  font-size: 19px;
  line-height: 1;
}

.adtech-programmatic-auction-block .apab-step-icon-amber {
  background: #faeeda;
  color: #854f0b;
}

.adtech-programmatic-auction-block .apab-step-icon-teal {
  background: #e1f5ee;
  color: #0f6e56;
}

.adtech-programmatic-auction-block .apab-step-icon-blue {
  background: #e6f1fb;
  color: #185fa5;
}

.adtech-programmatic-auction-block .apab-step-name {
  margin: 0 0 6px;
  color: #171b22;
  font-size: 15px;
  line-height: 1.35;
  font-weight: 650;
}

.adtech-programmatic-auction-block .apab-step-desc {
  margin: 0;
  color: #6f7785;
  font-size: 13px;
  line-height: 1.5;
  font-weight: 400;
}

.adtech-programmatic-auction-block .apab-badge {
  display: inline-block;
  margin-top: 10px;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.35;
  font-weight: 650;
}

.adtech-programmatic-auction-block .apab-badge-amber {
  background: #faeeda;
  color: #854f0b;
}

.adtech-programmatic-auction-block .apab-badge-teal {
  background: #e1f5ee;
  color: #0f6e56;
}

.adtech-programmatic-auction-block .apab-badge-blue {
  background: #e6f1fb;
  color: #185fa5;
}

.adtech-programmatic-auction-block .apab-feedback-note {
  margin-top: 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: #6f7785;
  font-size: 12px;
  line-height: 1.45;
}

.adtech-programmatic-auction-block .apab-feedback-icon {
  width: 24px;
  min-width: 24px;
  height: 24px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f1f3f6;
  color: #0f6e56;
  font-size: 14px;
  line-height: 1;
}

.adtech-programmatic-auction-block .apab-feedback-line {
  flex: 1;
  height: 1px;
  background: #d9dee8;
}

@media (max-width: 820px) {
  .adtech-programmatic-auction-block .apab-flow-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .adtech-programmatic-auction-block .apab-step {
    border-right: 1px solid #d9dee8;
    border-bottom: 1px solid #d9dee8;
  }

  .adtech-programmatic-auction-block .apab-step:nth-child(2),
  .adtech-programmatic-auction-block .apab-step:nth-child(4),
  .adtech-programmatic-auction-block .apab-step:nth-child(6) {
    border-right: 0;
  }

  .adtech-programmatic-auction-block .apab-step:nth-child(5),
  .adtech-programmatic-auction-block .apab-step:nth-child(6) {
    border-bottom: 0;
  }
}

@media (max-width: 560px) {
  .adtech-programmatic-auction-block {
    padding: 24px 0 18px;
  }

  .adtech-programmatic-auction-block .apab-title {
    font-size: 20px;
  }

  .adtech-programmatic-auction-block .apab-subtitle {
    margin-bottom: 22px;
    font-size: 13px;
  }

  .adtech-programmatic-auction-block .apab-flow-grid {
    grid-template-columns: 1fr;
    border-radius: 12px;
  }

  .adtech-programmatic-auction-block .apab-step {
    min-height: auto;
    border-right: 0;
    border-bottom: 1px solid #d9dee8;
    padding: 17px 16px;
  }

  .adtech-programmatic-auction-block .apab-step:nth-child(5) {
    border-bottom: 1px solid #d9dee8;
  }

  .adtech-programmatic-auction-block .apab-step:nth-child(6) {
    border-bottom: 0;
  }

  .adtech-programmatic-auction-block .apab-step-name {
    font-size: 14px;
  }

  .adtech-programmatic-auction-block .apab-step-desc {
    font-size: 12.5px;
  }

  .adtech-programmatic-auction-block .apab-feedback-note {
    align-items: flex-start;
  }

  .adtech-programmatic-auction-block .apab-feedback-line {
    display: none;
  }
}
```

  </style>

  <div class="apab-content">
    <p class="apab-eyebrow">Programmatic advertising</p>
    <h3 class="apab-title">How a programmatic auction works in 2026</h3>
    <p class="apab-subtitle">From page load to ad serve — and back again</p>


<div class="apab-flow-grid" aria-label="Programmatic auction flow from page load to ad serve and feedback loop">
  <div class="apab-step">
    <p class="apab-step-num">01</p>
    <span class="apab-step-icon" aria-hidden="true">▣</span>
    <p class="apab-step-name">User loads page</p>
    <p class="apab-step-desc">Browser fires an ad request the moment the page renders</p>
  </div>

  <div class="apab-step">
    <p class="apab-step-num">02</p>
    <span class="apab-step-icon" aria-hidden="true">▤</span>
    <p class="apab-step-name">Publisher SSP sends bid request</p>
    <p class="apab-step-desc">SSP packages impression data and forwards to the exchange</p>
  </div>

  <div class="apab-step">
    <p class="apab-step-num">03</p>
    <span class="apab-step-icon apab-step-icon-amber" aria-hidden="true">↗</span>
    <p class="apab-step-name">Exchange routes to DSPs</p>
    <p class="apab-step-desc">Only eligible supply paths get through</p>
    <span class="apab-badge apab-badge-amber">SPO rules filter here</span>
  </div>

  <div class="apab-step apab-step-teal">
    <p class="apab-step-num">04</p>
    <span class="apab-step-icon apab-step-icon-teal" aria-hidden="true">◆</span>
    <p class="apab-step-name">DSP AI evaluates + bids</p>
    <p class="apab-step-desc">Model scores signals, applies bid shading, submits bid</p>
    <span class="apab-badge apab-badge-teal">200ms total window</span>
  </div>

  <div class="apab-step apab-step-blue">
    <p class="apab-step-num">05</p>
    <span class="apab-step-icon apab-step-icon-blue" aria-hidden="true">⚖</span>
    <p class="apab-step-name">First-price auction selects winner</p>
    <p class="apab-step-desc">Highest bid wins — winner pays exactly what they bid</p>
    <span class="apab-badge apab-badge-blue">First-price</span>
  </div>

  <div class="apab-step apab-step-teal">
    <p class="apab-step-num">06</p>
    <span class="apab-step-icon apab-step-icon-teal" aria-hidden="true">↻</span>
    <p class="apab-step-name">Ad serves, model learns</p>
    <p class="apab-step-desc">Creative renders; outcome data feeds back to the bidding model</p>
    <span class="apab-badge apab-badge-teal">Feedback loop</span>
  </div>
</div>

<div class="apab-feedback-note">
  <span class="apab-feedback-icon" aria-hidden="true">↻</span>
  <span>Step 6 feeds back into step 4 — each auction makes the model smarter for the next one</span>
  <span class="apab-feedback-line"></span>
</div>


  </div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What to Prioritize in Your Programmatic Stack</h2>



<p class="wp-block-paragraph">Not every change in programmatic requires action right now. Some things have already settled into your workflow without you noticing. Others need a deliberate decision.</p>



<p class="wp-block-paragraph">First-price auctions are standard infrastructure at this point – but that doesn&#8217;t mean your bidding model is set up for them. If you haven&#8217;t checked whether bid shading is enabled on your DSP campaigns, that&#8217;s the first thing worth looking at. AI bidding is only as good as the objective you give it. A campaign pointed at clicks will chase clicks – including bad ones. The more valuable work is defining what you actually want the model to go after, and making sure your tracking is clean enough that it can learn from real conversions, not noise.</p>



<p class="wp-block-paragraph">Supply path is worth a deliberate look if you&#8217;ve never actively chosen which SSPs and exchanges you buy through. The efficiency gains from consolidating around quality paths are real, but they don&#8217;t happen by default.</p>



<p class="wp-block-paragraph">For campaigns on performance networks rather than the open exchange, the levers are different: zone and subzone exclusions, format selection, optimization settings at the campaign level. The logic is the same, though – point spend at what works, and give the algorithm something accurate to learn from.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">What is a first-price programmatic auction?</h3>



<p class="wp-block-paragraph">In a first-price auction, the winning bidder pays exactly what they bid. This is the standard model on most major ad exchanges today. It replaced second-price auctions, where the winner paid one cent above the second-highest bid. The shift to first-price made bid strategy more important and helped drive adoption of AI bidding tools.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What is bid shading in programmatic advertising?</h3>



<p class="wp-block-paragraph">Bid shading is the practice of submitting a bid below your maximum willingness to pay, based on a model that estimates the likely clearing price. It became critical when first-price auctions became dominant, because consistently winning at your ceiling price is expensive. Most DSPs now include bid shading as part of their AI bidding models.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What does supply path optimization mean?</h3>



<p class="wp-block-paragraph">Supply Path Optimization (SPO) is the practice of choosing which supply paths to buy through – routes from a DSP through SSPs and exchanges to publisher inventory – and which to exclude. The goal is to concentrate spend on paths that deliver quality inventory, transparent pricing, and measurable outcomes, rather than spreading budget across every available route.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Why is AI so central to programmatic bidding now?</h3>



<p class="wp-block-paragraph">The volume of bid requests in a modern programmatic campaign exceeds what any human team can evaluate manually. A campaign running across multiple formats and markets processes millions of bids per day, each requiring a decision in under 200 milliseconds. AI models handle the pattern recognition and real-time adjustments this requires. Human buyers set objectives and evaluate outcomes; the model manages execution.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What is the Programmatic Governance Council?</h3>



<p class="wp-block-paragraph">The Programmatic Governance Council is an industry body launched by IAB Tech Lab in April 2026. Its founding participants include Dentsu, Omnicom Media Group, WPP, Disney, The Trade Desk, and Amazon Ads, among others. Its mandate is to address transparency in auction mechanics, transaction signal handling, and accountability in programmatic trading.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Wrapping Up</h2>



<p class="wp-block-paragraph">Programmatic auction mechanics have genuinely changed – and the changes require different skills, not just different tools. First-price auctions rewrote the logic of efficient bidding. AI became the only practical way to execute that logic at scale. SPO is thinning out the supply chain, cutting the paths that can&#8217;t prove their value. And IAB Tech Lab&#8217;s governance push signals that the industry knows it needs to get its house in order.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">None of this makes programmatic simpler. What it does is shift where the complexity lives. The buyer&#8217;s job is no longer about managing bids manually – it&#8217;s about understanding what the AI is optimizing toward and making sure that the target is the right one. Less mechanical work, more strategic thinking. The teams that make that shift will find it easier to defend their spend. The ones that don&#8217;t will keep wondering why the results don&#8217;t match the budget.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://adtechholding.com/blog/programmatic-auctions-ai-bidding-supply-chain/">How Programmatic Auctions Changed: New Bid Models, AI, and a Cleaner Supply Chain</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Data Pipeline Security in High-Volume Ad Impression Processing</title>
		<link>https://adtechholding.com/blog/data-pipeline-security-ad-impressions/</link>
		
		<dc:creator><![CDATA[The Content Team at AdTech]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 09:35:28 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2750</guid>

					<description><![CDATA[<p>When millions of ad events move every second, where does security actually fit? This guide shows how data pipeline security protects impression data without slowing the pipeline down.</p>
<p>The post <a href="https://adtechholding.com/blog/data-pipeline-security-ad-impressions/">Data Pipeline Security in High-Volume Ad Impression Processing</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Programmatic ad exchanges move enormous volumes of traffic. A mid-tier ad network handles around 200,000 events per second. A top Supply-side platform can push past two million. Each event carries identifiers, location, device fingerprints, and bid metadata – exactly what regulators care about, and attackers want.</p>



<p class="wp-block-paragraph">But ad pipelines are built for one thing: speed. Shave a few milliseconds off an RTB response, and you win more auctions. Add a five-millisecond security check, and you can lose more money than any breach would cost.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">That tension: speed vs. security – is what makes pipeline security in AdTech hard. Below: the threat model, architecture patterns that scale, controls that won&#8217;t kill your p99, and how compliance fits in.</p>





<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Ad Impression Pipelines Are a Special Case</h2>



<p class="wp-block-paragraph">Before we talk about controls, here&#8217;s what makes ad pipelines different from a typical enterprise data pipeline.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Scale and Velocity</h3>



<p class="wp-block-paragraph">One impression generates 5–15 downstream events: bid request, bid response, win notice, render, viewability ping, click, post-click. Multiply by hundreds of thousands of impressions per second, and you&#8217;re looking at tens of millions of events per second at peak.&nbsp;</p>



<p class="wp-block-paragraph">Controls that work in fintech: scoring every request, deep packet inspection, full audit logs on the hot path, are breaking at this scale.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Latency Constraints</h3>



<p class="wp-block-paragraph"><a href="https://iabtechlab.com/standards/openrtb/" target="_blank" rel="noreferrer noopener nofollow">OpenRTB</a> – the protocol behind programmatic ad auctions – gives you 100 milliseconds or less for a full round trip.&nbsp;</p>



<p class="wp-block-paragraph">That covers the whole conversation: the supply-side platform (SSP, where publishers sell ad space) sends a bid request, the demand-side platform (DSP, where advertisers bid for it) decides what to offer, and the response comes back. Inside the DSP, the budget for actually deciding the bid is under 50 milliseconds.</p>



<p class="wp-block-paragraph">A lot has to happen in those 50 milliseconds.&nbsp;</p>



<p class="wp-block-paragraph">The DSP has to confirm the request came from a trusted partner, parse the incoming data, pull every signal it has about the user and the page, run a machine-learning model to predict whether the ad will perform, filter out suspicious traffic, and assemble the bid response.&nbsp;</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">Any security check that needs more than a few milliseconds can&#8217;t live here. It has to run in the background after the bid is sent, or at the network edge before the request reaches the bidder at all. Not on the hot path – the time-critical flow where every millisecond translates directly into revenue.</p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Multi-Party Data Flows</h3>



<p class="wp-block-paragraph">Data crosses company boundaries at every hop: publisher SDK → SSP → ad exchange → DSP → DMP → measurement vendor → advertiser.&nbsp;</p>



<p class="wp-block-paragraph">You don&#8217;t control upstream sources. You don&#8217;t control downstream consumers. And even a trusted partner can be compromised, misconfigured, or unknowingly forwarding traffic from sub-sources it hasn&#8217;t fully vetted.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Consent and Identity Complexity</h3>



<p class="wp-block-paragraph">Every impression now carries a consent payload – a small piece of data that records whether the user agreed to tracking and what kinds of processing they allowed.&nbsp;</p>



<p class="wp-block-paragraph">The EU uses <a href="https://iabeurope.eu/transparency-consent-framework/" target="_blank" rel="noreferrer noopener nofollow">TCF v2.2</a> (the Transparency &amp; Consent Framework), the US uses <a href="https://iabtechlab.com/gpp/" target="_blank" rel="noreferrer noopener nofollow">GPP</a> (the Global Privacy Platform), and India and Brazil have their own local equivalents.&nbsp;</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">A missing consent string for an EEA user isn&#8217;t just a data quality issue. It&#8217;s a compliance liability. While pipeline security is more about making sure the right data flows.</p>



<p class="wp-block-paragraph"></p>



<div class="adtech-pipeline-v2-block">
  <style>
    .adtech-pipeline-v2-block,
    .adtech-pipeline-v2-block * {
      box-sizing: border-box;
    }

    .adtech-pipeline-v2-block {
      width: 100%;
      padding: 0;
      background: transparent;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, Arial, sans-serif;
    }

    .adtech-pipeline-v2-block .apv2-figure {
      display: block;
      width: 100%;
      max-width: 1100px;
      margin: 0 auto;
      background: #0b1f34;
      border-radius: 12px;
      overflow: hidden;
    }

    .adtech-pipeline-v2-block svg {
      display: block;
      width: 100%;
      height: auto;
    }
  </style>

  <figure class="apv2-figure">
    <svg viewBox="0 0 1100 330" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="apv2-title apv2-desc">
      <title id="apv2-title">Multi-party impression data flow with trust boundaries</title>
      <desc id="apv2-desc">Seven companies in the impression chain are separated by dashed trust boundaries. Labels above each boundary show the dominant security control at that hop.</desc>

      <defs>
        <linearGradient id="apv2-node-fill" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stop-color="#12324e"></stop>
          <stop offset="100%" stop-color="#0e263c"></stop>
        </linearGradient>
      </defs>

      <rect width="1100" height="330" rx="12" fill="#0b1f34"></rect>

      <g font-family="inherit" font-size="12" font-weight="800" letter-spacing="1.25" fill="#ffbf22" text-anchor="middle">
        <text x="152" y="34">SCHEMA CHECK</text>
        <text x="309" y="34">mTLS</text>
        <text x="466" y="34">mTLS + RATE</text>
        <text x="623" y="34">WORKLOAD ID</text>
        <text x="780" y="34">TOKENIZED IDs</text>
        <text x="937" y="34">CONTRACT</text>
      </g>

      <g stroke="#ffbf22" stroke-width="1.4" stroke-linecap="round" stroke-dasharray="3 6" opacity="0.95">
        <line x1="152" y1="54" x2="152" y2="230"></line>
        <line x1="309" y1="54" x2="309" y2="230"></line>
        <line x1="466" y1="54" x2="466" y2="230"></line>
        <line x1="623" y1="54" x2="623" y2="230"></line>
        <line x1="780" y1="54" x2="780" y2="230"></line>
        <line x1="937" y1="54" x2="937" y2="230"></line>
      </g>

      <g font-family="inherit" text-anchor="middle">
        <g transform="translate(74 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <path d="M-12 24 L-20 32 L-12 40"></path>
            <path d="M12 24 L20 32 L12 40"></path>
            <path d="M-3 21 L3 43"></path>
          </g>
          <text x="0" y="64" fill="#ffffff" font-size="12" font-weight="800">Publisher</text>
          <text x="0" y="78" fill="#ffffff" font-size="12" font-weight="800">SDK</text>
        </g>

        <g transform="translate(231 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <path d="M-12 42 L-12 20 L12 20"></path>
            <path d="M-4 20 L12 36"></path>
            <path d="M12 20 L12 31"></path>
          </g>
          <text x="0" y="74" fill="#ffffff" font-size="13" font-weight="800">SSP</text>
        </g>

        <g transform="translate(388 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <path d="M-14 24 H4"></path>
            <path d="M4 24 L-2 18"></path>
            <path d="M4 24 L-2 30"></path>
            <path d="M14 42 H-4"></path>
            <path d="M-4 42 L2 36"></path>
            <path d="M-4 42 L2 48"></path>
          </g>
          <text x="0" y="64" fill="#ffffff" font-size="12" font-weight="800">Ad</text>
          <text x="0" y="78" fill="#ffffff" font-size="12" font-weight="800">Exchange</text>
        </g>

        <g transform="translate(545 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <circle cx="0" cy="25" r="9"></circle>
            <path d="M-3 25 C-3 21 4 21 4 25 C4 29 -4 28 -4 32"></path>
            <path d="M-10 43 C-2 38 7 38 14 43"></path>
          </g>
          <text x="0" y="74" fill="#ffffff" font-size="13" font-weight="800">DSP</text>
        </g>

        <g transform="translate(702 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <ellipse cx="0" cy="24" rx="12" ry="4"></ellipse>
            <path d="M-12 24 V40 C-12 42 12 42 12 40 V24"></path>
            <path d="M-12 32 C-12 34 12 34 12 32"></path>
          </g>
          <text x="0" y="74" fill="#ffffff" font-size="13" font-weight="800">DMP</text>
        </g>

        <g transform="translate(859 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round">
            <path d="M-16 42 H16"></path>
            <path d="M-10 42 V27"></path>
            <path d="M-2 42 V21"></path>
            <path d="M6 42 V31"></path>
            <path d="M14 42 V36"></path>
          </g>
          <text x="0" y="74" fill="#ffffff" font-size="12" font-weight="800">Measurement</text>
        </g>

        <g transform="translate(1016 75)">
          <rect x="-45" y="0" width="90" height="96" rx="8" fill="url(#apv2-node-fill)" stroke="#25d9ff" stroke-width="1.5"></rect>
          <g fill="none" stroke="#25d9ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
            <circle cx="0" cy="30" r="10"></circle>
            <circle cx="0" cy="30" r="5"></circle>
            <circle cx="0" cy="30" r="1.5" fill="#25d9ff"></circle>
          </g>
          <text x="0" y="74" fill="#ffffff" font-size="13" font-weight="800">Advertiser</text>
        </g>
      </g>

      <g font-family="inherit" font-size="13" font-weight="500" fill="#aebdd3" text-anchor="middle">
        <text x="74" y="234">In apps &amp; sites</text>
        <text x="231" y="234">Sells inventory</text>
        <text x="388" y="234">Runs auctions</text>
        <text x="545" y="234">Bids for advertisers</text>
        <text x="702" y="234">Audience data</text>
        <text x="859" y="234">Verifies delivery</text>
        <text x="1016" y="234">Funds the campaign</text>
      </g>

      <g font-family="inherit" font-size="13" font-weight="500" fill="#aebdd3" text-anchor="middle">
        <text x="550" y="268">
          <tspan fill="#ffbf22" font-weight="800">&#8211; &#8211;</tspan>
          <tspan dx="6">dashed line = trust boundary between two different companies</tspan>
        </text>
      </g>

      <text x="550" y="306" font-family="inherit" font-size="15" font-weight="500" fill="#b7c5d8" text-anchor="middle">
        Each dashed line is a trust boundary between two different companies. Labels above show the dominant security control at that hop.
      </text>
    </svg>
  </figure>
</div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Threat Model: What You&#8217;re Defending Against</h2>



<p class="wp-block-paragraph">Most AdTech security incidents fall into one of four categories. Build controls without picturing each one, and you end up with defenses that look great on slides and fail in production.</p>



<div class="adtech-threat-model-block">
  <style>
    .adtech-threat-model-block,
    .adtech-threat-model-block * {
      box-sizing: border-box;
    }

    .adtech-threat-model-block {
      width: 100%;
      padding: 0;
      background: transparent;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
    }

    .adtech-threat-model-block .atm-figure {
      display: block;
      width: 100%;
      max-width: 900px;
      margin: 0 auto;
      background: #ffffff;
      border: 1.5px solid #e2e8f0;
      border-radius: 18px;
      overflow: hidden;
    }

    .adtech-threat-model-block svg {
      display: block;
      width: 100%;
      height: auto;
    }

    @media (max-width: 640px) {
      .adtech-threat-model-block .atm-figure {
        border-radius: 14px;
      }
    }
  </style>

  <figure class="atm-figure">
    <svg viewBox="0 0 900 760" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="atm-title atm-desc">
      <title id="atm-title">AdTech threat model — four attacker archetypes</title>
      <desc id="atm-desc">A central impression pipeline node with four attacker archetypes pointing inward from each corner: External Attacker, Supply-Chain Compromise, Insider and Misconfiguration, and Adversarial Traffic Fraud.</desc>

      <defs>
        <marker id="atm-arrow-blue" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#3d8db5"></path>
        </marker>

        <marker id="atm-arrow-purple" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#7a49ff"></path>
        </marker>

        <marker id="atm-arrow-teal" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#3f9b91"></path>
        </marker>

        <marker id="atm-arrow-orange" viewBox="0 0 10 10" refX="8.5" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#d87624"></path>
        </marker>

        <filter id="atm-soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
          <feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#0f172a" flood-opacity="0.10"></feDropShadow>
        </filter>
      </defs>

      <rect x="0" y="0" width="900" height="760" rx="18" fill="#ffffff"></rect>

      <!-- Soft dotted rings around the pipeline -->
      <circle cx="450" cy="352" r="118" fill="none" stroke="#d9e2ef" stroke-width="1" stroke-dasharray="2 8" opacity="0.9"></circle>
      <circle cx="450" cy="352" r="160" fill="none" stroke="#e4ebf4" stroke-width="1" stroke-dasharray="2 9" opacity="0.8"></circle>

      <!-- Connector lines -->
      <line x1="238" y1="184" x2="361" y2="288" stroke="#3d8db5" stroke-width="2" stroke-linecap="round" marker-end="url(#atm-arrow-blue)"></line>
      <line x1="680" y1="184" x2="539" y2="288" stroke="#7a49ff" stroke-width="2" stroke-linecap="round" marker-end="url(#atm-arrow-purple)"></line>
      <line x1="238" y1="500" x2="361" y2="416" stroke="#3f9b91" stroke-width="2" stroke-linecap="round" marker-end="url(#atm-arrow-teal)"></line>
      <line x1="680" y1="500" x2="539" y2="416" stroke="#d87624" stroke-width="2" stroke-linecap="round" marker-end="url(#atm-arrow-orange)"></line>

      <!-- Central node -->
      <g transform="translate(450 352)" filter="url(#atm-soft-shadow)">
        <rect x="-95" y="-62" width="190" height="124" rx="14" fill="#101b2d"></rect>

        <g fill="none" stroke="#8b98aa" stroke-width="1.7" stroke-linecap="round">
          <circle cx="-42" cy="-26" r="7"></circle>
          <circle cx="0" cy="-26" r="7"></circle>
          <circle cx="42" cy="-26" r="7"></circle>
          <line x1="-35" y1="-26" x2="-7" y2="-26"></line>
          <line x1="7" y1="-26" x2="35" y2="-26"></line>
        </g>

        <text x="0" y="6" text-anchor="middle" font-family="inherit" font-size="15" font-weight="800" fill="#ffffff" letter-spacing="0.4">
          IMPRESSION
        </text>
        <text x="0" y="25" text-anchor="middle" font-family="inherit" font-size="15" font-weight="800" fill="#ffffff" letter-spacing="0.4">
          PIPELINE
        </text>
        <text x="0" y="48" text-anchor="middle" font-family="inherit" font-size="11" font-weight="600" fill="#aeb8c6" letter-spacing="2">
          YOUR DATA · YOUR HOT PATH
        </text>
      </g>

      <!-- External attacker -->
      <g transform="translate(170 118)" text-anchor="middle">
        <g fill="none" stroke="#3d8db5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <circle cx="0" cy="-22" r="20"></circle>
          <path d="M-20 -22 H20"></path>
          <path d="M0 -42 C-9 -32 -9 -12 0 -2"></path>
          <path d="M0 -42 C9 -32 9 -12 0 -2"></path>
          <path d="M-32 -44 L-14 -32"></path>
          <path d="M-24 -48 L-14 -32 L-31 -31"></path>
        </g>

        <text x="0" y="20" font-family="inherit" font-size="13" font-weight="800" fill="#3d8db5" letter-spacing="1">
          EXTERNAL ATTACKER
        </text>
        <text x="0" y="40" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          Wants raw user data —
        </text>
        <text x="0" y="57" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          device IDs, IPs, behavior
        </text>
      </g>

      <!-- Supply-chain compromise -->
      <g transform="translate(730 118)" text-anchor="middle">
        <g fill="none" stroke="#7a49ff" stroke-width="2" stroke-linecap="round">
          <ellipse cx="-13" cy="-24" rx="15" ry="9"></ellipse>
          <ellipse cx="13" cy="-24" rx="15" ry="9"></ellipse>
          <line x1="-2" y1="-24" x2="2" y2="-24"></line>
        </g>

        <text x="0" y="20" font-family="inherit" font-size="13" font-weight="800" fill="#7a49ff" letter-spacing="1">
          SUPPLY-CHAIN
        </text>
        <text x="0" y="38" font-family="inherit" font-size="13" font-weight="800" fill="#7a49ff" letter-spacing="1">
          COMPROMISE
        </text>
        <text x="0" y="58" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          Compromised partner SDK,
        </text>
        <text x="0" y="75" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          malicious creative payload
        </text>
      </g>

      <!-- Insider / Misconfiguration -->
      <g transform="translate(170 535)" text-anchor="middle">
        <g fill="none" stroke="#3f9b91" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <circle cx="-8" cy="-34" r="8"></circle>
          <path d="M-22 -4 V-16 C-22 -25 -15 -28 -8 -28 C-1 -28 6 -25 6 -16 V-4 Z"></path>
        </g>

        <g fill="none" stroke="#d87624" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
          <path d="M18 -22 L28 -4 H8 Z"></path>
          <line x1="18" y1="-16" x2="18" y2="-9"></line>
          <circle cx="18" cy="-6.5" r="0.8" fill="#d87624"></circle>
        </g>

        <text x="0" y="28" font-family="inherit" font-size="13" font-weight="800" fill="#3f9b91" letter-spacing="1">
          INSIDER /
        </text>
        <text x="0" y="46" font-family="inherit" font-size="13" font-weight="800" fill="#3f9b91" letter-spacing="1">
          MISCONFIGURATION
        </text>
        <text x="0" y="66" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          Misconfigured IAM,
        </text>
        <text x="0" y="83" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          broad query access
        </text>
      </g>

      <!-- Adversarial traffic -->
      <g transform="translate(730 535)" text-anchor="middle">
        <g fill="none" stroke="#d87624" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <rect x="-20" y="-30" width="40" height="30" rx="6"></rect>
          <path d="M0 -30 V-41"></path>
          <circle cx="0" cy="-44" r="2"></circle>
          <circle cx="-9" cy="-17" r="1.5"></circle>
          <circle cx="9" cy="-17" r="1.5"></circle>
          <path d="M-7 -8 H7"></path>
        </g>

        <text x="0" y="28" font-family="inherit" font-size="13" font-weight="800" fill="#d87624" letter-spacing="1">
          ADVERSARIAL TRAFFIC
        </text>
        <text x="0" y="46" font-family="inherit" font-size="13" font-weight="800" fill="#d87624" letter-spacing="1">
          (FRAUD)
        </text>
        <text x="0" y="66" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          Bot networks,
        </text>
        <text x="0" y="83" font-family="inherit" font-size="11.5" font-weight="500" fill="#5f6f86">
          SDK spoofers
        </text>
      </g>

      <!-- Bottom statement -->
      <text x="450" y="690" text-anchor="middle" font-family="inherit" font-size="22" font-weight="500" fill="#68758b">
        Four attacker archetypes the impression pipeline has to defend against. Each one
      </text>
      <text x="450" y="720" text-anchor="middle" font-family="inherit" font-size="22" font-weight="500" fill="#68758b">
        needs its own detection signals and its own response playbook.
      </text>
    </svg>
  </figure>
</div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">External Attackers</h3>



<p class="wp-block-paragraph">The classic case is exfiltration. Someone wants your user-level data – device IDs, IPs, browser fingerprints, behavior history. Pipelines that dump raw events into cloud object storage (S3), analytical databases (ClickHouse), or data warehouses (BigQuery) are prime targets, especially as permissions drift over time.</p>



<p class="wp-block-paragraph">The other pattern is pipeline injection: forged events pushed into the pipeline to inflate counters, skew reports, or trigger payouts. If your ingestion endpoint trusts anything with a roughly correct schema, you&#8217;re exposed.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Insider and Misconfiguration Risks</h3>



<p class="wp-block-paragraph">These incidents rarely make headlines, but they&#8217;re a recurring source of exposure. An engineer with broader access than they actually need exports a query result to a personal account. A service role accumulates permissions over the years until it can read every table. Combine that with the multi-month retention windows that AdTech analytics often still requires, and the blast radius grows fast.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Adversarial Traffic (Fraud)</h3>



<p class="wp-block-paragraph"><a href="https://www.humansecurity.com/learn/topics/what-is-invalid-traffic/" target="_blank" rel="noreferrer noopener nofollow">Sophisticated invalid traffic</a> – bots, click farms, device spoofers, header manipulators – is a security problem dressed as a measurement problem.&nbsp;</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">To the pipeline, fraud is an auth failure: events claim to come from a real human session, and they don&#8217;t. Anti-fraud and pipeline security sit in the same layer and should be designed together.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Supply-Chain Compromise</h3>



<p class="wp-block-paragraph">Compromised publisher SDKs. Malicious bid responses with embedded scripts. Third-party tags that exfiltrate data. The supply chain is where modern AdTech bleeds.&nbsp;</p>



<p class="wp-block-paragraph">MFA on your control plane doesn&#8217;t help if a compromised partner SDK is quietly shipping consent data to an unaffiliated server.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/cyber-threat-intelligence/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-1024x536.png" alt="AdTech Holding guide to cyber threat intelligence in AdTech product lifecycles." class="wp-image-2698 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/AdTech-Holding-Cyber-Threat-Intelligence-In-AdTech-Product-Lifecycle.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/cyber-threat-intelligence/" target="_blank" rel="noreferrer noopener">Cyber Threat Intelligence in the AdTech Product Lifecycle</a></strong></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Architectural Foundations That Hold Up at Scale</h2>



<p class="wp-block-paragraph">Three patterns emerge in AdTech pipelines that withstand both growth and audits.</p>



<h3 class="wp-block-heading">Hot Path vs. Cold Path Separation</h3>



<p class="wp-block-paragraph">The hot path: bid requests, real-time decisioning, win notices, stays lean. The cold path: analytics, ML training, reporting, carries the heavier security machinery.</p>



<p class="wp-block-paragraph">In practice: personally identifiable information (PII) – anything that can identify an individual user, from device IDs to IP addresses – never sits on the hot path longer than it has to.&nbsp;</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">The hot path uses tokens (random, opaque values that stand in for the real identifier). The cold path can re-link to raw values, but only under strict controls. The two paths never share credentials, queues, or service accounts.</p>



<p class="wp-block-paragraph"></p>



<div class="adtech-tokenized-path-block">
  <style>
    .adtech-tokenized-path-block,
    .adtech-tokenized-path-block * {
      box-sizing: border-box;
    }

    .adtech-tokenized-path-block {
      width: 100%;
      padding: 0;
      background: transparent;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
    }

    .adtech-tokenized-path-block .atp-figure {
      display: block;
      width: 100%;
      max-width: 1100px;
      margin: 0 auto;
      background: #ffffff;
      border: 1.5px solid #dfe7f2;
      border-radius: 18px;
      overflow: hidden;
    }

    .adtech-tokenized-path-block svg {
      display: block;
      width: 100%;
      height: auto;
    }

    @media (max-width: 640px) {
      .adtech-tokenized-path-block .atp-figure {
        border-radius: 14px;
      }
    }
  </style>

  <figure class="atp-figure">
    <svg viewBox="0 0 1100 680" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="atp-title atp-desc">
      <title id="atp-title">Hot path vs cold path architecture</title>
      <desc id="atp-desc">Diagram showing tokenization at ingestion, with tokens flowing through hot and cold paths while raw PII is stored in a restricted vault.</desc>

      <defs>
        <marker id="atp-arrow-blue" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#2f8db8"></path>
        </marker>

        <marker id="atp-arrow-teal" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#3c968f"></path>
        </marker>

        <marker id="atp-arrow-gray" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#94a3b8"></path>
        </marker>

        <marker id="atp-arrow-orange" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M0 0 L10 5 L0 10 Z" fill="#d67822"></path>
        </marker>

        <filter id="atp-soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
          <feDropShadow dx="0" dy="5" stdDeviation="8" flood-color="#0f172a" flood-opacity="0.08"></feDropShadow>
        </filter>
      </defs>

      <rect x="0" y="0" width="1100" height="680" rx="18" fill="#ffffff"></rect>

      <text x="315" y="58" text-anchor="middle" font-family="inherit" font-size="14" font-weight="800" letter-spacing="2.2" fill="#d67822">
        TOKENIZATION BOUNDARY
      </text>

      <text x="195" y="80" text-anchor="middle" font-family="inherit" font-size="12.5" font-weight="600" font-style="italic" letter-spacing="0.8" fill="#7d8da7">
        raw PII allowed →
      </text>

      <text x="428" y="80" text-anchor="middle" font-family="inherit" font-size="12.5" font-weight="600" font-style="italic" letter-spacing="0.8" fill="#7d8da7">
        ← tokenized only
      </text>

      <line x1="315" y1="72" x2="315" y2="470" stroke="#d67822" stroke-width="1.3" stroke-dasharray="4 8" opacity="0.85"></line>

      <text x="70" y="246" font-family="inherit" font-size="15" font-weight="700" fill="#60708a">
        External
      </text>
      <text x="70" y="265" font-family="inherit" font-size="15" font-weight="700" fill="#60708a">
        events
      </text>

      <line x1="70" y1="282" x2="150" y2="282" stroke="#94a3b8" stroke-width="2" marker-end="url(#atp-arrow-gray)"></line>

      <g transform="translate(215 238)" filter="url(#atp-soft-shadow)">
        <rect x="-60" y="-45" width="120" height="90" rx="8" fill="#101b2d"></rect>

        <g fill="none" stroke="#ffffff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
          <path d="M-18 -20 H18 L5 2 V22 H-5 V2 Z"></path>
        </g>

        <text x="0" y="23" text-anchor="middle" font-family="inherit" font-size="14" font-weight="800" fill="#ffffff">
          INGESTION +
        </text>
        <text x="0" y="40" text-anchor="middle" font-family="inherit" font-size="14" font-weight="800" fill="#ffffff">
          TOKENIZATION
        </text>
      </g>

      <line x1="215" y1="283" x2="215" y2="404" stroke="#d67822" stroke-width="1.5" stroke-dasharray="4 6" marker-end="url(#atp-arrow-orange)"></line>

      <text x="250" y="364" font-family="inherit" font-size="13" font-weight="700" font-style="italic" fill="#d67822">
        raw → vault
      </text>

      <g transform="translate(215 442)" filter="url(#atp-soft-shadow)">
        <rect x="-60" y="-30" width="120" height="60" rx="8" fill="#fffaf0" stroke="#d67822" stroke-width="1.5"></rect>

        <g fill="none" stroke="#d67822" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
          <rect x="-9" y="-10" width="18" height="16" rx="2"></rect>
          <path d="M-6 -10 V-19 C-6 -24 6 -24 6 -19 V-10"></path>
        </g>

        <text x="0" y="19" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" fill="#d67822">
          VAULT (raw PII)
        </text>
      </g>

      <path d="M276 442 C318 440 337 454 352 470" fill="none" stroke="#d67822" stroke-width="1.3" stroke-dasharray="4 6" marker-end="url(#atp-arrow-orange)" opacity="0.75"></path>

      <text x="365" y="506" font-family="inherit" font-size="13" font-weight="700" font-style="italic" fill="#d67822">
        vault access restricted to a few services
      </text>
      <text x="365" y="525" font-family="inherit" font-size="12" font-weight="500" font-style="italic" fill="#7d8da7">
        (deletion handling, advertiser measurement)
      </text>

      <line x1="275" y1="254" x2="355" y2="156" stroke="#2f8db8" stroke-width="1.7" marker-end="url(#atp-arrow-blue)"></line>
      <text x="300" y="194" font-family="inherit" font-size="13" font-weight="700" font-style="italic" fill="#2f8db8">
        tokens →
      </text>

      <line x1="275" y1="310" x2="355" y2="390" stroke="#3c968f" stroke-width="1.7" marker-end="url(#atp-arrow-teal)"></line>
      <text x="300" y="346" font-family="inherit" font-size="13" font-weight="700" font-style="italic" fill="#3c968f">
        tokens →
      </text>

      <g transform="translate(400 134)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#2f8db8" stroke-width="1.7"></rect>
        <g stroke="#2f8db8" stroke-width="1.5" stroke-linecap="round">
          <line x1="-13" y1="-12" x2="13" y2="-12"></line>
          <line x1="-13" y1="-4" x2="13" y2="-4"></line>
          <line x1="-13" y1="4" x2="13" y2="4"></line>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="1" fill="#2f8db8">
          BROKER
        </text>
      </g>

      <line x1="460" y1="134" x2="535" y2="134" stroke="#2f8db8" stroke-width="1.7" marker-end="url(#atp-arrow-blue)"></line>

      <g transform="translate(595 134)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#2f8db8" stroke-width="1.7"></rect>
        <g fill="none" stroke="#2f8db8" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
          <circle cx="0" cy="-5" r="9"></circle>
          <path d="M0 -13 V-5 L6 0"></path>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="1" fill="#2f8db8">
          DECISION SVC
        </text>
      </g>

      <line x1="655" y1="134" x2="730" y2="134" stroke="#2f8db8" stroke-width="1.7" marker-end="url(#atp-arrow-blue)"></line>

      <g transform="translate(790 134)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#2f8db8" stroke-width="1.7"></rect>
        <g fill="none" stroke="#2f8db8" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
          <path d="M-13 -5 H13"></path>
          <path d="M5 -13 L13 -5 L5 3"></path>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="1" fill="#2f8db8">
          BID RESPONSE
        </text>
      </g>

      <g transform="translate(400 384)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#3c968f" stroke-width="1.7"></rect>
        <g stroke="#3c968f" stroke-width="1.5" stroke-linecap="round">
          <line x1="-13" y1="-12" x2="13" y2="-12"></line>
          <line x1="-13" y1="-4" x2="13" y2="-4"></line>
          <line x1="-13" y1="4" x2="13" y2="4"></line>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="1" fill="#3c968f">
          BROKER
        </text>
      </g>

      <line x1="460" y1="384" x2="535" y2="384" stroke="#3c968f" stroke-width="1.7" marker-end="url(#atp-arrow-teal)"></line>

      <g transform="translate(595 384)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#3c968f" stroke-width="1.7"></rect>
        <g stroke="#3c968f" stroke-width="1.6" stroke-linecap="round">
          <line x1="0" y1="-13" x2="0" y2="10"></line>
          <line x1="-10" y1="-1" x2="10" y2="-1"></line>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="1" fill="#3c968f">
          ENRICHMENT
        </text>
      </g>

      <line x1="655" y1="384" x2="730" y2="384" stroke="#3c968f" stroke-width="1.7" marker-end="url(#atp-arrow-teal)"></line>

      <g transform="translate(790 384)">
        <rect x="-60" y="-32" width="120" height="64" rx="7" fill="#ffffff" stroke="#3c968f" stroke-width="1.7"></rect>
        <g fill="none" stroke="#3c968f" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
          <ellipse cx="0" cy="-10" rx="11" ry="4"></ellipse>
          <path d="M-11 -10 V8 C-11 11 11 11 11 8 V-10"></path>
          <path d="M-11 -1 C-11 2 11 2 11 -1"></path>
        </g>
        <text x="0" y="22" text-anchor="middle" font-family="inherit" font-size="13" font-weight="800" letter-spacing="0.7" fill="#3c968f">
          WAREHOUSE + ML
        </text>
      </g>

      <g transform="translate(1030 134)">
        <rect x="-50" y="-12" width="100" height="24" rx="12" fill="#eefbff" stroke="#2f8db8" stroke-width="1.2"></rect>
        <text x="0" y="4.5" text-anchor="middle" font-family="inherit" font-size="12" font-weight="800" letter-spacing="1.3" fill="#2f8db8">
          HOT PATH
        </text>
      </g>
      <text x="1030" y="166" text-anchor="middle" font-family="inherit" font-size="12.5" font-weight="500" font-style="italic" fill="#66758d">
        sub-50ms decisioning
      </text>

      <g transform="translate(1030 384)">
        <rect x="-50" y="-12" width="100" height="24" rx="12" fill="#f0fffc" stroke="#3c968f" stroke-width="1.2"></rect>
        <text x="0" y="4.5" text-anchor="middle" font-family="inherit" font-size="12" font-weight="800" letter-spacing="1.3" fill="#3c968f">
          COLD PATH
        </text>
      </g>
      <text x="1030" y="416" text-anchor="middle" font-family="inherit" font-size="12.5" font-weight="500" font-style="italic" fill="#66758d">
        analytics &amp; ML
      </text>

      <text x="550" y="594" text-anchor="middle" font-family="inherit" font-size="22" font-weight="500" fill="#68758b">
        Tokenization happens at ingestion. Tokens flow through the hot path (sub-50ms decisioning) and the cold
      </text>
      <text x="550" y="623" text-anchor="middle" font-family="inherit" font-size="22" font-weight="500" fill="#68758b">
        path (analytics, ML). Raw PII goes into the vault. Only a few services — deletion handling, advertiser
      </text>
      <text x="550" y="652" text-anchor="middle" font-family="inherit" font-size="22" font-weight="500" fill="#68758b">
        measurement — can re-link tokens to raw values.
      </text>
    </svg>
  </figure>
</div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Defense in Depth at Every Hop</h3>



<p class="wp-block-paragraph">A bid request travels through a chain of services – an edge proxy at the front, an ingestion service that validates incoming data, a message broker (Kafka or similar) that buffers events, a stream processor that transforms them on the fly, an enrichment service that adds context like audience or geo signals, a sink that writes events to storage, and finally the analytics warehouse.&nbsp;</p>



<p class="wp-block-paragraph">Each hop is a security boundary. Each one should authenticate the previous hop, validate the payload, and re-encrypt for the next leg.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">When teams skip a hop (&#8220;the broker is inside the VPC, we don&#8217;t need mTLS&#8221;), one breach in any adjacent service becomes a breach in the pipeline.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Zero-Trust Service Identity</h3>



<p class="wp-block-paragraph">In a high-volume pipeline, you can&#8217;t trust IP addresses or network topology as identity. Every service needs a cryptographic identity issued by a workload identity system – examples include <a href="https://spiffe.io/" target="_blank" rel="noreferrer noopener nofollow">SPIFFE/SPIRE</a>, <a href="https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html" target="_blank" rel="noreferrer noopener nofollow">AWS IAM Roles Anywhere</a>, or <a href="https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity" target="_blank" rel="noreferrer noopener nofollow">GCP Workload Identity</a>. </p>



<p class="wp-block-paragraph">Every call between services authorizes against that identity, not against network position. Sounds heavy until you realize that without it, one compromised stream-processor pod is enough to own the whole pipeline.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Securing the Ingestion Layer</h2>



<p class="wp-block-paragraph">The ingestion edge is where most attacks start, and where most defenses earn their keep.</p>



<h3 class="wp-block-heading">TLS, mTLS, and Request Authentication</h3>



<p class="wp-block-paragraph">Every connection at ingestion uses <a href="https://datatracker.ietf.org/doc/html/rfc8446" target="_blank" rel="noreferrer noopener nofollow">TLS 1.3</a> – the standard encryption protocol that protects data in transit.&nbsp;</p>



<p class="wp-block-paragraph">Partner-to-partner traffic adds mutual TLS (mTLS): both sides present a certificate that proves their identity, both sides validate the other&#8217;s, and the certificate identity goes into the request log.&nbsp;</p>



<p class="wp-block-paragraph">That alone kills whole classes of bid request forgery.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Schema Enforcement and Sanitization</h3>



<p class="wp-block-paragraph">Treat every incoming OpenRTB request as untrusted input – not because the partner is suspect, but because the data has crossed networks and devices outside your control.&nbsp;</p>



<p class="wp-block-paragraph">Use a strict schema – a precise definition of what each field must look like, written in something like <a href="https://protobuf.dev/" target="_blank" rel="noreferrer noopener nofollow">Protocol Buffers (Protobuf)</a> or <a href="https://json-schema.org/" target="_blank" rel="noreferrer noopener nofollow">JSON Schema</a> – and reject malformed payloads at the edge. Strip unknown extension fields instead of passing them through.&nbsp;</p>



<p class="wp-block-paragraph">Those fields are the most common way unexpected data ends up flowing where it shouldn&#8217;t, often through outdated integrations or compromised intermediaries, not through deliberate action.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Rate Limiting and Behavior-Based Throttling</h3>



<p class="wp-block-paragraph">Capping requests per second per partner is the easy part, but a cap alone doesn&#8217;t tell you when something has actually gone wrong.</p>



<p class="wp-block-paragraph">You also want to watch for sudden shifts in how a partner&#8217;s traffic <em>behaves</em>. If their device-OS mix flips overnight, or click-through rates jump from 4% to 18% in an hour, something is usually off – a compromised SDK, a buggy release on their side, or fraud entering their inventory. When that happens, the safer move is to temporarily slow their traffic to a fraction of normal volume, without cutting them off, until your team has had a chance to look into it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Edge Fraud Filtering</h3>



<p class="wp-block-paragraph">The cheapest fraud is the kind you reject before it enters the pipeline. Keep a tight blocklist of bot IPs, data-center ranges, and bad device fingerprints, and apply it at the edge.&nbsp;</p>



<p class="wp-block-paragraph">Even cutting 5% at the ingest reduces downstream load and the blast radius of any later breach.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Streaming Layer Security: Kafka, Pulsar, Kinesis</h2>



<p class="wp-block-paragraph">Message brokers – <a href="https://kafka.apache.org/" target="_blank" rel="noreferrer noopener nofollow">Kafka</a>, <a href="https://pulsar.apache.org/" target="_blank" rel="noreferrer noopener nofollow">Pulsar</a>, <a href="https://aws.amazon.com/kinesis/" target="_blank" rel="noreferrer noopener nofollow">Kinesis</a>, <a href="https://cloud.google.com/pubsub" target="_blank" rel="noreferrer noopener nofollow">Pub/Sub</a> – sit at the load-bearing middle of most modern impression pipelines. They take events from upstream services, hold them briefly, and stream them to downstream consumers.&nbsp;</p>



<p class="wp-block-paragraph">In practice, they tend to get less security attention than the ingress edge or the warehouse, even though everything in the pipeline flows through them.</p>



<div class="adtech-defense-depth-block">
  <style>
    .adtech-defense-depth-block,
    .adtech-defense-depth-block * {
      box-sizing: border-box;
    }

    .adtech-defense-depth-block {
      width: 100%;
      padding: 0;
      background: transparent;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
    }

    .adtech-defense-depth-block .add-figure {
      display: block;
      width: 100%;
      max-width: 1000px;
      margin: 0 auto;
      background: #ffffff;
      border: 1.5px solid #dfe7f2;
      border-radius: 18px;
      overflow: hidden;
    }

    .adtech-defense-depth-block svg {
      display: block;
      width: 100%;
      height: auto;
    }

    @media (max-width: 640px) {
      .adtech-defense-depth-block .add-figure {
        border-radius: 14px;
      }
    }
  </style>

  <figure class="add-figure">
    <svg viewBox="0 0 1000 660" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="add-title add-desc">
      <title id="add-title">Streaming layer defense in depth</title>
      <desc id="add-desc">Five concentric defense layers around a broker. Each ring represents an additional security control, from audit visibility on the outer perimeter to field-level encryption closest to the data.</desc>

      <defs>
        <filter id="add-soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
          <feDropShadow dx="0" dy="5" stdDeviation="8" flood-color="#0f172a" flood-opacity="0.08"></feDropShadow>
        </filter>
      </defs>

      <rect x="0" y="0" width="1000" height="660" rx="18" fill="#ffffff"></rect>

      <!-- Left concentric rings -->
      <g transform="translate(240 255)">
        <circle cx="0" cy="0" r="210" fill="#f7fdff" stroke="#66d8f4" stroke-width="1.6"></circle>
        <circle cx="0" cy="0" r="175" fill="#f1fbff" stroke="#42c5ea" stroke-width="1.7"></circle>
        <circle cx="0" cy="0" r="140" fill="#eefaff" stroke="#37afd5" stroke-width="1.8"></circle>
        <circle cx="0" cy="0" r="105" fill="#edf9fb" stroke="#2f91b6" stroke-width="2"></circle>
        <circle cx="0" cy="0" r="74" fill="#ecfbfa" stroke="#245e76" stroke-width="2.2"></circle>

        <!-- Ring numbers -->
        <g font-family="inherit" text-anchor="middle" font-weight="800">
          <circle cx="0" cy="-210" r="12" fill="#ffffff" stroke="#66d8f4" stroke-width="1.5"></circle>
          <text x="0" y="-205.5" font-size="14" fill="#2fafd5">5</text>

          <circle cx="0" cy="-175" r="12" fill="#ffffff" stroke="#42c5ea" stroke-width="1.5"></circle>
          <text x="0" y="-170.5" font-size="14" fill="#2fafd5">4</text>

          <circle cx="0" cy="-140" r="12" fill="#ffffff" stroke="#37afd5" stroke-width="1.5"></circle>
          <text x="0" y="-135.5" font-size="14" fill="#2fafd5">3</text>

          <circle cx="0" cy="-105" r="12" fill="#ffffff" stroke="#2f91b6" stroke-width="1.5"></circle>
          <text x="0" y="-100.5" font-size="14" fill="#2f91b6">2</text>

          <circle cx="0" cy="-74" r="12" fill="#ffffff" stroke="#245e76" stroke-width="1.5"></circle>
          <text x="0" y="-69.5" font-size="14" fill="#245e76">1</text>
        </g>

        <!-- Broker icon -->
        <g filter="url(#add-soft-shadow)">
          <rect x="-33" y="-33" width="66" height="66" rx="7" fill="#111c2e"></rect>
          <g stroke="#ffffff" stroke-width="1.6" stroke-linecap="round">
            <line x1="-19" y1="-15" x2="19" y2="-15"></line>
            <line x1="-19" y1="-5" x2="19" y2="-5"></line>
            <line x1="-19" y1="5" x2="19" y2="5"></line>
            <line x1="-19" y1="15" x2="19" y2="15"></line>
          </g>
        </g>

        <text x="0" y="82" text-anchor="middle" font-family="inherit" font-size="14" font-weight="800" fill="#50617a">
          BROKER
        </text>
        <text x="0" y="100" text-anchor="middle" font-family="inherit" font-size="12.5" font-weight="500" font-style="italic" fill="#7d8da7">
          Kafka / Pulsar / Kinesis
        </text>

        <text x="-55" y="218" text-anchor="start" font-family="inherit" font-size="12.5" font-weight="500" font-style="italic" fill="#7d8da7">
          outer → inner = closer to the data
        </text>
      </g>

      <!-- Right legend -->
      <g font-family="inherit">
        <!-- Layer 5 -->
        <g transform="translate(505 72)">
          <circle cx="0" cy="0" r="7.5" fill="#75d4ee" stroke="#2f91b6" stroke-width="1.2"></circle>
          <text x="24" y="0" dominant-baseline="middle" font-size="16" font-weight="800" letter-spacing="0.8" fill="#111c2e">
            LAYER 5 — AUDIT TOPIC
          </text>
          <text x="24" y="26" font-size="13.5" font-weight="500" fill="#566781">
            e.g., every config change &amp; offset reset
          </text>
          <text x="24" y="45" font-size="13.5" font-weight="500" fill="#566781">
            streamed to the SIEM in near-real-time
          </text>
        </g>

        <!-- Layer 4 -->
        <g transform="translate(505 158)">
          <circle cx="0" cy="0" r="7.5" fill="#5ec6e2" stroke="#2f91b6" stroke-width="1.2"></circle>
          <text x="24" y="0" dominant-baseline="middle" font-size="16" font-weight="800" letter-spacing="0.8" fill="#111c2e">
            LAYER 4 — TLS IN TRANSIT
          </text>
          <text x="24" y="26" font-size="13.5" font-weight="500" fill="#566781">
            e.g., every broker ↔ client connection
          </text>
          <text x="24" y="45" font-size="13.5" font-weight="500" fill="#566781">
            encrypted with TLS 1.3
          </text>
        </g>

        <!-- Layer 3 -->
        <g transform="translate(505 244)">
          <circle cx="0" cy="0" r="7.5" fill="#4bb4d1" stroke="#2b85a7" stroke-width="1.2"></circle>
          <text x="24" y="0" dominant-baseline="middle" font-size="16" font-weight="800" letter-spacing="0.8" fill="#111c2e">
            LAYER 3 — BROKER AUTH (SASL / mTLS)
          </text>
          <text x="24" y="26" font-size="13.5" font-weight="500" fill="#566781">
            e.g., every producer &amp; consumer
          </text>
          <text x="24" y="45" font-size="13.5" font-weight="500" fill="#566781">
            authenticates before connecting
          </text>
        </g>

        <!-- Layer 2 -->
        <g transform="translate(505 330)">
          <circle cx="0" cy="0" r="7.5" fill="#3d91b1" stroke="#245e76" stroke-width="1.2"></circle>
          <text x="24" y="0" dominant-baseline="middle" font-size="16" font-weight="800" letter-spacing="0.8" fill="#111c2e">
            LAYER 2 — TOPIC ACLs
          </text>
          <text x="24" y="26" font-size="13.5" font-weight="500" fill="#566781">
            e.g., bid-event topic accepts writes only
          </text>
          <text x="24" y="45" font-size="13.5" font-weight="500" fill="#566781">
            from the ingestion service
          </text>
        </g>

        <!-- Layer 1 -->
        <g transform="translate(505 416)">
          <circle cx="0" cy="0" r="7.5" fill="#245e76" stroke="#111c2e" stroke-width="1.2"></circle>
          <text x="24" y="0" dominant-baseline="middle" font-size="16" font-weight="800" letter-spacing="0.8" fill="#111c2e">
            LAYER 1 — FIELD-LEVEL ENCRYPTION
          </text>
          <text x="24" y="26" font-size="13.5" font-weight="500" fill="#566781">
            e.g., raw device IDs encrypted with a
          </text>
          <text x="24" y="45" font-size="13.5" font-weight="500" fill="#566781">
            KMS-managed key before they hit the broker
          </text>
        </g>
      </g>

      <!-- Bottom caption -->
      <text x="500" y="565" text-anchor="middle" font-family="inherit" font-size="23" font-weight="500" fill="#68758b">
        Defense in depth at the streaming layer. Each ring is an additional control
      </text>
      <text x="500" y="599" text-anchor="middle" font-family="inherit" font-size="23" font-weight="500" fill="#68758b">
        protecting what&#8217;s inside — from audit visibility on the outer perimeter to field-level
      </text>
      <text x="500" y="633" text-anchor="middle" font-family="inherit" font-size="23" font-weight="500" fill="#68758b">
        encryption right around the data.
      </text>
    </svg>
  </figure>
</div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Broker Authentication and ACLs</h3>



<p class="wp-block-paragraph">Every service connecting to the broker,&nbsp; whether it writes events or reads them, has to prove who it is first. The usual ways: a password over an encrypted channel, an OAuth token, or a TLS certificate.&nbsp;</p>



<p class="wp-block-paragraph">On top of that, each topic gets its own read/write rules. The bid-event topic only accepts writes from the ingestion service. The audit topic is only readable by the agent that ships logs to your security monitoring system (the SIEM).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Encryption in Transit and at Rest</h3>



<p class="wp-block-paragraph">Every connection between the broker and a client should be encrypted with TLS – this part isn&#8217;t optional.&nbsp;</p>



<p class="wp-block-paragraph">When events sit on disk in the broker, encrypt them too, with keys managed by a key management service (KMS, for example, <a href="https://aws.amazon.com/kms/" target="_blank" rel="noreferrer noopener nofollow">AWS KMS</a>, <a href="https://cloud.google.com/security/products/security-key-management" target="_blank" rel="noreferrer noopener nofollow">Google Cloud KMS</a>, or <a href="https://www.vaultproject.io/" target="_blank" rel="noreferrer noopener nofollow">HashiCorp Vault</a>). That protects you if someone walks off with a disk, and turns key rotation from a multi-week project into a routine operation.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">For the most sensitive fields – raw user IDs, exact GPS coordinates, IP addresses – encrypt them at the field level <em>before</em> they reach the broker.&nbsp;</p>



<p class="wp-block-paragraph">That way, if someone breaches the broker, they see encrypted blobs, not real personal data. It also makes user-deletion requests genuinely workable: throw away that user&#8217;s key, and the encrypted data becomes unreadable immediately.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Audit Logging and Lineage</h3>



<p class="wp-block-paragraph">Log everything that happens around the broker – every connection, every config change, every time someone resets where a consumer is reading from.&nbsp;</p>



<p class="wp-block-paragraph">Write those logs to a separate write-only stream that your security monitoring system reads in near-real time. Tag each event with where it came from: which service produced it, which partner, which version of the data format.&nbsp;</p>



<p class="wp-block-paragraph">When something breaks, those tags are the difference between a quick investigation and a multi-week dig through old logs.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Protecting PII and Sensitive Identifiers</h2>



<p class="wp-block-paragraph">This is where AdTech engineering and compliance most often collide. Here&#8217;s what works in practice.</p>



<ul class="wp-block-list">
<li><strong>Tokenization.</strong> Replace raw user IDs with random-looking tokens as early in the pipeline as possible, ideally before the first internal broker. The same user always gets the same token, so analytics still works.&nbsp;</li>
</ul>



<p class="wp-block-paragraph">Keep the table that maps tokens back to real IDs in a tightly locked-down vault. Most services work only with tokens. Only the small handful that genuinely need real IDs – the service that handles deletion requests, the one that feeds advertiser measurement – get to query the vault.</p>



<ul class="wp-block-list">
<li><strong>Hashing.</strong> Where you don&#8217;t need to link a user&#8217;s events together across time (you just need to count them, say), hash the ID instead, and mix in a salt (a short random string) before hashing.</li>
</ul>



<p class="wp-block-paragraph">Rotate the salt on a schedule, so that if a dataset leaks, it goes stale rather than staying useful forever.</p>



<ul class="wp-block-list">
<li><strong>Carry consent with every event.</strong> Don&#8217;t just attach the raw consent string from the user – also include the parsed result, so every downstream service can see exactly what&#8217;s allowed (advertising? measurement? analytics?).&nbsp;</li>
</ul>



<p class="wp-block-paragraph">If a service&#8217;s use case isn&#8217;t covered, it drops the event.</p>



<ul class="wp-block-list">
<li><strong>Data minimization.</strong> The cheapest personal data to protect is the kind you never store. Drop fields that no downstream service is actually using. If a measurement vendor stopped using device IDs two quarters ago, stop writing them in logs and the pipeline.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Aggregated, noise-added analytics (differential privacy).</strong> For internal reporting, provide analysts pre-aggregated views with minimal random noise, rather than raw event tables.&nbsp;</li>
</ul>



<p class="wp-block-paragraph">The math still works for the questions the business actually asks, and the risk of any one analyst walking out with raw user data drops sharply.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://adtechholding.com/blog/ad-tech-security-brands-advertisers/" target="_blank" rel=" noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-1024x536.png" alt="adtech-security-for-brands" class="wp-image-2714 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2026/06/adtech-security-for-brands.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/ad-tech-security-brands-advertisers/" target="_blank" rel="noreferrer noopener">Ad Tech Security for Brands and Advertisers: A Practical Checklist</a></strong></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Access Control and Identity</h2>



<p class="wp-block-paragraph">Your pipeline is only as secure as the humans and services allowed to touch it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Service Identity and Workload Isolation</h3>



<p class="wp-block-paragraph">Every service in the pipeline should run with a short-lived credential issued by an identity system, not a long-lived password or API key sitting in a config file.&nbsp;</p>



<p class="wp-block-paragraph">Each credential gets only the permissions that one service actually needs, and you review those permissions every quarter. &#8220;That service used to need warehouse write access two years ago&#8221; is not a reason to keep it.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Human Access and Just-in-Time Elevation</h3>



<p class="wp-block-paragraph">Permanent access to raw impression data goes to a short, documented list of people.&nbsp;</p>



<p class="wp-block-paragraph">Everyone else gets access only when they actually need it. If an engineer needs to query raw logs to debug something, they request access, a teammate approves it, every query gets logged, and the access drops away automatically within a few hours.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Phishing-Resistant Auth and Break-Glass Paths</h3>



<p class="wp-block-paragraph">Admin-level access requires login methods that phishing can&#8217;t beat – <a href="https://www.w3.org/TR/webauthn/" target="_blank" rel="noreferrer noopener nofollow">WebAuthn</a>, hardware security keys, <a href="https://fidoalliance.org/passkeys/" target="_blank" rel="noreferrer noopener nofollow">passkeys</a>.&nbsp;</p>



<p class="wp-block-paragraph">The emergency &#8220;break-glass&#8221; paths into production – the ones you only use when something is on fire- should always page an on-call human. &#8220;The alert was noisy, so we silenced it&#8221; is a recurring root cause of major incidents.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Detection and Response in Real-Time Systems</h2>



<p class="wp-block-paragraph">Detection in AdTech can&#8217;t rely on the same patterns a typical enterprise security tool watches for. The volumes are bigger, the signals are noisier, and you have less time to respond.</p>



<p class="wp-block-paragraph">A few things that work in practice. Watch for sudden changes in the shape of a partner&#8217;s traffic: geographic mix flipping overnight, device-OS mix shifting dramatically, click-through rates jumping from 4% to 18% in an hour.&nbsp;</p>



<p class="wp-block-paragraph">Those are usually the first sign of fraud, a compromised SDK, or a bad release on the partner&#8217;s side. Watch for unusual spikes in unique identifiers: if one partner suddenly sends ten times as many distinct device IDs as yesterday, that&#8217;s often SDK compromise or fingerprint spoofing. Watch for services that start reading data they haven&#8217;t touched in a while — if a downstream service starts pulling from a topic it hasn&#8217;t read in 30 days, treat it as a possible compromise until verified.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">Detection only gets you halfway. You also need response plans specific to AdTech: what to do if a partner&#8217;s API key is compromised, what to do if an analyst pulls more data than they should, what to do during a fraud-driven impression flood, what to do if malicious code is found in a creative payload.&nbsp;</p>



<p class="wp-block-paragraph">Generic enterprise incident-response playbooks miss the point – the attackers in AdTech have a different economic model from the ones hitting typical enterprise IT.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Compliance and Cross-Border Data Flows</h2>



<p class="wp-block-paragraph">Several major privacy laws touch AdTech impression data: <a href="https://gdpr-info.eu/" target="_blank" rel="noreferrer noopener nofollow">GDPR</a> (the EU&#8217;s General Data Protection Regulation), <a href="https://oag.ca.gov/privacy/ccpa" target="_blank" rel="noreferrer noopener nofollow">CCPA/CPRA</a> (California&#8217;s Consumer Privacy Act and its Privacy Rights Act amendment), India&#8217;s <a href="https://www.indiacode.nic.in/handle/123456789/22037" target="_blank" rel="noreferrer noopener nofollow">DPDP Act</a> (Digital Personal Data Protection Act, 2023), Brazil&#8217;s <a href="https://www.gov.br/anpd/en" target="_blank" rel="noreferrer noopener nofollow">LGPD</a> (Lei Geral de Proteção de Dados), and a growing <a href="https://iapp.org/resources/article/us-state-privacy-legislation-tracker/" target="_blank" rel="noreferrer noopener nofollow">patchwork of US state laws</a>. Security architecture has to support compliance by design — not just coexist with it.</p>



<ul class="wp-block-list">
<li><strong>Data residency by design.</strong> Data on EEA (European Economic Area) users shouldn&#8217;t leave EEA infrastructure. Enforce the geographic split at the network routing level, not in your application code. If you rely on application code to decide where data goes, one config mistake can leak the entire EU dataset to a US warehouse.</li>



<li><strong>A working deletion pipeline.</strong> When a user asks you to delete their data (GDPR, DPDP, and others give them this right), you need a documented, tested process for actually doing it – across the hot path, the cold path, backups, partner reports, and your ML training data – within the time limit the law gives you. This is much harder than it sounds when the pipeline writes to dozens of different downstream systems. Build it before you actually need it.</li>



<li><strong>Logs you can show a regulator.</strong> Regulators increasingly want <em>proof</em> that you respected each user&#8217;s consent – not just an assurance that you did. The credible answer is persistent, tamper-proof logs that link every event to the consent it was processed under.</li>



<li><strong>A real list of every third party that touches your data.</strong> Every partner SDK, every measurement vendor, every cloud service that touches impression data should be documented, covered by a contract, and reviewed once a year. (Privacy regulators call these your <em>sub-processors</em>.) The list grows faster than people expect.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Common Pitfalls</h2>



<p class="wp-block-paragraph">Recurring failures across AdTech pipeline security programs:</p>



<ul class="wp-block-list">
<li><strong>Treating encryption as the whole answer.</strong> Encryption in transit and at rest is necessary, not sufficient. Most breaches involve credentials and access patterns, not broken ciphers.</li>



<li><strong>Logging too much personal data into your monitoring tools.</strong> Logs and traces are often the least-secured part of the system — and they routinely end up containing exactly the personal data your production database was carefully guarded against leaking.</li>



<li><strong>Skipping validation on partner traffic.</strong> Bid requests are external input – they&#8217;ve crossed networks and devices outside your control before arriving. Treat them like any other external input: validate, sanitize, and constrain at the edge.</li>



<li><strong>Permissions slowly getting bigger over time.</strong> The cleanest access-control setup decays into a swamp within 18 months if you don&#8217;t actively prune it. Build a regular review schedule from day one.</li>



<li><strong>Treating fraud and security as separate functions.</strong> The fraud and security teams usually fight the same adversary from different angles. Shared signals and joint detections beat parallel efforts.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">A Practical Maturity Model</h2>



<div class="adtech-maturity-ladder-block">
  <style>
    .adtech-maturity-ladder-block,
    .adtech-maturity-ladder-block * {
      box-sizing: border-box;
    }

    .adtech-maturity-ladder-block {
      width: 100%;
      padding: 0;
      background: transparent;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
    }

    .adtech-maturity-ladder-block .aml-figure {
      display: block;
      width: 100%;
      max-width: 980px;
      margin: 0 auto;
      background: #ffffff;
      border: 1.5px solid #dfe7f2;
      border-radius: 18px;
      overflow: hidden;
    }

    .adtech-maturity-ladder-block svg {
      display: block;
      width: 100%;
      height: auto;
    }

    @media (max-width: 640px) {
      .adtech-maturity-ladder-block .aml-figure {
        border-radius: 14px;
      }
    }
  </style>

  <figure class="aml-figure">
    <svg viewBox="0 0 980 800" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="aml-title aml-desc">
      <title id="aml-title">AdTech pipeline security maturity ladder</title>
      <desc id="aml-desc">Five maturity levels for AdTech pipeline security: Ad hoc, Hardened, Mature, Defensible, and Adaptive. Each level lists capabilities and a typical fit.</desc>

      <defs>
        <filter id="aml-soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
          <feDropShadow dx="0" dy="4" stdDeviation="7" flood-color="#0f172a" flood-opacity="0.07"></feDropShadow>
        </filter>
      </defs>

      <rect x="0" y="0" width="980" height="800" rx="18" fill="#ffffff"></rect>

      <!-- Left maturity indicator -->
      <g transform="translate(42 48)">
        <text x="0" y="0" transform="rotate(-90)" text-anchor="end" font-family="inherit" font-size="11" font-weight="800" letter-spacing="2.3" fill="#94a3b8">
          MATURITY GROWS
        </text>
      </g>

      <line x1="44" y1="72" x2="178" y2="178" stroke="none"></line>
      <line x1="44" y1="72" x2="44" y2="182" stroke="#9aa9bd" stroke-width="6" stroke-linecap="round"></line>
      <line x1="44" y1="197" x2="44" y2="307" stroke="#75869e" stroke-width="6" stroke-linecap="round"></line>
      <line x1="44" y1="322" x2="44" y2="432" stroke="#2f82a1" stroke-width="6" stroke-linecap="round"></line>
      <line x1="44" y1="447" x2="44" y2="557" stroke="#2c97bd" stroke-width="6" stroke-linecap="round"></line>
      <line x1="44" y1="572" x2="44" y2="682" stroke="#42bddc" stroke-width="6" stroke-linecap="round"></line>

      <line x1="16" y1="350" x2="16" y2="625" stroke="#d3dce8" stroke-width="1.2" stroke-dasharray="2 6"></line>
      <path d="M16 670 L11 658 H21 Z" fill="#aab7c8"></path>

      <!-- Level 1 -->
      <g transform="translate(90 122)" font-family="inherit">
        <circle cx="0" cy="0" r="27" fill="#ffffff" stroke="#9aa9bd" stroke-width="2.3" filter="url(#aml-soft-shadow)"></circle>
        <text x="0" y="6" text-anchor="middle" font-size="19" font-weight="800" fill="#657389">1</text>

        <text x="45" y="-32" font-size="19" font-weight="800" letter-spacing="0.4" fill="#111c2e">AD HOC</text>
        <text x="136" y="-32" font-size="15.5" font-weight="500" font-style="italic" fill="#8897ad">— just getting started</text>

        <text x="45" y="-3" font-size="15.5" font-weight="500" fill="#53647d">
          TLS at the edge · basic access control · occasional penetration tests
        </text>

        <text x="45" y="25" font-size="14.5" font-weight="700" font-style="italic" fill="#7d8da7">Typical fit:</text>
        <text x="138" y="25" font-size="15.5" font-weight="500" fill="#53647d">most early-stage AdTech businesses</text>

        <text x="45" y="51" font-size="14.5" font-weight="500" fill="#7d8da7">→ fine for now, dangerous at scale</text>
      </g>

      <!-- Level 2 -->
      <g transform="translate(90 247)" font-family="inherit">
        <circle cx="0" cy="0" r="27" fill="#ffffff" stroke="#75869e" stroke-width="2.3" filter="url(#aml-soft-shadow)"></circle>
        <text x="0" y="6" text-anchor="middle" font-size="19" font-weight="800" fill="#526179">2</text>

        <text x="45" y="-32" font-size="19" font-weight="800" letter-spacing="0.4" fill="#111c2e">HARDENED</text>
        <text x="164" y="-32" font-size="15.5" font-weight="500" font-style="italic" fill="#8897ad">— solid baseline</text>

        <text x="45" y="-3" font-size="15.5" font-weight="500" fill="#53647d">
          mutual TLS between services · per-topic read/write rules · documented data flows
        </text>

        <text x="45" y="25" font-size="14.5" font-weight="700" font-style="italic" fill="#7d8da7">Typical fit:</text>
        <text x="138" y="25" font-size="15.5" font-weight="500" fill="#53647d">mid-sized SSPs and DSPs</text>

        <text x="45" y="51" font-size="14.5" font-weight="500" fill="#7d8da7">→ structured logging, basic consent handling</text>
      </g>

      <!-- Level 3 -->
      <g transform="translate(90 372)" font-family="inherit">
        <circle cx="0" cy="0" r="27" fill="#ffffff" stroke="#2f82a1" stroke-width="2.3" filter="url(#aml-soft-shadow)"></circle>
        <text x="0" y="6" text-anchor="middle" font-size="19" font-weight="800" fill="#2f82a1">3</text>

        <text x="45" y="-32" font-size="19" font-weight="800" letter-spacing="0.4" fill="#111c2e">MATURE</text>
        <text x="143" y="-32" font-size="15.5" font-weight="500" font-style="italic" fill="#8897ad">— production-grade</text>

        <text x="45" y="-3" font-size="15.5" font-weight="500" fill="#53647d">
          short-lived service identities · tokenization at ingest · real-time anomaly detection
        </text>

        <text x="45" y="25" font-size="14.5" font-weight="700" font-style="italic" fill="#7d8da7">Typical fit:</text>
        <text x="138" y="25" font-size="15.5" font-weight="500" fill="#53647d">major exchanges, global ad networks</text>

        <text x="45" y="51" font-size="14.5" font-weight="500" fill="#7d8da7">→ hot/cold path separation, just-in-time human access</text>
      </g>

      <!-- Level 4 -->
      <g transform="translate(90 497)" font-family="inherit">
        <circle cx="0" cy="0" r="27" fill="#ffffff" stroke="#2c97bd" stroke-width="2.3" filter="url(#aml-soft-shadow)"></circle>
        <text x="0" y="6" text-anchor="middle" font-size="19" font-weight="800" fill="#2c97bd">4</text>

        <text x="45" y="-32" font-size="19" font-weight="800" letter-spacing="0.4" fill="#111c2e">DEFENSIBLE</text>
        <text x="180" y="-32" font-size="15.5" font-weight="500" font-style="italic" fill="#8897ad">— audit-ready</text>

        <text x="45" y="-3" font-size="15.5" font-weight="500" fill="#53647d">
          field-level encryption · differential privacy · tested deletion pipelines
        </text>

        <text x="45" y="25" font-size="14.5" font-weight="700" font-style="italic" fill="#7d8da7">Typical fit:</text>
        <text x="138" y="25" font-size="15.5" font-weight="500" fill="#53647d">where most regulated AdTech needs to be by 2027</text>

        <text x="45" y="51" font-size="14.5" font-weight="500" fill="#7d8da7">→ lineage-aware monitoring, joint fraud-and-security ops</text>
      </g>

      <!-- Level 5 -->
      <g transform="translate(90 622)" font-family="inherit">
        <circle cx="0" cy="0" r="27" fill="#ffffff" stroke="#42bddc" stroke-width="2.3" filter="url(#aml-soft-shadow)"></circle>
        <text x="0" y="6" text-anchor="middle" font-size="19" font-weight="800" fill="#42bddc">5</text>

        <text x="45" y="-32" font-size="19" font-weight="800" letter-spacing="0.4" fill="#111c2e">ADAPTIVE</text>
        <text x="161" y="-32" font-size="15.5" font-weight="500" font-style="italic" fill="#8897ad">— continuously evolving</text>

        <text x="45" y="-3" font-size="15.5" font-weight="500" fill="#53647d">
          continuous control validation · automated remediation · supply-chain attestation
        </text>

        <text x="45" y="25" font-size="14.5" font-weight="700" font-style="italic" fill="#7d8da7">Typical fit:</text>
        <text x="138" y="25" font-size="15.5" font-weight="500" fill="#53647d">
          a small handful of platforms today; more by 2030
        </text>

        <text x="45" y="51" font-size="14.5" font-weight="500" fill="#7d8da7">
          → formal threat modeling baked into every product launch
        </text>
      </g>

      <!-- Bottom caption -->
      <text x="490" y="728" text-anchor="middle" font-family="inherit" font-size="24" font-weight="500" fill="#68758b">
        A practical maturity model for AdTech pipeline security. Read top-down: each level
      </text>
      <text x="490" y="762" text-anchor="middle" font-family="inherit" font-size="24" font-weight="500" fill="#68758b">
        builds on the last. The color graduates from muted to vivid as controls mature.
      </text>
    </svg>
  </figure>
</div>



<p class="wp-block-paragraph">A simple maturity model helps teams accurately position themselves.</p>



<ul class="wp-block-list">
<li><strong>Level 1 — Ad hoc.</strong> TLS at the edge, basic access control, occasional penetration tests. Most early-stage AdTech businesses live here. Fine for now, dangerous at scale.</li>



<li><strong>Level 2 — Hardened.</strong> Mutual TLS between services, read/write rules on every topic, structured audit logging, documented data flows, and basic consent handling. Where mid-sized SSPs and DSPs need to be.</li>



<li><strong>Level 3 — Mature.</strong> Short-lived service identities, tokenization at ingest, separated hot and cold paths, just-in-time access for humans, and real-time anomaly detection. Required for major exchanges and global ad networks.</li>



<li><strong>Level 4 — Defensible.</strong> Field-level encryption for sensitive identifiers, differential privacy for analytics, lineage-aware monitoring, tested deletion pipelines, joint fraud-and-security operations. Where most regulated AdTech needs to be by 2027.</li>



<li><strong>Level 5 — Adaptive.</strong> Controls are continuously tested in production, common issues are fixed automatically, partner SDKs come with cryptographic proof of integrity, and every new product launch goes through a formal threat-modeling exercise. Few platforms operate at this level today. More will need to.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Closing Thought</h2>



<p class="wp-block-paragraph">The teams that get pipeline security right treat it as a feature of the product, not a tax on speed. It&#8217;s what lets them sign enterprise advertisers, expand into regulated regions, integrate with cautious publishers, and survive the kind of incident that ends competitors.</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d630">Throughput and latency constraints are real. They&#8217;re not an excuse. The patterns in this article are how the best AdTech engineering teams hold the line: at two million events per second, with a 50-millisecond decision window, under three overlapping privacy laws. It&#8217;s possible. It just has to be designed for from the start.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://adtechholding.com/blog/data-pipeline-security-ad-impressions/">Data Pipeline Security in High-Volume Ad Impression Processing</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AdTech Holding at ML Conference Serbia: How We Automate AdTech from the Inside</title>
		<link>https://adtechholding.com/blog/ml-conference-how-we-automate-adtech/</link>
		
		<dc:creator><![CDATA[Olya Mikheeva]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 13:50:07 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AdTech Holding]]></category>
		<category><![CDATA[Event]]></category>
		<guid isPermaLink="false">https://adtechholding.com/?p=2768</guid>

					<description><![CDATA[<p>This year, AdTech Holding attended ML Conference Serbia as a contributor. Two experts took the stage to share their in-house AI systems that are already delivering measurable business impact. No futuristic roadmaps or theoretical concepts: just real systems, real numbers, and honest lessons learned. Sergey Kozlov: AutoLaunch – From Jira Ticket to Live Campaign in [&#8230;]</p>
<p>The post <a href="https://adtechholding.com/blog/ml-conference-how-we-automate-adtech/">AdTech Holding at ML Conference Serbia: How We Automate AdTech from the Inside</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This year, AdTech Holding attended ML Conference Serbia as a contributor. Two experts took the stage to share their in-house AI systems that are already delivering measurable business impact.</p>



<p class="wp-block-paragraph">No futuristic roadmaps or theoretical concepts: just real systems, real numbers, and honest lessons learned.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Sergey Kozlov: AutoLaunch – From Jira Ticket to Live Campaign in 10 Minutes</strong></h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/sergiokozlov/" target="_blank" rel="noreferrer noopener nofollow">Sergey Kozlov, Head of RNA (Rotation &amp; Ad Ranking)</a> at AdTech Holding, presented <strong>‘Automating Ad Operations: Where to Use LLMs, and Where to Keep the Code’</strong>. This is a story about removing a critical bottleneck between the speed of algorithms and the speed of human operations.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">The Problem Nobody Questioned for Years</h3>



<p class="wp-block-paragraph">AdTech Holding’s PropellerAds, a multichannel advertising network, serves more than <strong>2 billion ad impressions daily</strong>, manages <strong>40,000 active campaigns</strong>, and operates across <strong>195+ geographies</strong>.&nbsp;</p>



<p class="wp-block-paragraph">Many clients use PropellerAds SSP to launch campaigns on their own. But for managed-service clients, the process is different: they send their campaign requirements to an account manager, who then coordinates the launch with other teams. At that scale, getting such campaigns live was taking too much time and effort.</p>



<p class="wp-block-paragraph">Turning such a request into a live campaign could take up to five hours, involving six handoffs between teams and a significant amount of repetitive manual work for four specialists.</p>



<p class="wp-block-paragraph">It could take five hours to turn a client brief into a live campaign, with six handoffs between different teams along the way. Four specialists spent much of their time on repetitive manual work.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2023/06/adtech-chatgpt-banner-1024x536.png" alt="adtech-chatgpt-banner" class="wp-image-956 size-full" srcset="https://adtechholding.com/wp-content/uploads/2023/06/adtech-chatgpt-banner-1024x536.png 1024w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-chatgpt-banner-300x157.png 300w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-chatgpt-banner-768x402.png 768w, https://adtechholding.com/wp-content/uploads/2023/06/adtech-chatgpt-banner.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-medium-font-size wp-block-paragraph"><strong><a href="https://adtechholding.com/blog/adtech-how-professionals-at-adtech-holding-use-chatgpt-in-their-work/">How Professionals at AdTech Holding Use ChatGPT in Their Work<br></a></strong><br></p>
</div></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The biggest challenge was the input. Campaign briefs arrived in Jira as unstructured text, often mixing Russian and English, using internal industry slang, and containing implicit requirements.</p>



<p class="wp-block-paragraph">For example, there were abbreviations such as<em> ‘SCPM (‘SmartCPM)’</em>&nbsp; or <em>‘push’</em> (push notifications), as well as vague instructions like ‘<em>Android is mandatory, iOS by exception’.</em></p>



<p class="wp-block-paragraph"><strong>Regular expressions couldn&#8217;t handle these cases well, so the system needed to understand the meaning of the text.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Architecture: LLMs Only Where They Add Value</h3>



<p class="wp-block-paragraph">The solution became a six-stage pipeline orchestrated by an Airflow DAG. The key architectural decision was identifying exactly where an LLM should&nbsp;and should not be used. And, the LLM was responsible for a single task: <strong>extracting structured information from unstructured text</strong>.&nbsp;</p>



<p class="wp-block-paragraph">So, the pipeline works like this:</p>



<p class="wp-block-paragraph"><strong>The LLM is responsible for:</strong></p>



<ul class="wp-block-list">
<li>Understanding mixed-language briefs</li>



<li>Interpreting industry jargon and abbreviations</li>



<li>Extracting campaign settings from unstructured text</li>



<li>Identifying likely targeting options mentioned in the brief, such as ISPs, regions, or other targeting parameters</li>
</ul>



<p class="wp-block-paragraph"><strong>The code is responsible for:</strong></p>



<ul class="wp-block-list">
<li>Matching extracted values to the correct IDs in the system</li>



<li>Applying business rules and validation checks</li>



<li>Selecting the final campaign settings</li>



<li>Deciding whether a campaign can be launched automatically or requires review</li>



<li>Creating the campaign through the Campaign API</li>
</ul>



<p class="wp-block-paragraph"></p>



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AutoLaunch Pipeline</title>
<style>
  .al-wrap *, .al-wrap *::before, .al-wrap *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }

  .al-wrap {
    font-family: 'Segoe UI', system-ui, sans-serif;
    background: #f4f6fb;
    padding: 40px 24px 56px;
  }

  .al-wrap .header { text-align: center; margin-bottom: 40px; }
  .al-wrap .header .eyebrow {
    display: inline-block;
    font-size: 10px; font-weight: 700; letter-spacing: 3px;
    text-transform: uppercase; color: #fff;
    background: #e0001c; padding: 3px 12px; border-radius: 3px;
    margin-bottom: 12px;
  }
  .al-wrap .header h1 { font-size: 24px; font-weight: 900; color: #0a0a1a; line-height: 1.2; }
  .al-wrap .header h1 span { color: #e0001c; }

  .al-wrap .pipeline {
    display: flex; align-items: center;
    max-width: 1060px; margin: 0 auto 32px; gap: 0;
  }

  .al-wrap .step {
    flex: 1; background: #fff; border-radius: 10px;
    border: 1.5px solid #e8e8f0; padding: 14px 12px;
    text-align: center; box-shadow: 0 2px 8px rgba(10,10,40,0.05);
  }

  .al-wrap .step-icon { font-size: 20px; margin-bottom: 6px; }
  .al-wrap .step-title { font-size: 12px; font-weight: 800; color: #0a0a2e; margin-bottom: 3px; }
  .al-wrap .step-sub { font-size: 10px; color: #8888aa; line-height: 1.4; }
  .al-wrap .step-badge {
    display: inline-block; margin-top: 8px;
    font-size: 8px; font-weight: 700; letter-spacing: 1px;
    text-transform: uppercase; padding: 2px 7px; border-radius: 3px;
  }

  .al-wrap .step-source { border-top: 3px solid #8888bb; }
  .al-wrap .step-infra  { border-top: 3px solid #3355cc; }
  .al-wrap .step-llm    { border-top: 3px solid #e0001c; }
  .al-wrap .step-code   { border-top: 3px solid #00aa55; }
  .al-wrap .step-gate   { border-top: 3px solid #ff8800; }

  .al-wrap .badge-infra { background: #eef2ff; color: #3355cc; }
  .al-wrap .badge-llm   { background: #fff0f2; color: #cc0018; }
  .al-wrap .badge-code  { background: #edfff5; color: #007a3a; }
  .al-wrap .badge-gate  { background: #fff8e0; color: #996600; }

  .al-wrap .arrow { width: 24px; flex-shrink: 0; text-align: center; font-size: 13px; color: #c0c0e0; }

  .al-wrap .bottom { display: flex; max-width: 1060px; margin: 0 auto; gap: 12px; }

  .al-wrap .trust { flex: 1.4; display: flex; gap: 10px; }

  .al-wrap .tc { flex: 1; background: #fff; border-radius: 10px; padding: 14px; border: 1.5px solid #e8e8f0; }
  .al-wrap .tc-auto  { border-top: 3px solid #00aa55; }
  .al-wrap .tc-draft { border-top: 3px solid #ff8800; }

  .al-wrap .tc-label { font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 5px; }
  .al-wrap .tc-auto .tc-label  { color: #00aa55; }
  .al-wrap .tc-draft .tc-label { color: #ff8800; }
  .al-wrap .tc-title { font-size: 12px; font-weight: 800; color: #0a0a2e; margin-bottom: 8px; }

  .al-wrap .check { display: flex; gap: 6px; font-size: 11px; color: #555577; margin-bottom: 4px; line-height: 1.3; }
  .al-wrap .dot { width: 5px; height: 5px; border-radius: 50%; margin-top: 4px; flex-shrink: 0; }
  .al-wrap .dg { background: #00aa55; }
  .al-wrap .do { background: #ff8800; }

  .al-wrap .metrics { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }

  .al-wrap .mc {
    background: #fff; border-radius: 10px; padding: 12px 14px;
    border: 1.5px solid #e8e8f0; text-align: center;
    box-shadow: 0 1px 6px rgba(10,10,40,0.04);
  }
  .al-wrap .mv { font-size: 20px; font-weight: 900; color: #e0001c; line-height: 1; margin-bottom: 3px; }
  .al-wrap .ml { font-size: 9px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: #9999bb; line-height: 1.4; }
</style>
</head>
<body>

<div class="al-wrap">

  <div class="header">
    <div class="eyebrow">AutoLaunch · PropellerAds</div>
    <h1>Jira ticket → <span>live campaign</span></h1>
  </div>

  <div class="pipeline">
    <div class="step step-source">
      <div class="step-icon">🎫</div>
      <div class="step-title">Jira Ticket</div>
      <div class="step-sub">Mixed language, jargon, implicit constraints</div>
      <span class="step-badge badge-infra">Source</span>
    </div>
    <div class="arrow">▶</div>
    <div class="step step-infra">
      <div class="step-icon">⚙️</div>
      <div class="step-title">Airflow DAG</div>
      <div class="step-sub">Orchestrator, retryable, every 30 min</div>
      <span class="step-badge badge-infra">Infra</span>
    </div>
    <div class="arrow">▶</div>
    <div class="step step-llm">
      <div class="step-icon">🤖</div>
      <div class="step-title">LLM Extraction</div>
      <div class="step-sub">Free text → structured JSON + confidence score</div>
      <span class="step-badge badge-llm">LLM</span>
    </div>
    <div class="arrow">▶</div>
    <div class="step step-code">
      <div class="step-icon">🔍</div>
      <div class="step-title">Resolver</div>
      <div class="step-sub">Small dicts: context injection · Large dicts: fuzzy matching → IDs</div>
      <span class="step-badge badge-code">Code</span>
    </div>
    <div class="arrow">▶</div>
    <div class="step step-code">
      <div class="step-icon">📐</div>
      <div class="step-title">Business Logic</div>
      <div class="step-sub">Bids · pacing · routing rules, testable in CI</div>
      <span class="step-badge badge-code">Code</span>
    </div>
    <div class="arrow">▶</div>
    <div class="step step-gate">
      <div class="step-icon">🚦</div>
      <div class="step-title">Campaign API</div>
      <div class="step-sub">Auto-launch or Draft → AdOps</div>
      <span class="step-badge badge-gate">Trust Gate</span>
    </div>
  </div>

  <div class="bottom">
    <div class="trust">
      <div class="tc tc-auto">
        <div class="tc-label">🚀 Auto-launch</div>
        <div class="tc-title">High confidence</div>
        <div class="check"><div class="dot dg"></div>LLM confidence above threshold</div>
        <div class="check"><div class="dot dg"></div>Resolver match scores high</div>
        <div class="check"><div class="dot dg"></div>Safe vertical, budget, client</div>
        <div class="check"><div class="dot dg"></div>No business-rule veto</div>
      </div>
      <div class="tc tc-draft">
        <div class="tc-label">👁️ Draft → AdOps</div>
        <div class="tc-title">Requires review</div>
        <div class="check"><div class="dot do"></div>Weak extraction signal</div>
        <div class="check"><div class="dot do"></div>New client · large budget</div>
        <div class="check"><div class="dot do"></div>Regulated vertical (finance…)</div>
        <div class="check"><div class="dot do"></div>Business-rule veto overrides AI</div>
      </div>
    </div>
    <div class="metrics">
      <div class="mc"><div class="mv">10 min</div><div class="ml">Time to launch<br>(was hours)</div></div>
      <div class="mc"><div class="mv">95%</div><div class="ml">Extraction<br>accuracy</div></div>
      <div class="mc"><div class="mv">70%</div><div class="ml">Auto-launch<br>rate</div></div>
      <div class="mc"><div class="mv">$0.10</div><div class="ml">LLM cost per<br>campaign</div></div>
    </div>
  </div>

</div>

</body>
</html>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The team initially tried including large reference lists directly in prompts, but this quickly became expensive and reduced accuracy. Instead, the LLM only identifies likely matches, while the final selection is handled by code.</p>



<p class="wp-block-paragraph">Another important principle was keeping humans in control. The system never launches campaigns blindly. If the model is confident and the campaign meets predefined business rules, it can be launched automatically. However, campaigns from new advertisers, those with large budgets, or those in highly regulated verticals are always sent to Draft status for manual review by the AdOps team.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Results</h3>



<ul class="wp-block-list">
<li>Campaign launch time reduced from several hours to <strong>10 minutes</strong></li>



<li><strong>300+ campaigns per week</strong> processed through AutoLaunch</li>



<li><strong>95% field extraction accuracy</strong> on semantic evaluation datasets</li>



<li><strong>90% successful launches</strong> without AdOps corrections</li>



<li>Approximately <strong>$0.10 LLM cost per campaign</strong></li>



<li><strong>The equivalent of two full-time roles was freed up for higher-value work</strong></li>
</ul>



<p class="wp-block-paragraph">Today, roughly <strong>70% of campaigns</strong> follow the fully automated path, while the remaining <strong>30%</strong> are intentionally routed for review.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Sergey&#8217;s comment</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>What stood out most during the Q&amp;A was how many teams are facing the same challenge: deciding where AI should stop and traditional software engineering should begin. It&#8217;s tempting to push more responsibilities into the model, but our experience shows that the best results come from clearly separating interpretation from execution. If I had ten more minutes, I would have gone deeper into how we evaluate confidence thresholds and design safety mechanisms for production systems.</em></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Ekaterina Orlova: Smart BI: An AI Detective for Performance Anomalies</strong></h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/ekaterina-orlova-ds/?locale=en" target="_blank" rel="noreferrer noopener nofollow">Ekaterina Orlova, Middle Data Scientist at AdTech Holding</a>, presented <strong>‘Smart BI Platform: Building an AI Detective for Performance Anomalies’</strong>, a practical look at how the team reduced investigation time from 30 minutes to just a few minutes through AI-powered diagnostics.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">A typical Monday morning</h3>



<p class="wp-block-paragraph">Imagine opening a dashboard and seeing an alert:</p>



<p class="wp-block-paragraph"><strong><em>Advertiser revenue dropped 40% compared to yesterday.</em></strong></p>



<p class="wp-block-paragraph">What happens next? An analyst starts investigating:</p>



<ul class="wp-block-list">
<li>Checking whether the data is complete</li>



<li>Reviewing CRM logs for recent changes</li>



<li>Looking at performance by GEO</li>



<li>Сhecking traffic quality metrics</li>



<li>Reviewing network incidents</li>



<li>Considering external factors such as holidays, sporting events, or other events that could affect traffic</li>
</ul>



<p class="wp-block-paragraph">One investigation can easily consume <strong>30 minutes</strong>: there may be <strong>1,000 such signals every day </strong>across the network. Manual investigations covered only about <strong>5%</strong> of them, while the remaining 95% often went unexplored.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Two Agents, One Infrastructure</h3>



<p class="wp-block-paragraph">The Smart BI platform is built around two specialized agents that share a common tool layer, including Stats API, CRM Audit, SQL, charting services, Jira, and Slack integrations.</p>



<p class="wp-block-paragraph">The <strong>ReAct agent</strong> handles open-ended analytical questions such as:</p>



<p class="wp-block-paragraph">‘<strong><em>Show the top five advertisers by revenue growth in the US yesterday</em></strong>.’</p>



<p class="wp-block-paragraph">It works iteratively, selecting tools, reviewing results, and continuing its reasoning process. This makes it effective for exploratory analysis.</p>



<p class="wp-block-paragraph">The <strong>Detective agent</strong> operates autonomously.</p>



<p class="wp-block-paragraph">Triggered by an anomaly signal, it receives structured input such as:</p>



<p class="has-background wp-block-paragraph" style="background-color:#d6d6d669">{ advertiser_id, day, metric }</p>



<p class="wp-block-paragraph">and executes a predefined investigation workflow.</p>



<p class="wp-block-paragraph">The system performs nine checks in parallel – including seasonality, campaign pauses, targeting changes, bid modifications, budget limits, and several additional diagnostics, followed by sequential analysis of zones, auctions, and competitive activity.</p>



<p class="wp-block-paragraph">Only after all evidence has been collected does the LLM get involved to synthesize the final report.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Example output:</p>



<p class="wp-block-paragraph"></p>



<div style="background:#d6d6d669;border-radius:10px;padding:20px 24px;font-family:monospace;font-size:14px;line-height:2;display:inline-block;min-width:480px;">
  <div style="display:flex;align-items:center;gap:8px;font-weight:500;font-size:15px;margin-bottom:4px;">
    <span style="color:#e24b4a;font-size:16px;">●</span>
    <span>Revenue drop · Advertiser 12345 · −$4,800 (−42%)</span>
  </div>
  <div style="display:flex;gap:12px;align-items:baseline;">
    <span style="background:#e24b4a;color:#fff;font-size:11px;font-weight:600;padding:1px 6px;border-radius:4px;">HIGH</span>
    <span>Campaigns paused — budget exhausted</span>
    <span style="margin-left:auto;">≈ −$3,100</span>
  </div>
  <div style="display:flex;gap:12px;align-items:baseline;">
    <span style="background:#ba7517;color:#fff;font-size:11px;font-weight:600;padding:1px 6px;border-radius:4px;">MED</span>
    <span>Zone traffic quality drop — zone_id 88421</span>
    <span style="margin-left:auto;">≈ −$900</span>
  </div>
  <div style="display:flex;gap:12px;align-items:baseline;">
    <span style="background:#888780;color:#fff;font-size:11px;font-weight:600;padding:1px 6px;border-radius:4px;">LOW</span>
    <span>Seasonal effect (Mon vs Sun)</span>
    <span style="margin-left:auto;">≈ −$400</span>
  </div>
  <div style="margin-top:6px;font-size:12px;color:#888;">Time: 87 seconds</div>
</div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Four Things That Broke in Production</h3>



<p class="wp-block-paragraph">Ekaterina openly shared the challenges the team encountered while building the platform:</p>



<ul class="wp-block-list">
<li><strong>Context explosion in ReAct agent. </strong>After ten or more tools, APIs could return thousands of rows of data, quickly exhausting available context windows. The scallsolution was a dataset storage layer. Instead of passing raw data back into the model, agents receive dataset schemas and representative samples.</li>



<li><strong>LLMs are bad at math. </strong>The team discovered that arithmetic performed directly by the model could not be trusted. The fix was straightforward: all calculations are delegated to a dedicated Python-based data tool. The LLM never performs computations itself.</li>



<li><strong>The detective was too slow. </strong>Early versions allowed the LLM to orchestrate every investigation step. This dramatically increased execution time. The final architecture moved data collection into a deterministic pipeline running checks in parallel, while the LLM is only used for decision-making at pipeline nodes and final synthesis.</li>



<li><strong>Fifteen years of internal jargon. </strong>Terms such as ‘pre-lander,’ ‘smartlink,’ or ‘rotator’ are familiar within the company but unfamiliar to foundation models. The solution combined a glossary tool with a knowledge base powered by semantic search across historical investigations.</li>
</ul>



<p class="wp-block-paragraph"></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="536" src="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg" alt="KYC in AdTech: novel threats and measures in 2026" class="wp-image-2575 size-full" srcset="https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-1024x536.jpg 1024w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-300x157.jpg 300w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026-768x402.jpg 768w, https://adtechholding.com/wp-content/uploads/2026/03/adtech-holding-kyc-in-adtech-2026.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://adtechholding.com/blog/kyc-and-new-fraud-threats-2026/">How Sumsub and PropellerAds Respond to New Fraud Threats in 2026</a></p>
</div></div>



<p class="wp-block-paragraph"></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Building Trust</h3>



<p class="wp-block-paragraph">Solving technical challenges was only part of the job. The team also had to answer a more important question: how do you get managers to trust an AI system that investigates revenue anomalies and recommends actions?</p>



<p class="wp-block-paragraph">According to Ekaterina, trust depends on two factors.</p>



<p class="wp-block-paragraph">First, <strong>every investigation is fully logged</strong>. Teams can see which tools were used, which datasets were created, how many tokens were consumed, and how much each analysis cost.</p>



<p class="wp-block-paragraph">Second, <strong>managers provide direct feedback on investigation quality</strong>. Their ratings feed evaluation datasets, while comments become part of the knowledge base used to improve future investigations.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Results</h3>



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
  .smartbi-wrap *, .smartbi-wrap *::before, .smartbi-wrap *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }

  .smartbi-wrap {
    font-family: 'Segoe UI', system-ui, sans-serif;
    background: #f4f6fb;
    padding: 28px 20px 36px;
  }

  .smartbi-wrap .header { text-align: center; margin-bottom: 22px; }
  .smartbi-wrap .eyebrow {
    display: inline-block; font-size: 9px; font-weight: 700;
    letter-spacing: 3px; text-transform: uppercase;
    color: #fff; background: #e0001c;
    padding: 2px 10px; border-radius: 3px; margin-bottom: 8px;
  }
  .smartbi-wrap .header h1 { font-size: 20px; font-weight: 900; color: #0a0a1a; }
  .smartbi-wrap .header h1 span { color: #e0001c; }

  .smartbi-wrap .wrap { max-width: 900px; margin: 0 auto; display: flex; flex-direction: column; gap: 8px; }

  .smartbi-wrap .agents { display: flex; gap: 8px; }
  .smartbi-wrap .agent {
    flex: 1; background: #fff; border-radius: 8px;
    border: 1.5px solid #e8e8f0; padding: 10px 12px;
  }
  .smartbi-wrap .agent-react { border-left: 3px solid #1a4bcc; }
  .smartbi-wrap .agent-det   { border-left: 3px solid #e0001c; }

  .smartbi-wrap .atag {
    font-size: 8px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
    padding: 1px 6px; border-radius: 3px; margin-bottom: 4px; display: inline-block;
  }
  .smartbi-wrap .atag-r { background: #eef2ff; color: #1a4bcc; }
  .smartbi-wrap .atag-d { background: #fff0f2; color: #cc0018; }
  .smartbi-wrap .atitle { font-size: 12px; font-weight: 800; color: #0a0a2e; margin-bottom: 2px; }
  .smartbi-wrap .acode  { font-size: 9px; font-family: monospace; color: #7777bb; background: #f4f4fb; border-radius: 4px; padding: 4px 7px; margin-top: 5px; }

  .smartbi-wrap .tool-layer {
    background: #fff; border-radius: 7px; border: 1.5px dashed #c8c8e8;
    padding: 6px 12px; display: flex; align-items: center; gap: 10px;
  }
  .smartbi-wrap .tl-label { font-size: 8px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: #aaaacc; white-space: nowrap; }
  .smartbi-wrap .tl-tools { font-size: 10px; font-family: monospace; color: #9999cc; }

  .smartbi-wrap .pipeline { display: flex; align-items: stretch; gap: 0; }
  .smartbi-wrap .pstep {
    flex: 1; background: #fff; border-radius: 8px;
    border: 1.5px solid #e8e8f0; padding: 9px 10px; text-align: center;
  }
  .smartbi-wrap .pstep-signal  { border-top: 3px solid #8888bb; }
  .smartbi-wrap .pstep-confirm { border-top: 3px solid #e0001c; }
  .smartbi-wrap .pstep-inside  { border-top: 3px solid #1a4bcc; flex: 2; }
  .smartbi-wrap .pstep-outside { border-top: 3px solid #ff8800; flex: 1.4; }
  .smartbi-wrap .pstep-synth   { border-top: 3px solid #e0001c; background: #fff8f8; }

  .smartbi-wrap .ps-label { font-size: 8px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 4px; }
  .smartbi-wrap .pstep-signal  .ps-label { color: #8888bb; }
  .smartbi-wrap .pstep-confirm .ps-label { color: #cc0018; }
  .smartbi-wrap .pstep-inside  .ps-label { color: #1a4bcc; }
  .smartbi-wrap .pstep-outside .ps-label { color: #cc6600; }
  .smartbi-wrap .pstep-synth   .ps-label { color: #cc0018; }

  .smartbi-wrap .ps-title { font-size: 11px; font-weight: 800; color: #0a0a2e; }

  .smartbi-wrap .ps-badge {
    display: inline-block; margin-top: 5px;
    font-size: 7px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
    padding: 1px 6px; border-radius: 3px;
  }
  .smartbi-wrap .badge-par { background: #eef2ff; color: #1a4bcc; }
  .smartbi-wrap .badge-seq { background: #fff4e0; color: #cc6600; }
  .smartbi-wrap .badge-llm { background: #fff0f2; color: #cc0018; }

  .smartbi-wrap .chips { display: flex; flex-wrap: wrap; gap: 3px; justify-content: center; margin-top: 5px; }
  .smartbi-wrap .chip {
    font-size: 8px; font-weight: 600; padding: 2px 6px; border-radius: 3px;
    background: #eef2ff; color: #2244bb; border: 1px solid #c8d4f8;
  }
  .smartbi-wrap .chip-o { background: #fff4e0; color: #995500; border-color: #f0d0a0; }

  .smartbi-wrap .arr { width: 16px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 11px; color: #c8c8e0; }

  .smartbi-wrap .report {
    background: #fff; border-radius: 8px;
    border: 1.5px solid #e8e8f0; padding: 10px 14px;
  }
  .smartbi-wrap .report-alert {
    font-size: 9px; font-family: monospace; color: #cc0018; font-weight: 700;
    background: #fff0f2; border-radius: 4px; padding: 3px 8px; margin-bottom: 8px;
    display: inline-block;
  }
  .smartbi-wrap .ri { display: flex; align-items: baseline; gap: 7px; padding: 5px 0; border-top: 1px solid #f0f0f8; }
  .smartbi-wrap .ri:first-of-type { border-top: none; }
  .smartbi-wrap .rb { font-size: 7px; font-weight: 800; padding: 1px 5px; border-radius: 3px; flex-shrink: 0; }
  .smartbi-wrap .rb-h { background: #fff0f2; color: #cc0018; }
  .smartbi-wrap .rb-m { background: #fff8e0; color: #996600; }
  .smartbi-wrap .rb-l { background: #f0f0f8; color: #6666aa; }
  .smartbi-wrap .ri-text { flex: 1; font-size: 11px; color: #333355; font-weight: 600; }
  .smartbi-wrap .ri-val  { font-size: 11px; color: #cc0018; font-weight: 700; font-family: monospace; }
  .smartbi-wrap .report-time { font-size: 9px; color: #9999bb; margin-top: 6px; text-align: right; }
  .smartbi-wrap .report-time span { color: #1a4bcc; font-weight: 700; }
</style>
</head>
<body>

<div class="smartbi-wrap">

  <div class="header">
    <div class="eyebrow">Smart BI · PropellerAds</div>
    <h1>AI Detective for <span>Performance Anomalies</span></h1>
  </div>

  <div class="wrap">

    <div class="agents">
      <div class="agent agent-react">
        <span class="atag atag-r">ReAct · Conversational</span>
        <div class="atitle">Analyst asks. Agent answers.</div>
        <div class="acode">&#8220;top 5 advertisers by revenue growth yesterday in US&#8221;</div>
      </div>
      <div class="agent agent-det">
        <span class="atag atag-d">Detective · Autonomous</span>
        <div class="atitle">Signal fires. Agent investigates.</div>
        <div class="acode">{&#8220;advertiser_id&#8221;: 12345, &#8220;day&#8221;: &#8220;2026-05-11&#8221;, &#8220;metric&#8221;: &#8220;revenue&#8221;}</div>
      </div>
    </div>

    <div class="tool-layer">
      <div class="tl-label">↕ Shared Tools ↕</div>
      <div class="tl-tools">Stats API · CRM Audit · SQL · Charts · Jira · Slack</div>
    </div>

    <div class="pipeline">
      <div class="pstep pstep-signal">
        <div class="ps-label">Input</div>
        <div class="ps-title">🔴 Signal</div>
      </div>
      <div class="arr">▶</div>
      <div class="pstep pstep-confirm">
        <div class="ps-label">Step 1</div>
        <div class="ps-title">Confirm</div>
      </div>
      <div class="arr">▶</div>
      <div class="pstep pstep-inside">
        <div class="ps-label">Step 2 · Inside View</div>
        <div class="chips">
          <span class="chip">Seasonality</span>
          <span class="chip">Pauses</span>
          <span class="chip">Targeting</span>
          <span class="chip">Rates</span>
          <span class="chip">Limits</span>
          <span class="chip">+4 more</span>
        </div>
        <span class="ps-badge badge-par">9 tools · Parallel</span>
      </div>
      <div class="arr">▶</div>
      <div class="pstep pstep-outside">
        <div class="ps-label">Step 3 · Outside View</div>
        <div class="chips">
          <span class="chip chip-o">Zones</span>
          <span class="chip chip-o">Slices</span>
          <span class="chip chip-o">Drill-down</span>
        </div>
        <span class="ps-badge badge-seq">Sequential</span>
      </div>
      <div class="arr">▶</div>
      <div class="pstep pstep-synth">
        <div class="ps-label">Step 4</div>
        <div class="ps-title">Synthesize</div>
        <span class="ps-badge badge-llm">LLM · once</span>
      </div>
    </div>

    <div class="report">
      <div class="report-alert">🔴 Advertiser 12345 · Mon May 11 vs Sun May 10 · −$4,800 (−42%)</div>
      <div class="ri">
        <span class="rb rb-h">HIGH</span>
        <span class="ri-text">Campaigns paused — budget exhausted · Action: increase daily budget</span>
        <span class="ri-val">≈ −$3,100</span>
      </div>
      <div class="ri">
        <span class="rb rb-m">MED</span>
        <span class="ri-text">Zone traffic quality drop — zone_id 88421 · Action: add to exclusion list</span>
        <span class="ri-val">≈ −$900</span>
      </div>
      <div class="ri">
        <span class="rb rb-l">LOW</span>
        <span class="ri-text">Seasonal — Mon lower than Sun · No action required</span>
        <span class="ri-val">≈ −$400</span>
      </div>
      <div class="report-time">Completed in <span>87 sec</span></div>
    </div>

  </div>
</div>

</body>
</html>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><tbody><tr><td><strong>Metric</strong></td><td><strong>Before</strong></td><td><strong>After</strong></td></tr><tr><td>Investigation time</td><td>30 minutes (manual)</td><td>1–3 minutes</td></tr><tr><td>Signals processed per day</td><td>~15-20</td><td>Up to 1,000</td></tr><tr><td>Coverage</td><td>~5%</td><td>Nearly 100%</td></tr><tr><td>Manager&#8217;s role</td><td>Collecting data across dashboards</td><td>Reviewing ranked causes and making decisions</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>With investigation time reduced from 30 minutes to just a few minutes, managers can now focus on making decisions instead of spending their mornings collecting data from different dashboards.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Ekaterina&#8217;s Perspective</h3>



<p class="wp-block-paragraph">For Ekaterina, Smart BI is not just a conference topic, but one of her main projects this year. That made ML Conference Serbia a good place to share what the team has already learned while building an AI agent for analytics and anomaly investigation.</p>



<p class="wp-block-paragraph">The topic turned out to be very relevant for the audience. Ekaterina says she received more questions than expected, mostly about the challenges the team faced and how they solved them. She also noted that the AI landscape is changing very quickly. Looking back, she would have liked to spend more time on plans and new ideas, because even during the Smart BI project, many AI tools and approaches had already evolved.</p>



<p class="wp-block-paragraph">One idea from another conference talk especially resonated with her: companies should use AI to create more value, not just to cut costs.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The goal shouldn&#8217;t be to replace people, but to help them achieve more with new tools and new skills.</em></p>
</blockquote>



<p class="wp-block-paragraph">Ekaterina also highlighted one important lesson from working with AI inside an AdTech company. Modern models are good at general tasks such as coding, content generation, search, and summarization. But they do not know the company&#8217;s internal context, terminology, or past cases.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>What they lack is domain-specific company knowledge. That&#8217;s why internal knowledge bases and good documentation are becoming so important.</em></p>
</blockquote>



<p class="wp-block-paragraph">Beyond the talks, the conference was also a great opportunity to meet people from different industries, discuss common problems, and exchange practical ideas.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Although the two presentations covered different systems, they shared a common challenge and a common answer.</p>



<p class="wp-block-paragraph">Both teams found that modern models perform well at general reasoning. However, they have no access to the company&#8217;s internal context: its terminology, its history, its business rules. Sergey&#8217;s pipeline ran into this when campaign briefs arrived full of internal shorthand that no base model could parse. Ekaterina&#8217;s Detective hit the same wall with 15 years of AdTech jargon that foundation models had simply never seen.</p>



<p class="wp-block-paragraph">Both teams solved it the same way: not by stuffing more context into prompts, but by building external structures the model can reach when it needs domain knowledge: knowledge bases, glossaries, fuzzy matchers, and semantic search over past investigations.</p>



<p class="wp-block-paragraph"><em><strong>This is probably the most important lesson from both talks: the model is the reasoning engine, but the company&#8217;s knowledge has to live somewhere it can actually reach.</strong></em></p>



<p class="wp-block-paragraph">At AdTech Holding, we continue to share what works in production – including the successes, the failures, and the lessons learned along the way –&nbsp;because practical experience is ultimately more valuable than hype.</p>
<p>The post <a href="https://adtechholding.com/blog/ml-conference-how-we-automate-adtech/">AdTech Holding at ML Conference Serbia: How We Automate AdTech from the Inside</a> appeared first on <a href="https://adtechholding.com">AdTech Holding</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
