Ad Tech Security for Brands and Advertisers: A Practical Checklist

by The Content Team at AdTech 05 June, 2026
thumbnail

There’s nothing dramatic about most ad-security incidents. No zero-days. No nation-state operators. Just a phishing email that looked like a real Google Ads access invitation. An unsigned postback URL nobody got around to fixing. A bank account change request that landed at 4:47 PM on a Friday and got approved by Monday.

The cost is dramatic enough. A Manager Account (MCC) takeover drains agency budgets in hours. A leaked launch creative runs to about $8 million on average in consumer electronics, fashion, and luxury. A forged postback on an open endpoint quietly pays out conversions that never happened.

Each of these starts with one missing control on the advertiser side. A login nobody rotated. An endpoint nobody signed. A token nobody put in a vault. An agency analyst nobody removed when the contract ended.

This is a checklist for brands and advertisers. The order matters because the layers compound: connections, conversion data, credentials, accounts, agency partners, and the brand surface itself. Skip one, and the others stop protecting. Publishers face a parallel set of issues; that’s a separate piece.


The Shape of the Threat

The advertiser surface is layered. Five rings, each wrapped around the one inside it – from the connections your traffic rides on, down to the brand itself. 

Attackers test the outer rings first because they’re cheap to probe: a tracker URL is public, an unsigned postback returns a 200 OK if you guess the format, and a leaked token shows up in code search within minutes. When something gives, they move inward. 

Each layer they cross gives them more leverage on the next, which is why securing one in isolation rarely helps. The point of mapping all five rings of the programmatic surface is to see where the gaps between them actually live.

01

Connections

Outer · Attacker tests first

Anything traveling between a browser, app, or partner server and your tracker, dashboard, or API.

What goes wrong A stray HTTP redirect in the click chain leaks click IDs and source IDs to whoever sits in between.

02

Conversion data

Postbacks · S2S · Pixels

The events that say a sale happened — postbacks, server-to-server calls, pixel fires.

What goes wrong A forged postback on an unsigned endpoint quietly pays out conversions that never happened.

03

Credentials

API keys · OAuth · Secrets

API keys, OAuth refresh tokens, webhook signing keys, BI-tool connectors. Anything that proves you are you.

What goes wrong A token hard-coded into a public repo is scraped within minutes and used to drain billing.

04

Accounts

Logins · Agencies · MCC

Dashboard logins that hold every credential and every dollar of budget — plus the agencies and freelancers who can touch them.

What goes wrong A phishing email mimicking a real Google Ads MCC invitation drains agency budgets in hours.

05

Brand surface

Core · Public face of the campaign

The domain, the email channel, the creative — everything that exists before a campaign even goes live.

What goes wrong A lookalike domain runs ads against your own brand name; a launch creative leaks weeks early.

The layers compound. An HTTPS tracker with an unsigned postback is still exposed. A signed postback with a leaked API key is still exposed. Skip one and the others stop protecting.

  • Connections. Anything traveling between a browser, app, or partner server and your tracker, dashboard, or API. Unencrypted means readable, modifiable, and forgeable.
  • Conversion data. Postbacks, S2S calls, pixel fires. Forge these, and they claim payouts, inflate metrics, and drain budgets.
  • Credentials. API keys, OAuth tokens, tracker secrets, webhook signing keys. Most account incidents start here.
  • Accounts. Dashboard logins that hold every credential, every campaign, every dollar of budget, plus the access list of every agency and freelancer who can touch them. Google’s own scam-warning emails to advertisers and the surge of Manager Account (MCC) takeover phishing show how often the entry point is a clicked link.
  • Brand surface. The domain, the email channel, the creative — everything that exists before a campaign goes live. Lookalike domains, paid-search impersonation, and leaked launch assets all sit here.

Nothing exotic. The defenses aren’t either.


HTTPS and TLS

Every URL that touches a campaign – landing page, tracker, postback, API, dashboard – should use HTTPS with TLS 1.2 or higher. OpenRTB v3.0 makes this mandatory for programmatic; the imp.secure flag in bid requests marks a publisher slot as requiring secure creatives, so non-secure assets get filtered out before they serve.

