← All use cases

AdSense + direct

Mix AdSense with direct sponsors and let the better RPM win

Hybrid monetization. AdSense fills the long tail, direct sponsors take the premium. Plugin handles the swap automatically.

What you’re building

A monetization stack where AdSense fills your unsold ad inventory automatically, but direct sponsors take over specific slots when you book them. When a direct campaign ends, AdSense flows back into that slot — no manual swap, no downtime.

This is how every serious publisher actually runs ads. AdSense is the floor. Direct sponsors are the ceiling.

Why pure AdSense leaves money on the table

AdSense pays out on every impression but at programmatic rates. For most niche English-language audiences, that’s $1-3 RPM. A single direct sponsor on a 20k-visitor niche blog can pay $300-500/month for ONE sidebar slot. Same impressions, 5-10x revenue.

Pure direct sales is risky in a different way: when sponsors lapse, the slot stops earning. AdSense fills the gap with zero negotiation.

The right answer is both. Plugin makes both possible without you touching the placements.

How the rotation works

For each slot you define, WB Ad Manager keeps a priority chain:

  1. Active direct campaign (if any, matching this slot + this date)
  2. AdSense fill (if no direct campaign is live)
  3. House ad / fallback (if AdSense fails to load — rare but happens)

So a sidebar slot:

  • Default state → AdSense renders → ~$2 RPM
  • You book direct sponsor for September → September: sponsor’s banner renders, AdSense paused → ~$15 RPM
  • October 1: sponsor’s campaign auto-ends → AdSense renders again, no action needed

You configure the slot once. Plugin manages the swap.

Hourly + daily revenue compare

DateSlot stateRPMDaily revenue (20k impressions/day)
Aug 1-31AdSense only$2.00$40
Sep 1-30Direct sponsor ($450/mo)$22.50$15
Oct 1-31AdSense again$2.00$40

September direct sponsor = $450 booked. Plus AdSense fill on the OTHER slots stays running.

Net effect: monthly revenue depends on how many slots you can book. With 3 slots + average 50% direct fill rate + 20k impressions/slot:

  • 1.5 slots direct @ $400/mo avg = $600
  • 1.5 slots AdSense @ $40/mo = $60
  • Total = $660 vs. $120 pure-AdSense

AdSense policy compliance

AdSense rules around mixed inventory:

  • Yes: AdSense + direct sponsors on the same site = fine
  • Yes: AdSense + direct sponsors on the same page = fine (different slots)
  • Yes: Same slot rotates AdSense + direct = fine (only one renders at a time)
  • No: Modifying AdSense ad code to add tracking = ban
  • No: Encouraging clicks on AdSense = ban
  • No: Pop-unders / interstitials wrapping AdSense = ban

WB Ad Manager handles AdSense as a standard “code ad” type. Paste the AdSense unit code. Plugin renders it as-is, no modification. Policy-safe by default.

Setting up the swap

Per slot:

  1. Plugin > Ads > Placements > Add new. Name the slot (e.g. “Sidebar Top”). Pick the placement hook.
  2. Add a code ad with your AdSense unit code. Set priority = Fallback. Set start = today, end = forever.
  3. When you book a sponsor, add an image ad to the same placement. Priority = High. Set start + end dates.
  4. Plugin shows the high-priority ad during the date range, AdSense the rest of the time.

No template edits. No theme hooks beyond initial placement setup.

The two-tier sales pitch

This setup unlocks a clean pitch to direct sponsors:

“Your campaign runs on the [Site Name] sidebar from [date] to [date]. Premium placement — replaces our programmatic AdSense fill during this window. You’re guaranteed top-of-sidebar above the fold.”

Sponsors understand “replaces programmatic.” It positions your direct slot as the premium tier, not a competing inventory.

Programmatic alternatives (when you outgrow AdSense)

When your traffic crosses thresholds, alternatives pay better than AdSense:

NetworkThresholdTypical RPMNotes
AdSenseNone$1-3Default, no application
Ezoic10k visits/mo$5-10Pop-up consent, JS-heavy
Mediavine50k sessions/mo$15-30Strict approval, premium feel
Raptive (AdThrive)100k pageviews/mo$20-40Highest-tier programmatic

Plugin treats all of these as “code ads.” Swap the embed code, keep the rotation logic.

Hybrid setup with multiple networks

Some publishers want Ezoic on the long-tail content + Mediavine on the premium content. WB Ad Manager handles this per-placement, not per-post — but you can use placement rules to route:

  • Posts tagged “review” → Mediavine ad code
  • Posts tagged “news” → Ezoic ad code
  • Direct sponsor campaigns → override both

Configure once per placement, scales across the whole site.

When to outgrow this approach

If your direct revenue exceeds programmatic by 5x (you’re booking $5,000/month direct vs $1,000 AdSense), AdSense becomes a distraction. Disable AdSense, free up the slots for direct campaigns, and let unsold inventory show house ads (your own products / newsletter signup / social CTAs).

This usually happens around 50-100k monthly visitors with focused vertical content. Before that, the hybrid model is the right answer.

Common pitfalls

  • AdSense ad code in the wrong slot dimensions. Plugin shows a warning if the AdSense unit doesn’t match the placement’s expected size. Don’t ignore it.
  • Two AdSense units stacked. AdSense limits 3 ad units per page. Plugin counts. Don’t exceed.
  • Direct sponsor’s creative size differs from AdSense slot. Causes layout shift (CLS hit). Lock placement dimensions and require sponsors to match.
  • Forgetting to set the direct campaign’s start date in your timezone. Plugin uses site timezone. Set it explicitly in WP > Settings > General to avoid 8-hour-off bugs.

Ship checklist

  • 3 placement slots defined (sidebar, in-article, sticky footer or similar)
  • AdSense fill configured for each (priority = Fallback)
  • One test direct ad scheduled for a 24-hour window — verified to override AdSense in that window, then AdSense returns
  • Dashboard shows correct impressions per slot per ad source
  • Sponsor pitch deck mentions “replaces AdSense” as the premium positioning

Then book your first direct sponsor. They’re often a reader who already comments.