Troubleshooting — Supply Partners
Low fill rate
Fill rate = filled auctions / total auction requests. Below ~50% usually indicates a configuration issue.
Check floor price vs DSP bids
The most common cause. If your floor price is higher than DSPs are willing to bid, every auction ends with no winner.
Diagnose: In the dashboard, click your supply source (Publisher) → DSP Breakdown. If DSPs are bidding but losing, the bids are below your floor. Lower the floor or move to a higher-value pool.
Rule of thumb by format:
| Format | Suggested starting floor |
|---|---|
| CTV 15s/30s | $3–8 CPM |
| Mobile video | $1–3 CPM |
| Web display 300×250 | $0.30–0.80 CPM |
| Web display 728×90 | $0.15–0.50 CPM |
Check pool assignment
DSPs subscribe to specific pools. If your supply source is in a pool with no active DSP subscribers, you’ll get zero fill.
Diagnose: Go to Supply → your supply source → Pool. Verify the pool has at least one active DSP. Contact support if unsure which pool is appropriate.
Check geographic coverage
Most DSPs target specific countries. If your traffic comes from geos your DSPs don’t serve, fill rate drops.
Diagnose: Filter the dashboard by supply source and check the geo breakdown. If most traffic is from underserved geos, contact your account manager about DSPs covering those regions.
Check app-ads.txt verification
Unverified supply sources lose demand from DSPs with strict app-ads.txt requirements.
Diagnose: Supply → supply source → Verification. Status should be Verified. → app-ads.txt guide
Empty VAST response
An empty VAST (<VAST version="4.0"/>) means no DSP returned a winning bid. This is normal at low QPS — not every request wins an auction.
Missing required parameters
Required params not present = Praevis rejects the request before auction.
Check these params are in your VAST URL:
site_id= (Publisher ID)
w= (width in px)
h= (height in px)
ip= (viewer IP, passed from your ad server)
ua= (viewer user agent, passed from your ad server)Use your ad server macros — e.g., SpringServe: {IP_ADDRESS}, {USER_AGENT}.
Sandbox vs live URL mismatch
Sandbox supply sources respond on the sandbox endpoint only (sandbox=true). Live supply sources do not.
Check: Supply source settings → is Sandbox Mode enabled? Live traffic should go to a live supply source.
Floor price too high
Even a single request can return empty if the floor is above what DSPs are bidding.
Check: Lower the floor temporarily, fire a test request, and see if it fills. Increase gradually.
VAST version compatibility
Some ad servers only accept VAST 2.0. Praevis defaults to VAST 4.0. If your ad server doesn’t parse VAST 4.0, add vast_version=2 to your tag URL.
Metrics not updating
Aggregator 60-second lag
All metrics go through the stream aggregator which batches events in 60-second windows. There is always a ~60s delay.
Normal: If you just fired a request, wait 60–65 seconds before expecting it in the dashboard.
Wrong time period selected
If you fired requests in the last 10 minutes but are viewing a 7d chart, individual events are invisible at that scale.
Fix: Switch to 1h or 6h time period.
Checking real-time
For immediate confirmation that a request was received, use the API:
curl https://api.praevis.com/api/supply/sources/{PUBLISHER_ID}/stats?period=1h \
-H "X-API-Key: {YOUR_KEY}"If impressions increments after a test request, the system is working. Dashboard lag is expected.
Revenue discrepancy
Micro-dollar rounding
Praevis stores revenue in micro-dollars (1/10,000 of a cent) to preserve precision across millions of auctions. Small rounding differences between your records and ours are normal and are in your favour — we always round up for supply source payouts.
Exchange margin
Your revenue in the dashboard is post-margin (your payout). The clearing price before margin deduction is visible in auction logs but not the dashboard default view.
Time zone differences
Dashboard uses UTC. If your records use local time, daily revenue figures may appear shifted. Use the 24h rolling period to avoid calendar-day timezone issues.
VAST validation errors
Test your VAST responses with a VAST inspector before reporting an issue:
- Google Video Suite Inspector
- VAST Inspector in your ad server (SpringServe, GAM, FreeWheel all have one)
Common validation failures:
| Error | Cause |
|---|---|
Invalid XML | Encoding issue — ensure UTF-8 response |
No MediaFile found | Creative URL not resolving or wrong MIME type |
Duration mismatch | <Duration> tag doesn’t match actual file length |
Missing AdSystem | Required VAST field — contact Praevis support |
Still stuck?
Contact support at [email protected] with:
- Your Publisher ID
- A sample VAST tag URL (without sensitive macros)
- Approximate time of the issue (UTC)
- Screenshot or export of the dashboard at that time