Features Overview
Feature documentation for OpenAdServe. Covers analytics, CTR optimization, inventory forecasting, programmatic demand, and more.
Core Featuresโ
๐ Real-Time Analytics
ClickHouse-powered event tracking with sub-second latency. Track impressions, clicks, custom events, and ad requests with registered dimension indexing.
View documentation โStatus: โ Stable, Production Ready
๐ฏ CTR Optimization
Machine learning-based click-through rate prediction for CPC campaigns. Bayesian estimation with historical learning and eCPM boosting.
View documentation โStatus: โ Stable, Production Ready
๐ Custom Events
Flexible server-to-server event tracking beyond impressions and clicks. Track video views, engagement metrics, and custom interactions.
View documentation โStatus: โ Stable, Production Ready
๐ฑ๏ธ Click URL Macros
Customizable click-through URLs with macro substitution for dynamic values. Integrate with advertiser tracking systems seamlessly.
View documentation โStatus: โ Stable, Production Ready
Advanced Featuresโ
๐ Inventory Forecasting
Predict available impressions for potential line items with bid-aware conflict detection and priority-based preemption modeling.
View documentation โStatus: โ ๏ธ Beta - Use as rough estimates
๐ฑ Programmatic Demand
Header bidding and RTB integration with OpenRTB-compatible bid requests. Unified auction with eCPM normalization.
View documentation โStatus: โ ๏ธ Beta - Limited DSP testing
๐งช Synthetic Data
Generate realistic test data for development. Create demo campaigns, line items, and simulated traffic for load testing.
View documentation โStatus: ๐ง Dev Tool Only
Feature Highlightsโ
Analytics & Reportingโ
Real-time campaign performance tracking with powerful querying.
- Event Tracking
- Registered Dimensions
- Campaign Reports
Track everything:
- โ Impressions with full request context
- โ Clicks with referrer and timestamp
- โ Custom events (video views, engagement, conversions)
- โ Ad requests for fill rate analysis
Storage: ClickHouse with automatic partitioning and retention
Optimize analytics with indexed columns:
- โ Type validation (enum, number, string)
- โ Fast aggregation queries (10x+ speedup)
- โ Automatic report generation
- โ Custom dimension registration
Example: content_category, user_segment, device_tier
Built-in reporting tools:
- โ CLI campaign report generator
- โ Grafana dashboard integration
- โ Custom ClickHouse queries
- โ Export to CSV/JSON
Performance: Sub-second queries with indexed dimensions
CTR Optimizationโ
Maximize revenue from CPC campaigns with machine learning.
How It Works
1. Historical Learning: Query past performance from ClickHouse to calculate actual CTR per line item.
2. Bayesian Estimation: Blend historical CTR with baseline CTR using configurable smoothing weights.
3. eCPM Boosting:
Convert CPC bids to eCPM using predicted CTR: eCPM = CPC ร CTR ร 1,000
4. Competitive Ranking: CPC campaigns compete fairly with CPM campaigns in unified auction.
Configuration:
BASELINE_CTR=0.01 # 1% fallback CTR
CTR_SMOOTHING_WEIGHT=10 # Weight for Bayesian smoothing
Inventory Forecastingโ
Predict available impressions for potential line items.
The forecasting algorithm needs revision and should be used for rough planning estimates only. See known limitations.
What it does:
- โ Analyzes 30 days of historical traffic patterns
- โ Detects conflicts with existing campaigns
- โ Filters same-priority conflicts by eCPM threshold (10%)
- โ Estimates inventory reduction from higher-priority competition
- โ Supports CPM and CPC campaigns with eCPM normalization
What it doesn't do:
- โ Simulate rate limiting or frequency caps
- โ Predict when budget-exhausted campaigns stop competing
- โ Use actual CTR prediction for CPC eCPM (uses static 1%)
- โ Calculate precise targeting overlap percentages
Use case: Planning campaign capacity and identifying potential delivery issues before launch.
Programmatic Integrationโ
Connect to header bidding and RTB demand sources.
OpenRTB Compatible
Send OpenRTB-formatted bid requests to programmatic demand sources with automatic request/response parsing.
Unified Auction
Programmatic bids compete with direct campaigns using eCPM normalization. Priority-based ranking ensures guaranteed delivery.
Timeout Handling
Configurable bid request timeouts with automatic fallback to direct campaigns when programmatic doesn't respond.
Line item configuration:
{
"line_item_type": "programmatic",
"programmatic_config": {
"bidder_endpoint": "https://bidder.example.com/bid",
"timeout_ms": 100
}
}
Feature Maturity Matrixโ
| Feature | Status | Production Ready | Notes |
|---|---|---|---|
| Analytics | โ Stable | Yes | ClickHouse integration tested at scale |
| CTR Optimization | โ Stable | Yes | Bayesian estimation with proven accuracy |
| Custom Events | โ Stable | Yes | Flexible tracking for any event type |
| Click URL Macros | โ Stable | Yes | Macro substitution and validation |
| Forecasting | โ ๏ธ Beta | No | Algorithm needs revision - rough estimates only |
| Programmatic | โ ๏ธ Beta | Yes | OpenRTB compatible, limited DSP testing |
| Synthetic Data | ๐ง Dev Tool | No | Internal testing and demo purposes only |
Quick Setup Workflowsโ
Set Up Real-Time Analyticsโ
Step-by-step guide
-
Configure ClickHouse connection
CLICKHOUSE_URL=http://clickhouse:8123 -
Enable dimension registration (optional)
# config/dimensions.yaml
dimensions:
- name: content_category
type: enum
values: [sports, news, tech]
indexed: true -
Generate demo data for testing
docker compose exec openadserve go run ./tools/fake_data -
Run campaign reports
go run ./tools/campaign_report -campaign-id=1 -days=7 -
Set up Grafana dashboards Import pre-built dashboards from
config/grafana/
Enable CTR Optimization for CPCโ
Step-by-step guide
-
Configure baseline CTR
BASELINE_CTR=0.01
CTR_SMOOTHING_WEIGHT=10 -
Create CPC line items Set
budget_type: "CPC"and providecpc_bid -
Generate traffic
go run ./tools/traffic_simulator -
Monitor eCPM calculations Check logs for CTR predictions and eCPM boosting
Forecast Inventory Availabilityโ
Step-by-step guide
-
Configure line item targeting Define targeting criteria for forecast request
-
Send forecast request
POST /forecast
{
"publisher_id": 1,
"placement_id": 1,
"targeting": {...},
"flight_dates": {...}
} -
Analyze conflict detection Review detected competing line items
-
Review availability estimates Use forecasted impression counts for planning
Integrate Programmatic Demandโ
Step-by-step guide
-
Configure programmatic line items
{
"line_item_type": "programmatic",
"programmatic_config": {
"bidder_endpoint": "https://bidder.com/bid"
}
} -
Set bidder endpoint URLs Configure DSP/SSP endpoints
-
Test bid responses Send test requests and validate parsing
-
Monitor bid performance Track win rates and eCPM in analytics
Track Custom Engagement Eventsโ
Step-by-step guide
-
Generate event tokens Include
event_urlin ad response for custom tracking -
Send S2S event requests
GET /event?token={signed_token}&type={event_type} -
Query events in ClickHouse
SELECT * FROM events WHERE event_type = 'video_complete' -
Build custom reports Aggregate events by line item, campaign, or custom dimensions
Feature Dependenciesโ
Understanding how features interact with core systems:
Analyticsโ
- Required: ClickHouse for event storage
- Optional: Redis for real-time counters (graceful degradation)
- Optional: Dimension registration for indexed columns
CTR Optimizationโ
- Required: Analytics with historical click/impression data
- Required: ClickHouse for CTR calculations
- Applies to: CPC line items only
Forecastingโ
- Required: Analytics with 30-day historical data
- Required: ClickHouse for traffic pattern queries
- Required: PostgreSQL for active line item config
Programmaticโ
- Required: External bidder endpoints
- Required: Network access for HTTP requests
- Optional: Timeout configuration tuning
Publisher-First Design Philosophyโ
These features reflect OpenAdServe's core principles:
Quality Over Quantity:
- Ad reporting for user-facing quality control
- Rate limiting to protect from budget exhaustion
- Pacing for even delivery and budget preservation
Transparency and Control:
- Forecasting with bid-aware conflict visibility
- Real-time analytics for performance insights
- Custom events for tracking what matters to you
Performance and Reliability:
- CTR optimization maximizes CPC revenue
- Single-pass filtering for 3x faster decisioning
- Graceful degradation keeps serving ads
Related Documentationโ
๐๏ธ Architecture
Learn how features integrate with the core ad decisioning engine and data stores.
View architecture โ๐ API Reference
HTTP endpoints, request/response formats, and integration patterns for all features.
View API docs โโ๏ธ Configuration
Environment variables, tuning parameters, and deployment settings for feature optimization.
View configuration โ๐ Trafficking
Campaign management, line item creation, and creative setup workflows.
View trafficking guide โ