Skip to main content

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.

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

Learn more โ†’


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

Read full documentation โ†’


Inventory Forecastingโ€‹

Predict available impressions for potential line items.

Beta Feature

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.

Read full documentation โ†’


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
}
}

Read full documentation โ†’


Feature Maturity Matrixโ€‹

FeatureStatusProduction ReadyNotes
Analyticsโœ… StableYesClickHouse integration tested at scale
CTR Optimizationโœ… StableYesBayesian estimation with proven accuracy
Custom Eventsโœ… StableYesFlexible tracking for any event type
Click URL Macrosโœ… StableYesMacro substitution and validation
Forecastingโš ๏ธ BetaNoAlgorithm needs revision - rough estimates only
Programmaticโš ๏ธ BetaYesOpenRTB compatible, limited DSP testing
Synthetic Data๐Ÿ”ง Dev ToolNoInternal testing and demo purposes only

Quick Setup Workflowsโ€‹

Set Up Real-Time Analyticsโ€‹

Step-by-step guide
  1. Configure ClickHouse connection

    CLICKHOUSE_URL=http://clickhouse:8123
  2. Enable dimension registration (optional)

    # config/dimensions.yaml
    dimensions:
    - name: content_category
    type: enum
    values: [sports, news, tech]
    indexed: true
  3. Generate demo data for testing

    docker compose exec openadserve go run ./tools/fake_data
  4. Run campaign reports

    go run ./tools/campaign_report -campaign-id=1 -days=7
  5. Set up Grafana dashboards Import pre-built dashboards from config/grafana/

Full analytics guide โ†’


Enable CTR Optimization for CPCโ€‹

Step-by-step guide
  1. Configure baseline CTR

    BASELINE_CTR=0.01
    CTR_SMOOTHING_WEIGHT=10
  2. Create CPC line items Set budget_type: "CPC" and provide cpc_bid

  3. Generate traffic

    go run ./tools/traffic_simulator
  4. Monitor eCPM calculations Check logs for CTR predictions and eCPM boosting

Full CTR optimization guide โ†’


Forecast Inventory Availabilityโ€‹

Step-by-step guide
  1. Configure line item targeting Define targeting criteria for forecast request

  2. Send forecast request

    POST /forecast
    {
    "publisher_id": 1,
    "placement_id": 1,
    "targeting": {...},
    "flight_dates": {...}
    }
  3. Analyze conflict detection Review detected competing line items

  4. Review availability estimates Use forecasted impression counts for planning

Full forecasting guide โ†’


Integrate Programmatic Demandโ€‹

Step-by-step guide
  1. Configure programmatic line items

    {
    "line_item_type": "programmatic",
    "programmatic_config": {
    "bidder_endpoint": "https://bidder.com/bid"
    }
    }
  2. Set bidder endpoint URLs Configure DSP/SSP endpoints

  3. Test bid responses Send test requests and validate parsing

  4. Monitor bid performance Track win rates and eCPM in analytics

Full programmatic guide โ†’


Track Custom Engagement Eventsโ€‹

Step-by-step guide
  1. Generate event tokens Include event_url in ad response for custom tracking

  2. Send S2S event requests

    GET /event?token={signed_token}&type={event_type}
  3. Query events in ClickHouse

    SELECT * FROM events WHERE event_type = 'video_complete'
  4. Build custom reports Aggregate events by line item, campaign, or custom dimensions

Full custom events guide โ†’


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

๐Ÿ—๏ธ 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 โ†’