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.
There is no SDK, no build step, and no migration. You change one URL.
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.
Swap your existing Prebid script tag with the BidTune-hosted version:
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.
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.
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.
BidTune consists of three components that run at the edge, outside your infrastructure.
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.
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.
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.
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.
For engineering teams who want to understand exactly what runs on their pages.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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?