The usual failure isn’t the landing page. It’s a stray HTTP redirect in the click chain: a 302 through a non-HTTPS hop that leaks click IDs, source IDs, and any URL parameters.

What to check:

  • Every URL in the click flow is HTTPS, end to end.
  • Tracker and reporting domains carry an HSTS header so browsers can’t downgrade.
  • TLS certificates are valid and not self-signed for any user-facing functionality.
  • TLS 1.0 and 1.1 are disabled.


Postbacks and S2S Tracking

A postback is the request a tracker sends to record a conversion. In most setups, it carries the click ID and maybe a sub-source identifier – the payout amount itself usually lives on the tracker side, tied to the offer’s configuration, not in the URL. What a postback URL is and how S2S tracking works covers the mechanism. 

The security problem is simpler than the mechanism: if anyone can guess the URL, anyone can fire it. The tracker logs a conversion. The configured payout for the offer is paid.

Unsigned · Default

Attacker

scraped click IDs
from logs

GET /conv?id=ABC123&sub=src-7

Tracker

checks click-ID
only

Accepted

conversion logged · offer-config payout paid

Anyone with the URL can fire it. No validation beyond “does the click ID exist.” The payout amount isn’t in the URL — the tracker pays out whatever the offer config says.

Signed · HMAC + Timestamp

Attacker

no shared secret

POST /conv
X-Signature: forged · X-Timestamp: stale

Tracker

verifies HMAC
server-side

Rejected

signature mismatch · request dropped

HMAC + timestamp + click-ID binding. Signature covers click ID, event ID, and timestamp. Standard in modern webhooks and mobile attribution platforms; traditional affiliate-tracker adoption is uneven.

Four recurring failures:

  • Open endpoint. No validation beyond “does the click ID exist.” Anyone who knows the format can forge a conversion.
  • Secret in the URL. Some integrations append a “secret” query parameter. Logs, browser history, referrers – it isn’t a secret anymore.
  • No replay protection. A captured signed request can be re-sent. Same conversion claimed twice.
  • Stale shared secret. Handed to a partner three years ago, copy-pasted into a wiki, forwarded across five account managers. Also, not a secret.

The right answer depends on what the network supports. The strongest pattern used by mature webhook systems like Stripe, GitHub, and the major mobile attribution platforms is HMAC signing: a keyed hash that proves the request originated from something that holds your shared secret, as defined in RFC 2104

Include a timestamp, validate the signature server-side, and reject anything outside a short window. Adoption in traditional affiliate tracking is uneven; many networks still rely on IP allowlisting plus click-ID uniqueness rather than signed payloads. 

Networks publish their own S2S setups; for example, PropellerAds documents its S2S conversion-tracking integration. Industry guidance consistently names the same three defenses: IP allowlisting, signed requests where supported, and strict click-ID validation against the original click record.

A working policy:

  • Where signing is supported: the signature lives in a header, not a query parameter, and covers the click ID, the event ID, the timestamp, and any revenue value the source actually passes.
  • The server rejects anything older than a few minutes.
  • One click ID maps to one conversion. The second fire is dropped or flagged.
  • Where signing isn’t supported: lock the endpoint to the partner’s known IPs and keep click IDs long, random, and unguessable.
  • Whatever secrets or tokens you do use, rotate on a schedule, owned by a named person, not a shared inbox.

This won’t catch every form of conversion fraud. It removes the cheapest one: a forged HTTP request.


API Keys, Tokens, and BI Pipes

Every ad-platform integration is a credential. The token that pulls campaign data into Looker. The refresh token that lets a bidding script raise budgets overnight. The OAuth grant the agency’s audience-sync tool got two years ago, and nobody has revoked. The Zapier zap that’s been firing every Tuesday since 2023 from an account no one in marketing remembers setting up. 

Some carry write access to the budget; the read-only ones still expose campaign and audience data. In most organizations, none of these sit in the same secret manager that holds the database password.

