Dashboard & Metrics

The Praevis dashboard gives you a live view of your inventory performance — fill rate, revenue, latency, and per-supply source breakdowns, updated every 5 seconds.


Metrics ribbon

The top ribbon shows platform-wide (or partner-wide) stats for the selected time period:

MetricWhat it means
RPSBid requests per second arriving at the exchange
AuctionsTotal auctions run in the period
Fill Rate% of auctions where a valid bid was returned and a creative was served
RevenueSupply source revenue in the period (clearing price × exchange share going to you)
P50 LatencyMedian auction-to-response time
P95 / P99 LatencyTail latency — what slow auctions look like

Time period selector

PeriodShows
1hLast 60 minutes, 1-minute buckets
6hLast 6 hours, 5-minute buckets
TodayCurrent calendar day (UTC), hourly buckets
24hRolling 24 hours, hourly buckets
7dLast 7 days, daily buckets
30dLast 30 days, daily buckets

There is a ~60-second lag between an auction completing and it appearing in the dashboard. The stream aggregator batches auction events into 60-second buckets. Live RPS updates every 5 seconds via WebSocket.


Supply source breakdown table

Below the ribbon, the Supply Source Breakdown table shows per-supply source stats:

ColumnDescription
Supply SourceName and Publisher ID
ImpressionsFilled auctions (won + creative served)
Fill RateFilled / total requests for this supply source
eCPMEffective CPM = (revenue / impressions) × 1,000
RevenueTotal supply source revenue in the period
Avg LatencyMean auction time for this supply source’s requests

Click any supply source row to see a detailed view with hourly breakdown and DSP win breakdown.


Revenue tracking — how it works

Revenue shown in the dashboard is in cents, calculated from micro-dollar auction data:

Revenue (cents) = winning_price_micro_dollars ÷ 10,000

The exchange margin is already deducted. What you see is your supply source payout.

⚠️

Why micro-dollars? At high QPS, fractional cents matter. A CPM of $1.48 = 0.148 cents per impression = 148 micro-dollars. Storing as micro-dollars prevents rounding errors that would accumulate across millions of auctions.


Data flow — auction to dashboard

Supply source sends request
        ↓
Praevis runs auction (<10ms)
        ↓
Winning bid stored in Redis (live:partner:*:revenue_micros)
        ↓
Stream aggregator batches events every 60s
        ↓
Aggregated stats written to Redis time-series buckets
        ↓
Dashboard WebSocket pushes update every 5s
        ↓
You see updated stats

Total lag: Auction completes → dashboard updates = ~60–65 seconds maximum.


Reading latency percentiles

PercentileMeaning
P50Half of auctions complete faster than this — your “normal” speed
P9595% of auctions complete faster — your reliable upper bound
P9999% of auctions complete faster — rare slow cases (usually DSP timeouts)

Target: P50 <5ms, P95 <20ms, P99 <50ms. P99 spikes usually indicate a DSP approaching timeout (150ms).


API access

Pull the same data programmatically:

# Publisher metrics
GET /api/metrics/publisher/{PUBLISHER_ID}?period=24h
 
# Platform-wide
GET /api/metrics?period=7d

Response:

{
  "period": "24h",
  "publisher_id": "pub-uuid",
  "impressions": 142580,
  "fill_rate": 0.847,
  "revenue_cents": 21087,
  "ecpm_cents": 1478,
  "p50_ms": 3,
  "p95_ms": 14,
  "p99_ms": 28
}

→ Full Metrics API reference