Ad Ops Wire
21 subscribers
16 photos
1 link
The insider feed for ad operations: GAM changes, network policy shifts, demand-partner shakeups and the quiet updates that hit your line items before the official changelog does.
Download Telegram
Channel created
Channel photo updated
Protected Audience auctions are splitting your reporting
Confirmed: on-device Protected Audience (formerly FLEDGE) auctions resolve separately from the contextual auction, and GAM reports them in a way that can double-count or strand impressions if your setup isn't reconciled. Ops teams see 'phantom' delivery gaps that are really just two auctions stitched badly.
— Separate Protected Audience line items in your delivery reports
— Reconcile component-auction wins against rendered impressions
Impact: split auctions break naive revenue reconciliation. Confidence: confirmed.
SSP consolidation is collapsing your duplicate paths
Heard: when two SSPs you both work with merge, the acquirer often de-dupes overlapping supply post-close — meaning a publisher who relied on two paths to one DSP wakes up with one, and bid density drops without any setting changing on your end.
— Map which DSPs you reach through more than one SSP
— Flag the overlaps that share an acquirer for path resilience
Impact: M&A quietly thins your demand redundancy. Confidence: rumor.
One publisher ID, twelve seller_ids

Watching: a single SSP relationship can map to multiple seller_ids — one per pub property or per integration. Buyers de-duping at the seller_id level see twelve sellers where there's one entity, inflating your apparent footprint and triggering quality models that penalize sprawl.

— seller_id sprawl reads as low-quality long-tail supply
— Consolidation under owner_domain fixes the optics

Impact: map all your seller_ids to one declared owner_domain so audits see one clean entity. (sourced)
Client-side vs server-side Prebid: the cookie tax
Heard: everyone moving s2s 'for speed' is quietly eating a 20-40% match-rate haircut from server-to-server cookie syncs.
— Client-side: best match rates, full SPO control, but 8-12 bidders maxes out browser CPU and tanks CLS on mobile.
— Server-side: scales to 30+ demand partners, lighter page, but you trust the s2s vendor's auction and lose per-bidder timeout granularity.
— Hybrid: top 4 revenue bidders client-side, long-tail s2s. That's where the real operators live.
Impact: Don't go full s2s on a cookie-dependent stack without measuring match-rate first. (sourced)


Если merchant feed shutdowns — твоя тема, посмотри @deal_wire
The owner_domain field nobody fills out

Watching: sellers.json has an optional owner_domain field that ties an SSP entry to the legal entity that controls it. Almost nobody populates it. Buyers running supply-path audits now use it to collapse the same parent across multiple SSPs — when it's blank, your inventory looks like a fresh seller instead of a known reseller.

— If you resell through 3 SSPs, blank owner_domain hides the duplication from DSP de-dupe
— Buyers reading it as a quality signal, not just a curiosity

Impact: fill owner_domain before a buyer's path-dedup logic decides your seat is the redundant one. (sourced)
DIRECT relationships that are quietly RESELLER

Heard: a recurring audit finding — publishers list an SSP as DIRECT in ads.txt while that SSP's sellers.json marks the same seat as RESELLER. The mismatch is the tell. It usually means a managed-service team is reselling under the pub's name without the pub knowing.

— ads.txt says DIRECT, sellers.json says RESELLER = laundered path
— DSPs increasingly drop bids on the conflict rather than guess

Impact: reconcile your DIRECT/RESELLER tags across both files or watch eligible demand silently shrink. (sourced)
Unified Pricing Rules leak your floors

Confirmed: GAM's Unified Pricing Rules apply one floor to open auction and Open Bidding alike — and that floor is observable. Bidders that lose repeatedly at the same price reverse-engineer your floor curve over a week and shade bids to land a cent above it.

— Static UPR floors = a published price list to anyone testing
— Per-buyer floors and target-CPM rules muddy the signal

Impact: rotate floor logic or add randomized target-CPM rules so the curve isn't trivially mapped. (confirmed)
One to follow