Okta’s API security reference and current API key guidance translate cleanly to ad tech:

  • Use OAuth where it’s offered. OAuth is the standard protocol that lets a third-party tool act on your account without ever holding your password – it uses short-lived access tokens and refresh tokens that have built-in expiration. The Google Ads API requires multi-factor authentication (MFA) for new OAuth refresh tokens since April 21, 2026. Where scopes are available, request the narrowest one: read-only for reporting, no write scope when campaigns won’t be changed.
  • Rotate on a schedule. 90 days for keys touching billing or campaign control. Annual for read-only. Overlap old and new keys during the swap.
  • Secret manager, not code. Hard-coded tokens in repos are a recurring leak pattern. A secret manager gives one place to revoke from and an audit trail of who read what.
  • No secrets in URLs. Holds for dashboards, webhooks, BI exports — anywhere URLs end up in logs.
  • BI tools are part of the credential surface. A Looker or Tableau connector holds a refresh token with access to the ad account. If the BI workspace has weak access controls, shared service accounts, no MFA, and broad permissions, the credential is only as safe as the workspace. This is the pattern that often sneaks past advertiser security reviews because the credential isn’t owned by marketing.


Account Access and Agency Relationships

The login layer is where most ad security incidents begin. 

2026 account-takeover reports across ecommerce and media keep pointing to the same recurring root causes: credential stuffing against accounts that lack a second factor, and session-cookie phishing through reverse-proxy kits. 

Agency relationships add to the surface – every partner with manager access is another entry point.

Brand

Acme Co

Agency MCC

Manager Account · Google Ads

Risk concentration Compromise here propagates to every linked brand account at once.

Users on US account

Admin
In-house ops lead
Standard
Agency campaign lead
Read-only
Agency analyst
Standard ⚠ Stale
Ex-agency analyst · off-boarded 8 months ago, still on the access list
Common failure Unlinking the manager account doesn’t remove individuals who were added directly. Every active user under the agency is a separate off-boarding step.
Same structure on Meta. Business Manager is the equivalent parent container, with the same propagation behavior and the same off-boarding gaps. The agency-staff list is maintained separately from the partner-level access — both need to be audited when an engagement ends.

The login layer:

  • MFA on every account that touches money or campaigns. Ad platform, tracker, BI, and the reset email behind them. A password manager with 2FA codes is fine. A passkey is better.
  • Passkeys where the platform supports them. Google Ads is rolling out passkey-required steps for sensitive actions. Passkeys bind to the legitimate origin, so the adversary-in-the-middle phishing kits that intercept SMS and authenticator codes can’t relay them.
  • Single sign-on (SSO) where the ad platform supports it – solid for Google Ads through Google Workspace, enterprise Meta Business Manager, and the major DSPs; spottier elsewhere. SSO lets employees log in to ad platforms with their corporate identity (Microsoft Entra, Okta, Google Workspace) instead of a per-platform account. HR off-boarding then removes ad access automatically.

The agency layer:

  • Map your MCC structure. Google’s Manager Account (MCC) model lets an agency hold a parent account linked to multiple brand accounts. Meta’s Business Manager works the same way. Convenient for the agency, but a compromised MCC propagates to every linked account.
  • Off-board agencies properly. Start by unlinking accounts from the manager account. Then, audit linked users one at a time, remove individual emails from the former agency, and confirm ownership stays on the brand. Meta has equivalent flows. A common failure: unlinking the MCC but leaving individual agency staff on the account.
  • Separate roles inside the account. Read-only for reporting users, separate approval for billing, scoped permissions per function.
  • Watch the reset email. The email behind the account is the account. MFA, strong password, ideally a passkey.
  • Verify access invitations out of band. MCC-takeover phishing mimics real invitation emails. Confirm any grant request through a known channel before clicking, and audit linked users regularly – weekly is a reasonable cadence for high-spend accounts.


Brand Spoofing and the Domain Surface

The brand itself is part of the attack surface. Lookalike domains, paid-search impersonation, and spoofed email all turn the brand’s own reputation against it. 

Zscaler ThreatLabz analysis of typosquatting and brand impersonation documented roughly 10,000 malicious domains across 30,000 brand-impersonation candidates in one scan; the Netcraft 2026 brand protection guide treats time-to-detect and time-to-takedown as primary metrics.

