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
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)