For RPM optimization done right, @LiftLabRPM is the move. Hands-on tests of every RPM lever — lazy load, refresh, sticky units, layout…
Your sellers.json gets crawled hourly

Heard: large DSPs snapshot SSP sellers.json files on a tight cadence — sometimes hourly — and diff them. A seller_id that appears, vanishes, then reappears reads as instability and can get the seat throttled, not just flagged.

— Churning seller_ids looks like spoof-prone inventory
— Confidential entries (name/domain redacted) draw extra scrutiny, not less

Impact: treat sellers.json as a stability signal — stop hot-editing it, stage changes. (rumor)
There is no second price to hide behind

Confirmed: GAM has run a unified first-price auction for years, but plenty of stacks still carry bid-shading logic and reserve assumptions written for second-price behavior. In first-price, every cent of an over-high floor that clears is margin you keep — and every floor that's too high is a blank you eat.

— Old second-price reserve math under-prices first-price inventory
— Bid shading lives buyer-side now, not yours

Impact: re-audit any floor logic older than the first-price switch. (confirmed)
The incomplete flag in your SupplyChain object

Watching: the schain object carries a complete flag — 1 means every hop from publisher to exchange is declared. Drop one reseller node and you must set it to 0, and many DSPs hard-filter complete:0 on premium line items.

— One undeclared intermediary forces complete:0 on the whole chain
— Buyers treat the flag as binary trust, not a nuance

Impact: verify every node declares its upstream, or your fully-legit path gets binned with the spoofers. (sourced)
app-ads.txt and the bundle-ID lookup

Heard: app-ads.txt validation hinges on the developer URL in the store listing pointing to a domain that hosts the file — but the matching key is the store bundle ID, not the app name. A renamed app or migrated developer account quietly breaks the chain and zeroes authorized demand.

— Store developer URL → root domain → /app-ads.txt must align
— Bundle ID is the join key crawlers actually use

Impact: after any store-listing change, re-verify the developer URL resolves to your app-ads.txt host. (sourced)
Protected Audience bids arrive blind

Watching: Privacy Sandbox's Protected Audience runs the interest-group auction in a fenced frame, so the winning ad renders without GAM seeing the user signal that produced it. Your reporting gets a fill with no addressable context attached — reconciliation against the buyer's logs starts diverging.

— Fenced-frame renders break the usual signal-to-revenue audit trail
— Reporting deltas widen as more demand routes through PA

Impact: build a separate reconciliation lane for fenced-frame fills now, before the volume matters. (sourced)
The rebate hiding in the take rate

Heard: some SSPs quote a modest published fee, then earn the spread through buy-side rebates the sell-side never sees. Your effective take looks fine on the seller dashboard; the demand-path study a buyer runs shows a fatter total tax.

— Published seller fee ≠ total path tax once buy-side rebates land
— Buyers cut paths on total tax, not your quoted rate

Impact: ask your SSP for the all-in path cost, not the sell-side fee — that's the number deciding your demand. (rumor)
Key-value targeting you forgot is still firing

Watching: GAM line items keyed on custom key-values from old campaigns keep matching traffic long after the campaign ends if the key still ships in the ad request. Stale targeting quietly diverts inventory to a paused-looking line item that's technically eligible.

— Orphaned key-values = silent inventory leaks
— Inventory shows delivered, revenue doesn't reconcile

Impact: audit which custom key-values your page actually sends vs. what line items target. (sourced)
buyers.json is the mirror nobody checks

Heard: sellers.json gets all the attention, but the DSP-side buyers.json / DemandChain spec lets sellers verify who's actually buying through a path. Adoption is thin, so spoofed buyer identities pass uninspected on the sell side.

— Sellers audit upstream supply but rarely downstream demand
— Thin buyers.json adoption = blind spot for made-for-arbitrage demand

Impact: start logging declared buyer identity per path so you can spot arbitrage flips early. (rumor)