Reporting & Analytics
Track your bid performance, spend, and creative efficiency from the dashboard or API.
Key metrics
| Metric | Definition |
|---|---|
| Bid requests | Auction invitations sent to your endpoint (or evaluated against your Delegate strategy) |
| Bids | Responses with a valid bid (price > floor) |
| Wins | Auctions where your bid was the highest valid bid |
| Impressions | Wins where the creative was successfully rendered |
| Win rate | Wins / bid requests |
| Spend | Total clearing price paid across all wins (USD) |
| Avg CPM | (Spend / impressions) × 1,000 |
| Timeout rate | Requests that exceeded 150ms before you responded |
| Circuit breaker opens | Times the circuit breaker paused requests to your endpoint |
Dashboard — demand source (DSP) view
- Log in → Demand → click your demand source
- The overview shows: bid requests, win rate, spend, avg CPM — for the selected period
- Use the time period selector to view 1h, 6h, today, 24h, 7d, or 30d
- The Publisher Breakdown tab shows win rate and spend per publisher
- For Delegate demand sources, the Strategy Breakdown tab shows performance per rule
Dashboard data has a ~60-second lag. Live win rate updates every 5 seconds via WebSocket.
API — pull metrics programmatically
Demand source metrics
GET /api/demand/sources/{DSP_ID}/stats?period=24h
X-API-Key: {YOUR_KEY}Response:
{
"period": "24h",
"dsp_id": "dsp-uuid",
"bid_requests": 284500,
"bids": 97200,
"wins": 42100,
"impressions": 41850,
"win_rate": 0.1480,
"spend_cents": 61983,
"avg_cpm_cents": 1481,
"timeout_rate": 0.0082,
"p50_ms": 38,
"p95_ms": 112
}Demand source health
GET /api/demand/sources/{DSP_ID}/health
X-API-Key: {YOUR_KEY}Response:
{
"circuit_breaker": "closed",
"timeout_rate_5m": 0.012,
"error_rate_5m": 0.003,
"avg_latency_ms": 42,
"qps_current": 87,
"qps_limit": 200,
"daily_budget_remaining_cents": 14230
}Circuit breaker states: closed (healthy), open (paused — too many timeouts), half_open (recovering).
Platform-wide metrics
GET /api/metrics?period=7dWin rate — what it means
Win rate = wins / bid requests. This is not win rate relative to all bids — it includes no-bids (204 responses) as denominator.
Typical win rates:
- Traditional RTB, competitive category: 5–20%
- Delegate with targeted strategy: 15–40%
- Delegate with match-all rule: 2–10% (floor competition)
Low win rate causes:
- Bids below floor price → increase
base_cpm - Geographic mismatch → your bids for geos you don’t serve still count as requests
- Delegate conditions too narrow → widen targeting or add a fallback rule
Spend reconciliation
Praevis stores every auction in PostgreSQL with 90-day retention. For reconciliation:
- Request an audit export via [email protected]
- Export includes: auction ID, timestamp, publisher, clearing price, your bid
- Available as CSV or JSON
Revenue shown in the dashboard is in cents (USD × 100). Micro-dollar precision is used internally; cents are displayed for readability.
Billing
- Cycle: Monthly (1st–last day of each calendar month, UTC)
- Invoice: Emailed on the 5th of the following month
- Currency: USD
- Payment terms: Net 30 from invoice date
- Minimum spend: None — minimum bid is set per pool
Contact [email protected] for invoice questions or consolidated billing.