Authenticate email. Without controls, anyone can send mail pretending to be from your brand’s domain. Three records together stop this. 

  • SPF lists the servers allowed to send on your behalf. 
  • DKIM signs each message so the recipient can verify that it hasn’t been tampered with. 
  • DMARC tells receivers what to do when a message fails SPF or DKIM – set its policy to quarantine (route fakes to spam) or reject (block them outright). 
  • With those three in place, BIMI adds a verified brand logo next to authenticated emails in Gmail, Yahoo, and Apple Mail, so recipients see a visual cue that the message is real. BIMI without DMARC enforcement is decoration.

Monitor lookalike domains. New registrations resembling the brand should generate an alert. Certificate Transparency (CT) logs let monitoring tools catch lookalikes the moment a TLS certificate is issued. Specialist vendors handle takedown. The pattern isn’t theoretical: Adex documented one case where the typosquat propelerads.com (single “l”) sat dormant since 2013, then got repurposed to host defamatory content targeting the real ad network through brand-misspelling keyword stuffing.

Watch paid search for unauthorized brand bidding. A separate team or vendor bidding on the brand’s own keywords without permission is a recurring pattern. Performance teams see it in search-term reports; brand teams see it in trademark monitoring. Feed both into the same triage.

Use platform brand-protection programs. Google’s verified advertiser program and Meta’s verified business badge increase the cost of ad impersonation. They aren’t a substitute for the controls above.

Hold defensive registrations for the obvious variants. Common typos, plausible country-code versions, and the dozen most visible homoglyphs. The goal isn’t to register everything, just to deny the obvious dozen.


Creative and Asset Leaks

Leaks cost real money. A 2023 industry study put the average cost of a leaked product-launch visual at around $8 million, with consumer electronics, fashion, and luxury most exposed. The path is consistent: creative crosses an agency, a production partner, a media buyer, a verification vendor, and a measurement platform. Each handoff is a possible leak.

The defenses are mostly access hygiene applied to creative-ops tools.

  • Creative-ops tools are a credential surface. Frame.io, Wrike, shared Drive folders, Asana, Dropbox links. Same MFA, role separation, and off-boarding habits as ad accounts. A freelance editor who finished a project six months ago shouldn’t still have access to the brand’s working folder.
  • Expiring, view-only links by default. Most DAM tools support time-bound, download-disabled sharing. For pre-flight creative, that should be the default. Per-recipient watermarks tied to identity are cheap and surface the source if a leak happens.
  • Embargo as legal + technical control. A signed embargo without technical controls is enforceable in court but not in practice. Per-recipient links, view-only access, and download logging make the contract operational.
  • Audit access quarterly. If this person stopped working with the brand tomorrow, would they still have access to next quarter’s creative? If yes, the access is wrong.
  • Sub-vendor exposure. Agencies hire freelancers, freelancers hire editors, and editors share files with sound designers. Without a sub-vendor clause in the agency contract, the brand has no visibility into who actually touched the file.


Monitoring and Incident Readiness

Ad-security incidents often surface after the fact, not in real time. A Monday-morning look at the weekend spend report shows a spike nobody scheduled. The agency Slack thread starts mid-afternoon about an MCC nobody can log into. A customer-support ticket gets escalated up with a screenshot of an ad served from a brand-lookalike domain. By the time the picture comes into focus, the spend is gone, and the takedown takes weeks. The pattern that keeps showing up in post-mortems: the controls were in place, the monitoring wasn’t.

A single dashboard with a few signals, checked on a cadence, beats a thick policy document that no one reads.

Login locations

Last 24h

San Francisco, US · Chrome / macOS today · 09:14
Lagos, NG · Firefox / Windows today · 03:22

API token volume

Flagged

Postback rate by source

events/hr

src-1 src-2 src-3 src-7 src-8 src-9

Linked-user changes

Last 7 days

05-29 14:22 agency-newhire@external-3 Added Admin
05-27 09:15 john.k@brand.com Added Standard
05-25 16:40 jane.s@brand.com Removed
05-22 11:03 old-lead@former-agency Removed

