Skip to main content
When your slot requests an ad, the core server has milliseconds to answer a hard question: out of every live campaign, which ones can serve this visitor, and which one should win? It answers in two phases — eligibility (who qualifies) and auction (who wins).
Why this matters to you. Understanding the funnel tells you exactly what makes campaigns skip your slot — and every skipped campaign is a slot filled by a lower bid or a house ad. Most fill problems are an eligibility problem, not a demand problem.

Phase 1 — The eligibility funnel

Every campaign must clear every gate below to enter the auction. The first three are hard set-intersections resolved instantly from live in-memory pools; the rest are per-campaign checks.
Country, device, and ad size are hard AND filters — a campaign that doesn’t target the visitor’s country and device and your slot size can never serve, no matter how high it bids. This is why supporting more ad sizes directly increases how many campaigns compete for your inventory.

What each gate does

Phase 2 — The revenue auction

Every campaign that clears the funnel competes in a weighted-random revenue auction. This is not a highest-bid-wins auction and not a pure random pick — it’s deliberately in between. Each campaign gets a weight, and the winner is drawn at random with probability proportional to its weight:
weight = remaining budget × expected value per impressionwhere expected value per impression is the campaign’s effective CPM ÷ 1000. For click-goal (CPC) campaigns, the bid is converted to an equivalent CPM using an assumed click-through rate of 1%. (A campaign with missing bid data still competes — its weight simply degrades to remaining-budget-only.)

Why weighted-random instead of top-bid?

Higher value wins more — not always

A campaign with a richer bid has a proportionally higher chance to win, so valuable demand is favored. But it doesn’t win every time, which keeps a single advertiser from monopolizing your inventory.

Budget pacing is built in

Remaining budget is a direct multiplier. As a campaign spends down, its weight falls and it naturally yields to fresher demand — spreading spend across the whole day instead of front-loading it.
The practical takeaway for you: more competing campaigns = higher effective CPM. The weighting rewards value, so the deeper the pool of eligible demand on your slot, the more the auction has to pick from — and the more your impression is worth. Everything in the Optimization Playbook is ultimately about deepening that pool.

After a winner is drawn

The winner’s destination URL is validated (it must be a real http/https link). If it’s malformed, that campaign is dropped and the auction re-draws among the rest — paid demand is never skipped in favor of a house ad just because one winner had a bad link. Only if every eligible campaign fails does the slot fall through to house fill.

Frequency capping — why the same ad stops showing

To prevent ad fatigue, AdXensor caps how many times a single visitor sees the same campaign within a rolling window — a configurable platform limit. Once a visitor hits the cap for a campaign, that campaign is filtered out of their auctions (other visitors are unaffected).
Counts are tracked per visitor per campaign, incremented only on real, rendered impressions — never on bot traffic, and never on house ads. House and always-fill banners are exempt from frequency capping, which is part of why your slots stay filled.

Guaranteed fill — your slot is never blank

If no paid campaign qualifies (none matched, all frequency-capped, or all had invalid links), AdXensor walks a fallback chain so the slot still earns:

House creative

If an admin has uploaded a house creative for your slot’s size, it serves.

Always-fill banner

Otherwise, for standard IAB sizes (300x250, 336x280, 728x90, 320x50, 300x600), a built-in AdXensor cross-promo banner fills the slot. It’s an inline SVG — no external assets, no extra latency.

Empty (rare)

Only if the size is non-standard and no house creative exists does the slot return empty. Using standard IAB sizes avoids this entirely.
Every path in the fallback chain still earns you money — house fills credit 50% of the house CPM. But house fills pay less than a competitive paid auction, so the goal is to maximize paid fill. See the Optimization Playbook.

The whole strategy in one picture

Next: Traffic Quality & Scoring

Winning the auction is only half the story — the impression still has to be valid to be counted and paid. See how AdXensor’s fraud shield and reputation system work.