Prompt
How do I set up a publisher ad stack for routing demand sources and optimizing floor prices?
Latest observation
Here’s a practical way to set up a publisher ad stack for routing demand sources and optimizing floor prices.
1) Define your monetization goals
Before wiring anything together, decide what you’re optimizing for:
- Highest revenue
- Fill rate
- User experience / latency
- Yield by geo/device/format
- Direct demand protection
This determines how aggressive your routing and floor strategy should be.
2) Build the core ad stack layers
A typical publisher stack looks like this:
-
Ad server
- Manages campaign delivery, direct deals, line items, targeting, pacing, and reporting.
- Commonly: Google Ad Manager or similar.
-
Header bidding / prebid layer
- Sends bid requests to multiple SSPs or exchanges in parallel.
- Helps expose inventory to more demand sources before the ad server decision.
-
SSPs / exchanges / networks
- External demand sources bidding on your inventory.
-
Floor price management
- Sets minimum acceptable prices by segment to avoid underselling inventory.
-
Analytics / reporting
- Tracks auction outcomes, revenue, latency, win rates, and timeout behavior.
3) Set up demand routing
You want to route demand based on inventory quality and expected yield.
Common routing methods
- Direct deals first
- Reserve premium inventory for guaranteed buyers.
- Header bidding first
- Let multiple demand sources compete before the ad server decision.
- Dynamic allocation
- Route traffic differently based on geography, device, ad unit, user value, or viewability.
Practical routing logic
Segment your traffic by:
- Geo
- Device type
- Browser/app
- Ad unit size
- New vs returning users
- Page category / content vertical
- Viewability / scroll depth
- Historical CPM tiers
Then assign demand sources accordingly:
- Premium desktop US traffic → highest-value SSPs + direct deals
- Long-tail geo traffic → broader network coverage
- Mobile app traffic → in-app partners / SDK bidders
- Specific formats like outstream/native/video → format-specialized demand
Important routing controls
- Timeouts: Don’t let slow bidders harm page latency.
- Price granularity: Use different bucket ranges by segment.
- Deal prioritization: Protect guaranteed or strategic demand.
- Fallbacks: If top demand doesn’t return, move to secondary sources.
4) Configure floor prices properly
Floor pricing is where many publishers overdo it. A floor that’s too high reduces fill; too low leaves money on the table.
Use segment-based floors
Avoid one global floor. Set floors by:
- Geo
- Device
- Ad unit
- Browser
- Traffic source
- Audience segment
- Format
Example:
- US desktop leaderboard: higher floor
- ROW mobile banner: lower floor
- Video inventory: much higher floor than display
Floor strategy options
- Static floors
- Simple, easy to manage, but not responsive.
- Dynamic floors
- Updated based on observed bid distributions and win rates.
- Smart floors / algorithmic floors
- Use data to estimate the bid landscape and set floors per segment.
Best practice
Set floors around the point where:
- Fill rate starts to drop sharply
- CPM gains flatten out
- Bid density is strong enough to support higher thresholds
A good floor strategy balances:
- Revenue per impression
- Match rate
- Viewability
- Latency
5) Implement auction logic
If you’re using header bidding, your auction stack should look like:
- Ad request triggers
- Header bidding sends parallel requests to SSPs
- Bids return
- Floor price is applied
- Winning bid is passed to the ad server
- Ad server compares:
- Direct line items
- Programmatic demand
- Guaranteed deals
- Highest eligible value wins
Decide the auction type
- First-price auctions are now common
- You may still need price adjustments and bid shading support depending on your setup
6) Use data to optimize floors and routing
You need regular analysis of:
- Bid landscape by segment
- Win rate by floor
- CPM by SSP
- Timeout rates
- Viewability
- Latency
- Revenue per session/pageview/user
Key metrics to watch
- eCPM
- Fill rate
- Win rate
- Bid density
- Timeout percentage
- Latency
- Revenue per thousand sessions
- Revenue uplift by segment
Optimization loop
- Start with conservative floors
- Collect auction data
- Identify high-demand segments
- Raise floors where bid density supports it
- Lower floors on weak segments to preserve fill
- Rotate or remove underperforming demand sources
- Repeat weekly or biweekly
7) Add demand source governance
Not all demand sources are equal. Rank them by:
- Revenue contribution
- Bid rate
- Win rate
- Latency
- Fraud/quality signals
- Deal reliability
You should:
- Remove slow bidders
- Penalize low-quality or low-fill partners
- Prioritize high-quality partners on premium inventory
- Use adapters or wrappers that allow easy control
8) Prevent common mistakes
Avoid:
- One universal floor price
- Too many bidders causing latency
- Ignoring direct sales protection
- Blindly trusting SSP-reported CPMs
- Over-optimizing for CPM and hurting fill
- Using stale data for floors
- Testing too many changes at once
Be careful with:
- Consent and privacy compliance
- Regional regulations
- Ad quality and malware protection
- Frequency capping / user experience
- Lazy loading vs viewability tradeoffs
9) Suggested implementation architecture
A simple modern setup:
- Ad server: GAM or equivalent
- Header bidding wrapper: Prebid.js / Prebid Server
- Analytics warehouse: BigQuery / Snowflake / Redshift
- Floor optimization logic:
- Start with rule-based floors
- Add machine-learning or regression-based predictions later
- Routing layer:
- Segment traffic and assign bidder sets dynamically
- Monitoring:
- Dashboards for latency, fill, CPM, and partner health
10) A good rollout plan
Phase 1: Baseline
- Integrate ad server and a few strong demand partners
- Add basic header bidding
- Establish simple floors
Phase 2: Segmentation
- Create floor and routing buckets by geo/device/format
- Measure revenue and fill by segment
Phase 3: Optimization
- Introduce dynamic floors
- Drop slow or weak bidders
- Fine-tune timeouts and bidder sets
Phase 4: Scale
- Expand demand sources
- Automate floor updates
- Add forecasting and anomaly detection
11) Rule of thumb for floors
If you want a quick starting point:
- Use lower floors for long-tail and low-competition segments
- Use higher floors for premium, high-demand segments
- Change floors only after enough data has accumulated
- Optimize floors to maximize revenue per impression, not just CPM
If you want, I can also give you:
- a reference architecture diagram,
- a sample bidder routing/floor strategy table, or
- a step-by-step setup for GAM + Prebid.
Observation history
Unlock observation history
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.