Migrating from Google AdX / Ad Manager
Google Ad Manager (GAM) and AdX can coexist with Praevis Exchange. The typical approach is not a full migration — it is adding Praevis as an additional demand source (DSP) within GAM, competing with AdX demand in your waterfall or header bidding stack.
Estimated time: 2–5 days to configure and validate.
Concept mapping
| GAM / AdX concept | Praevis equivalent |
|---|---|
| Network code | Partner ID |
| Ad unit | Supply Source |
| Inventory type (video, display) | Supply source type (ctv, mobile, web) |
| Floor price (ad unit level) | Floor Price CPM (per supply source) |
| Deal ID / Programmatic Guaranteed | Deal ID (PMP) |
| Line item | Demand source Delegate strategy rule |
| Content category targeting | content_genre / IAB category |
| GAM reporting | Dashboard → Supply |
| Ad unit code | Supply Source ID (UUID) |
How Praevis fits into your GAM stack
There are two integration patterns:
| Pattern | Description | When to use |
|---|---|---|
| VAST tag in GAM line item | Add Praevis as a third-party demand line item in GAM | Most common; no SDK change |
| Direct RTB (bypass GAM) | Send bid requests directly to Praevis; manage yield outside GAM | CTV/OTT players, non-GAM traffic |
Most supply sources start with the VAST tag pattern — it requires no player change and lets you A/B test against AdX demand.
Migration steps (VAST tag in GAM)
Create supply sources in Praevis
For each GAM ad unit you want to monetise with Praevis, create a Praevis supply source:
- Log in → Supply → Add Supply Source
- Set name, domain/bundle, format, floor CPM
- Note the Supply Source ID (UUID) — used in the VAST URL
Match your GAM ad unit floor prices to Praevis floor CPMs as a starting point.
Build your Praevis VAST tag
https://rtb.praevis.com/vast?site_id={PUBLISHER_ID}&w=%%WIDTH%%&h=%%HEIGHT%%&ip=%%PATTERN:url_encoded_imp_type%%&ua=%%PATTERN:url_encoded_user_agent%%&did=%%ADVERTISING_IDENTIFIER_PLAIN%%&content_genre={YOUR_GENRE}Replace {PUBLISHER_ID} with your Praevis Supply Source UUID. GAM macros stay in %%DOUBLE_PERCENT%% format.
GAM macro reference:
| Praevis parameter | GAM macro | Notes |
|---|---|---|
w | %%WIDTH%% | Player width |
h | %%HEIGHT%% | Player height |
ip | %%PATTERN:ip_address%% | Viewer IP — required |
ua | %%PATTERN:url_encoded_user_agent%% | URL-encoded user agent |
did | %%ADVERTISING_IDENTIFIER_PLAIN%% | Device advertising ID (CTV/mobile) |
content_genre | Hardcode or use key-value | Set per ad unit or via GAM KV |
floor | %%FLOOR_PRICE%% (if configured) | Dynamic floor override (optional) |
Create a GAM line item for Praevis
In GAM:
- Inventory → Line items → New line item
- Type: Third-party (or Price Priority)
- Rate: Set CPM slightly below your AdX floor to catch unfilled inventory, or use
Optimised CPMand let GAM manage priority - Creative: Third-party VAST tag → paste your Praevis VAST URL
- Targeting: Match the same ad units, sizes, and geo as your AdX demand
Recommended starting priority: Set Praevis line item at or slightly below AdX Open Auction priority. This lets AdX win first; Praevis fills what AdX misses.
Enable sandbox mode and test
Before activating the live line item:
- Append
&sandbox=trueto the VAST URL in your test line item - In GAM Delivery → Ad Preview, fire the VAST tag
- Confirm you receive a filled VAST response
- Check the Praevis sandbox dashboard — the impression should appear within 60 seconds
Go live and monitor
Activate the line item. Monitor for 48–72 hours:
- GAM reporting: Check fill rate and average CPM for the Praevis line item
- Praevis dashboard: Verify bid request volume, fill rate, and revenue match expected levels
- Adjust Praevis floor price up or down based on AdX eCPM benchmarks
Migration steps (Direct RTB, bypassing GAM)
For CTV/OTT apps where you control the player directly and want to run Praevis outside of GAM:
Create supply sources in Praevis
Same as the VAST tag pattern — one Praevis supply source per content stream or app.
Integrate the VAST URL in your player
https://rtb.praevis.com/vast?site_id={PUBLISHER_ID}&w={PLAYER_WIDTH}&h={PLAYER_HEIGHT}&ip={VIEWER_IP}&ua={ENCODED_UA}&did={ADVERTISING_ID}Pass dynamic values from your app at request time.
Run Praevis in parallel with GAM
Use your server-side ad decisioning (SSAI) or player logic to waterfall:
- Request from GAM/AdX first
- If GAM returns no fill, request from Praevis as passback
- Compare eCPMs weekly and adjust priority
Update app-ads.txt
praevis.com, {YOUR_PUBLISHER_ID}, DIRECT
# Keep Google:
google.com, pub-{PUBLISHER_CODE}, DIRECT, f08c47fec0942fa0What’s different on Praevis vs AdX
| Feature | Google AdX | Praevis |
|---|---|---|
| Auction type | Second-price (unified pricing) | First-price only |
| Demand pool | Global AdX buyers | Curated demand sources (RTB + Delegate) |
| Prebid support | Native Prebid adapter | No adapter yet (roadmap) |
| Floor rules | Unified pricing rules | Static floor per supply source |
| VAST version | 2.0–4.2 | 4.0 default, ?vast_version=2 for 2.0 |
| Bid timeout | 170ms (default) | Fixed 150ms |
| Deal types | Programmatic Guaranteed, Preferred, PMP | PMP (Deal ID) |
| Identity | Google User ID, 1PD | did (device ad ID), IP-based |
Auction model difference: AdX uses unified pricing (second-price variant). Praevis is first-price. Demand sources who bid on both platforms will have different strategies for each. If a demand source is buying on Praevis with the same bids they use for AdX, they may overpay. Notify your demand source partners.
AdX demand vs Praevis demand
Running Praevis alongside AdX means you have two demand pools. They are independent:
- AdX buyers compete in the AdX auction
- Praevis demand sources (RTB and Delegate) compete in the Praevis auction
- Your ad server (GAM or SSAI) picks the winner based on CPM
Over time, compare:
| Metric | How to measure |
|---|---|
| Praevis eCPM vs AdX eCPM | GAM line item reporting vs Praevis dashboard |
| Praevis fill rate | Praevis dashboard → Supply → supply source fill rate |
| Incremental revenue | Revenue when Praevis wins vs AdX-only revenue |
If Praevis eCPM is consistently higher than AdX for a supply source, consider moving that supply source’s primary demand to Praevis.
Common issues after adding Praevis
GAM line item not serving Check: line item status Active, creative approved, VAST URL returns 200 in a browser. GAM requires the VAST tag to respond within 2 seconds — Praevis responds in <150ms.
Low Praevis fill rate vs AdX
Expected at the start — Praevis demand sources need impression history to optimise bids. Give it 5–7 days. Also check: floor price set too high relative to AdX clearing prices, or content_genre not passing (Praevis targeting requires genre).
Double-counting impressions
GAM counts its own impression pixel. Praevis counts the <Impression> pixel inside the VAST. These are the same event, so they should match within 2–3%. Larger discrepancies indicate the VAST player isn’t firing the Praevis tracking pixel.
content_genre not passing
GAM does not have a native genre macro. Either hardcode the genre in the VAST URL per line item, or use a GAM key-value pair (e.g., genre=drama) and pass it as a macro if your player supports it.
Praevis does not require exclusive access to your inventory. Running Praevis alongside AdX is fully supported and encouraged — the goal is incremental yield, not replacement.