Now in beta — free for early publishers. Join the waitlist

Setup takes 5 minutes.
One line of code.

BidTune works by replacing your existing Prebid.js script URL with a BidTune-hosted version. We fetch your Prebid bundle, layer optimizations on top of it, and serve it from s.bidtune.net. Your ad stack stays the same — we just make it better.

Integration

There is no SDK, no build step, and no migration. You change one URL.

1

Sign up and add your site

Create an account, enter your domain, and paste the URL of your current Prebid.js script (e.g., cdn.example.com/prebid.js). BidTune will fetch and analyze your bundle automatically.

2

Replace one script URL

Swap your existing Prebid script tag with the BidTune-hosted version:

<!-- Before -->
<script src="https://cdn.example.com/prebid.js"></script>

<!-- After -->
<script src="https://s.bidtune.net/YOUR_SITE_ID/p.js"></script>

That's it. BidTune fetches your original Prebid bundle every few minutes, applies its current optimizations (floors, timeouts, bidder config, experiment assignments), and serves the modified script. Your ad units, bidders, and GAM setup remain untouched.

3

BidTune starts observing

BidTune starts in observation-only mode, collecting bid-level telemetry — win rates, CPMs, latencies, fill rates per bidder, per geo, per ad unit — to build a baseline. The observation period adapts to your traffic volume; higher-traffic sites build a baseline faster. No config changes are made until there's enough data to generate statistically meaningful experiments.

4

Experiments begin automatically

The AI researcher analyzes your baseline data, generates optimization hypotheses, and starts running controlled A/B experiments against live traffic. You can monitor every experiment in the dashboard. Winners deploy automatically. Losers are killed.

Architecture

BidTune consists of three components that run at the edge, outside your infrastructure.

Edge

Script Proxy

A Cloudflare Worker on s.bidtune.net that fetches your original Prebid bundle, appends the analytics and optimization layer, validates the assembled output, and serves it. Config overrides are applied at runtime by the injected code, not baked into the script. Cached at the edge and in the browser.

Research

AI Researcher

An autonomous system that continuously analyzes your bid stream, generates optimization hypotheses, and designs controlled experiments. Runs hourly on a cron. Uses Bayesian inference to evaluate results and auto-terminate experiments when confidence thresholds are reached.

Data

Analytics Pipeline

Bid-level event data flows into ClickHouse via Cloudflare Workers. Every bid response, win, timeout, and auction is recorded with full context (geo, screen size, bidder, ad unit, experiment variant). The dashboard queries this data in real-time.

What BidTune optimizes

BidTune continuously tunes your Prebid.js configuration to maximize net revenue. All changes use standard Prebid APIs — no demand is injected, no ad rendering is modified, and no ad server configuration is changed.

  • Auction dynamics — Finds the right balance between speed and revenue across your entire bidder stack, adjusting how your auctions run based on real performance data.
  • Bidder management — Identifies which demand sources add value and which cost you money in specific segments. Automatically adapts as bidder performance changes over time.
  • Price optimization — Sets and adjusts price floors by ad unit, geography, and device type to eliminate low-value impressions while maintaining fill rate.
  • Refresh strategy — Optimizes when and how ad slots are refreshed to maximize revenue per session without degrading user experience.
BidTune never modifies ad rendering, injects demand, or touches your ad server configuration. Every optimization is tested as a controlled experiment before deployment — you can see exactly what changed and why in the dashboard.

Safety & rollback

  • Observation first. BidTune starts in observation-only mode. No config changes until there's a baseline.
  • Everything is an experiment. Every optimization is tested as a controlled A/B test before deployment. No untested changes ever go live.
  • Holdback group. A configurable percentage of traffic (default 5%) receives no optimizations — no experiments, no config overrides, no floor changes. The analytics layer still runs in observe-only mode so you can compare holdback vs. optimized performance directly in the dashboard.
  • Instant rollback. If anything goes wrong, revert to your original Prebid script URL. BidTune is a proxy — removing it takes 30 seconds.
  • Full audit log. Every config change, every experiment, every decision is logged and visible in the dashboard.

Technical details

For engineering teams who want to understand exactly what runs on their pages.

Script delivery & caching

The script at s.bidtune.net is served by a Cloudflare Worker at 300+ edge locations. Your browser caches the script for 5 minutes (Cache-Control: public, max-age=300). Within that window, subsequent page loads use the cached version with zero network overhead — identical to how your original CDN-hosted Prebid script works. When your original Prebid bundle updates (new bidders, version upgrades), BidTune fetches the latest version within 5 minutes, re-applies optimizations, and the new script propagates to browsers within 10 minutes.

Analytics compatibility

BidTune uses standard Prebid.js event APIs (pbjs.onEvent) which support multiple listeners. If you already run Prebid Analytics adapters (Google Analytics, Amazon Publisher Services, custom analytics), they continue working normally. BidTune is an additive listener — it never replaces, overrides, or conflicts with existing analytics. Your reporting pipelines are unaffected.