Lookalike-domain alerts

Flagged
acmeco-help.com registered 05-28 Pending takedown
acme-co.com (Cyrillic e) registered 05-30 Investigating
acmeco.support registered 04-12 Resolved

What to watch:

  • Login anomalies. New countries, new devices, login spikes outside working hours. Most platforms surface this; the work is reviewing it on a cadence.
  • API token behavior. Volume, scope drift, failures. A token that suddenly fails authentication a hundred times in an hour is usually being probed.
  • Postback volume by source. Sudden spikes from one IP or source ID, especially outside business hours.
  • Linked-user and account-config changes. Any unscheduled edit to the access list, billing details, or manager link should trigger an alert. Both takeover playbooks and agency mistakes show up here first.
  • Brand-surface alerts. Lookalike-domain registrations, new certificates issued for variants, unauthorized brand-keyword bidding — same page as the technical signals.

When something does go wrong, the response is faster when it’s written down. A one-pager covers it: who to call, which credentials to rotate first, where the backup contact lives, and what to tell partners.


A Short Checklist to Leave With

If only one section gets acted on, this one.

Technical baseline:

  • HTTPS end-to-end. HSTS on tracker and reporting domains.
  • Postback endpoints locked down — signed (HMAC + timestamp + click-ID binding) where the network supports it, IP-allowlisted with unguessable click IDs where it doesn’t. Secrets owned by a named person, rotated.
  • OAuth where offered. API keys in a secret manager, rotated. BI tools held to the same standard as the ad platform.

Account and agency:

  • MFA everywhere. Passkeys were supported. SSO, where the ad platform supports it, tied to your corporate identity provider.
  • Documented MCC / business-manager structure. Off-boarding playbook for every agency.
  • Weekly linked-user audits on high-spend accounts.

Brand and creative:

  • DMARC at quarantine or reject, with SPF and DKIM aligned. BIMI where you qualify.
  • Lookalike-domain monitoring with a takedown workflow.
  • Default to expiring, view-only links for pre-flight creative. Quarterly audits of creative-ops tool access.
  • Sub-vendor clauses in agency contracts.

Detection:

  • One page with login anomalies, API usage, postback volume, linked-user changes, and lookalike-domain alerts.
  • A one-page incident plan: contacts, rotation order, partner-communication script.


The Ownership Gap

None of this is advanced. It’s the baseline that absorbs the everyday incidents. The advanced work: supply-path graph analysis, behavioral fraud modeling, pipeline-level engineering, red-teaming, sits on top. It doesn’t replace it.

Every section above ends in the same place: a named owner. The controls themselves are published in every vendor’s help center. The decisive step is naming someone, on the advertiser side, whose job it is to apply them. Enable a checkbox. Sign a request. Rotate a token. Audit a list. Each of these has to live on a real person’s calendar.

Postback endpoints sit between an agency, a tracker vendor, and in-house ops. MCC structures sit between marketing operations and the agency. BI connectors live in workspaces that the security team doesn’t audit. Brand domains sit between brand, legal, and IT. Five teams, none of whom think “ad-platform security” is their job. The gap between the controls and the practice is where incidents live.

So:

  • Ownership comes first. Naming the person responsible for each layer is the actual fix.
  • The layers go in order. Connections, postbacks, credentials, accounts, brand surface. Skipping ahead leaves the earlier layers undefended.
  • Monitoring beats policy. A single dashboard with five signals someone actually checks beats a forty-page document nobody reads.
  • Agency relationships are an access boundary. Off-boarding matters as much as on-boarding.
  • Advanced work goes on top of the baseline. The baseline still has to be real before the rest pays off.

The basics compound. HTTPS with an unsigned postback is still exposed. A signed postback with a leaked API key is still exposed. A locked-down API with an account without MFA is still exposed. An account with MFA, but an unmonitored brand domain is still exposed.

Finish the chain.

Latest News

adtech-security-for-brands
05 June, 2026

What if your biggest ad security risk is one forgotten…

AdTech Holding guide to cyber threat intelligence in AdTech product lifecycles.
04 June, 2026

What if attackers already have a roadmap for your next…