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:

FormatSuggested 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:

Common validation failures:

ErrorCause
Invalid XMLEncoding issue — ensure UTF-8 response
No MediaFile foundCreative URL not resolving or wrong MIME type
Duration mismatch<Duration> tag doesn’t match actual file length
Missing AdSystemRequired VAST field — contact Praevis support

Still stuck?

Contact support at [email protected] with:

  1. Your Publisher ID
  2. A sample VAST tag URL (without sensitive macros)
  3. Approximate time of the issue (UTC)
  4. Screenshot or export of the dashboard at that time