Script validation

Every time BidTune assembles a modified script, it runs validation before serving: size verification, syntax balance checking, and marker validation. If anything fails, the system automatically falls back to serving your original unmodified Prebid script. Your ads keep running even if BidTune encounters an error.

What code runs on your page

BidTune appends a small optimization layer to your Prebid bundle. This code does three things: (1) fetches your site's config from BidTune's config service (one async request, typically 50–150ms), (2) applies Prebid.js config overrides using standard APIs (setConfig, setBidderConfig), and (3) listens for Prebid bid events and batches telemetry. It never modifies ad rendering, touches the DOM, or alters GPT/ad server behavior.

Config application timing

BidTune gates the first auction on config readiness (max 500ms wait) to ensure optimizations are applied before bids are requested. The config fetch typically completes in 50–150ms. If the fetch is slow or fails, the auction proceeds without waiting — your ads always run. All subsequent auctions (ad refreshes) have config pre-applied with zero delay.

Respects your existing setup

BidTune detects your existing Prebid configuration — price granularity, bidder settings, ad server targeting — and works within it. It never overrides settings that depend on your ad server line item structure. Optimizations are layered on top of your existing config, not replacements for it.

FAQ

How is this different from ML-based Prebid optimization?

Most tools that claim “AI” or “machine learning” for Prebid train a model on historical data to predict better settings, then deploy those predictions to all traffic. The problem: prediction is not proof. A model can be confidently wrong, and when changes go to everyone simultaneously, there's no way to measure what would have happened without the change.

BidTune doesn't predict what should work — it proves what actually works. Every change is tested as a controlled experiment with a simultaneous holdback group. Same market, same seasonality, same traffic — the only difference is the config change. Results are causal, not correlated. Losers are caught and terminated before they cause damage. Read more about this approach in the manifesto.

Does this work with any Prebid.js wrapper?

BidTune targets standard Prebid.js APIs and works with most Prebid setups including direct implementations, BuySellAds, Freestar, and other managed wrappers. During onboarding, we validate that our optimization layer works correctly with your specific Prebid configuration before enabling experiments.

What if my Prebid bundle gets updated?

BidTune fetches your original Prebid bundle every 5 minutes. When you update your bundle (new bidders, version upgrades, config changes), BidTune picks up the new version automatically and applies its optimizations on top. Your changes propagate to users within 10 minutes.

Will BidTune override my existing Prebid settings?

BidTune is designed to build on your existing configuration, not replace it. When applying optimizations like floor prices, BidTune reads your current Prebid config first and merges its changes on top — your existing rules for other ad units, media types, and sizes are preserved. If you set a floor for ad unit B and BidTune is testing a floor for ad unit A, both rules coexist. For settings like bidder timeouts, BidTune only modifies the specific bidders or values it's testing. You can see exactly what BidTune has changed in the Applied Configurations section of your dashboard settings, and pause AutoResearch at any time if you need to make Prebid changes without interference.

Does this add latency?

Minimal. The script itself is cached at Cloudflare's edge and in the browser (5 minutes), so script download latency is comparable to your existing CDN. BidTune does add one async config fetch per page load (~50–150ms) to apply the latest optimization settings before the first auction. This is gated with a 500ms timeout — if the fetch is slow, the auction proceeds without waiting. Subsequent auctions (ad refreshes) have zero added latency since config is already loaded. The net revenue gains from applied optimizations significantly outweigh the minor first-auction delay.

Can I run my own experiments alongside BidTune?

BidTune operates on Prebid.js config settings (timeouts, floors, bidder management). If you're running your own tests at the ad server level (GAM experiments, A/B testing landing pages), those won't conflict. If you're testing Prebid config changes directly, we recommend pausing BidTune's AutoResearch during your test to avoid overlapping changes on the same variables. You can pause and resume AutoResearch from the dashboard settings.

What data does BidTune collect?

Bid-level auction telemetry only — the same type of data Prebid Analytics adapters already collect. Specifically: bidder code, CPM, win/loss outcome, response time, ad unit code, and screen width. Geographic data (country) comes from Cloudflare's edge request headers — IP addresses are never logged or stored.

BidTune does not create new privacy compliance obligations for your site:

  • No cookies. BidTune does not set, read, or require any cookies. No cookie consent banners needed.
  • No user identifiers. Session IDs are random values generated per page load and never stored on the device.
  • No fingerprinting. We do not combine browser signals to identify or track users.
  • No cross-site tracking. Data is scoped to your site. There is no identity graph or data sharing between publishers.
  • No PII. Every data point we collect describes the auction (which bidder, what price, how fast), not the user.

How do I remove BidTune?

Change your script tag back to your original Prebid URL. That's it. There's no lock-in, no contract, and no DNS changes to undo.

Ready to start optimizing?

Join the waitlistView pricing