What you’re building
A WordPress-native ad server that lets you sell banner + sidebar + in-feed inventory directly to sponsors, rotate multiple campaigns, schedule by date, and track impressions + clicks. No third-party JS. No AdSense revenue share.
This is the “I’d rather sell three sponsored sidebar slots a month than run AdSense” playbook.
The short version
- Decide what you sell. A few clear slots, such as a sidebar slot, an in-article slot and a header bar.
- Write a rate card. A flat monthly fee per slot is easiest to sell.
- Make it easy to ask. An “Advertise with us” page with your rates and a way to contact you.
- Book and schedule. Add the sponsor’s ad, set its dates, tick the placement.
- Report back. Impressions, clicks and CTR, so the sponsor renews.
The rest of this page walks through each step.
Why direct beats programmatic on a niche audience
AdSense takes a share of every ad dollar, and on most niche sites the rate per thousand views is low. Premium ad networks set traffic minimums that many niche sites do not reach.
A direct sponsor is not bidding in an auction. They are buying access to a specific audience they cannot reach another way, so they care about audience match more than raw impression counts. That is why one flat monthly fee for a sidebar slot can beat what the same slot earns from AdSense, even on a small site.
What stops most publishers is managing the inventory. Who has which slot this week. Which sponsor’s campaign ends Friday. Which clicks belong to which campaign.
WB Ad Manager solves the management problem.
Ad types built in
Five ad types ship in the free plugin:
- Image banner - JPG/PNG/WebP, click-tracked
- Rich content (HTML) - write your own HTML for styled offers and editorial-looking units
- Code ad - paste a third-party ad tag (AdSense, Ezoic, custom HTML/JS)
- AdSense - native integration with automatic script management
- Email capture - inline newsletter signup form as an ad unit
For most niche publishers, image banner + rich content covers 95% of sponsor inventory.
Where ads go: 16+ built-in placements
Plugin ships placement hooks for:
- Before / after post content, and after a paragraph number you choose (e.g. “after the 3rd paragraph”)
- A sidebar widget
- Header bar (sitewide notification-style)
- Footer bar
- Before and after the archive post list
- Before the comment form, after it, and between comments
- In BuddyPress activity feed (if you run a community)
- In bbPress topics (if you run forums)
Sponsors care about placement specificity. “Above the fold on the homepage” sells for more than “somewhere on the site.” You choose exactly which placement each ad goes in.
Where sponsors come from
Your first sponsors are usually people who already read you, or businesses that sell to your readers. Make it easy for them to ask.
Create an “Advertise with us” page. Put your slots, your monthly readership and your rates on it, and give people a way to reach you: a contact form or an email address. Link it from your footer and your contact page. Sponsors skim, so keep it short.
The free plugin’s [wbam_partnership_inquiry] form is built for link deals. Its types are paid link, link exchange and sponsored or guest post, and it asks for a website, a target page, anchor text and a budget range. It is the right form if you also sell links or sponsored posts. For banner and sidebar bookings, use your regular contact form.
If you run Pro, the other route is self-serve: advertisers sign up in the advertiser portal, pick a package and pay from a wallet, and you approve before anything goes live.
The booking workflow
For a single sponsor, no Pro license needed. Free flow:
- Sponsor confirms. Email back-and-forth. Decide price + placement + dates.
- WB Ad Manager > Add New Ad. Upload creative. Set start + end date. Tick the placement. Tell sponsors up front which banner sizes you accept.
- Send sponsor the preview URL. They confirm the live placement looks right.
- Schedule activates automatically on the start date. Pulls down on the end date. No manual intervention.
You’ll spend more time on the email than on the plugin.
Tracking that sponsors actually want
Most sponsors don’t ask for impressions - they ask for clicks. WB Ad Manager tracks both:
- Impressions = times the ad was rendered server-side (not pixel-counted - server count, more accurate)
- Clicks = times the ad was clicked, each with a timestamp. Country and device reporting is Pro
- CTR = clicks / impressions, calculated automatically
Pro exports analytics to CSV for the sponsor’s monthly report. That CSV is usually enough to renew the contract.
What the free plugin covers, and what Pro adds
The free plugin already covers more than most people expect:
- Weighted rotation - several ads in one slot share it by a 1 to 10 priority. Give sponsor A a higher priority than sponsor B and A gets the bigger share.
- A per-visitor session limit - cap how many times one visitor sees the same ad in a session. Sponsors will request this once you have repeat traffic.
- Country and device targeting - US-only campaigns, mobile-only campaigns. Increases sell-through on the same inventory.
- An impression cap - stop an ad after N total impressions. Useful for trial campaigns.
Pro adds caps at the advertiser and campaign level, equal-share and budget-weighted rotation, and budget pacing.
If direct sales become a steady income, the Pro licence is easier to justify. The pricing page has the details.
A normal week of running it
Direct sales take more time on email than in the plugin. A normal week looks like this:
- Check what ends soon. Open All Ads and look at sponsor ads whose end date is close.
- Send the renewal note. Attach the sponsor’s impressions, clicks and CTR so far.
- Prepare the next ad. Upload the next creative as a draft with its dates set. The ad sales pipeline guide covers the follow-up.
- Answer enquiries. Reply to anyone who wrote through your “Advertise with us” page.
What you can measure
Free gives you Impressions and Clicks columns in All Ads and a CTR comparison box for ads that share a slot. Impressions are counted when the server renders the ad, so pages served from a full-page cache undercount.
Pro adds the Ad Analytics screen, revenue by placement, geo and device breakdowns, and CSV export. The free plugin has no Reports screen, so a sponsor report in free means copying the numbers from All Ads.
What it earns, and how
Your income is what each sponsor pays you. In the free plugin that happens outside it: you agree a fee, invoice it with your own tool, and book the ad when the money is in.
With Pro, advertisers can prepay credits into a wallet and the Revenue screen lists what they paid for ads. Neither plugin writes invoices or insertion orders, so the contract and the invoice stay with you.
Pricing your inventory
Illustrative starting points for a 20k-monthly-visitor niche publication. These are not market data, so check what comparable sites in your niche charge before you publish a rate card:
| Slot | Standard CPM | Premium / Sponsored |
|---|---|---|
| Sidebar | $5 | $15-25 (homepage above fold) |
| In-article | $8 | $20-40 (after paragraph 3) |
| Header bar | $10 | $25-50 (sitewide notification) |
| Newsletter slot | $30 | $50-100 (lead position) |
Audiences with high-value buyers, such as B2B software or finance, tend to command more.
Quote a flat monthly fee and not a CPM, because sponsors find it easier to say yes to. To convert, multiply: a slot that serves 20,000 impressions a month at a $10 CPM is $200 a month.
When your AdSense rate is low
If your audience sits in a region or niche where AdSense pays very little per thousand views, a CPM-based rate card undersells you. Price the slot on who sees it, not on the count. A made-up example for a small local directory:
- 30,000 page views a month, with AdSense paying about $1.50 per thousand: roughly $45 a month.
- Four category sponsors (say restaurants, clinics, tutors and gyms) at a flat $40 a month each: $160.
- AdSense stays on everywhere else as the fallback, and still brings in about $27 from the remaining views.
Each sponsor’s ad uses the display rules to show only on its own category, so the restaurant sponsor never appears beside the clinic listings. That rule works on standard post categories out of the box. A custom listing taxonomy needs a few lines of code through the plugin’s display filters. The AdSense alternatives post works through the whole decision.
Don’t undercharge. A sponsor who pays little tends to expect little in return.
AdSense + direct ads together
You can run both. Mixed inventory is common:
- AdSense runs in the slots you haven’t sold
- Direct sponsors take the premium slots (above-fold sidebar, after paragraph 3)
Put AdSense and a sponsor in the same slot and they share it. Each page view shows one, weighted by priority (1-10). Schedule the sponsor’s dates; AdSense keeps the slot to itself before and after. Nothing pauses AdSense for you, so if the sponsor bought the slot outright, switch the AdSense ad off for those dates.
Duties that stay with you
You are the publisher, so the responsibility for what runs on your pages is yours.
- Disclose paid placements. The ad label prints “Advertisement” by default, above or below the ad, and you can change the text. It does not write wording for a sponsored post or a newsletter.
- Review creatives. Check a sponsor’s image and landing page before you book them in.
- Put terms in writing. Dates, placement, refund terms and who supplies the creative belong in your booking email.
- Say what you track. If you target by country, the visitor is looked up with an IP geolocation service and IPs are anonymized with a daily-rotating hash. Mention it in your privacy policy.
Common pitfalls
- No refund policy in the booking email. Write one before you sell. “Refund within 7 days if performance is more than 50% below the projected click rate” is standard.
- Sponsor expects guaranteed clicks. Clicks aren’t sellable. Impressions and placement are. Price on impressions; report on both.
- No preview URL when sending the campaign live. Sponsors hate surprises. Send the live URL with a screenshot before the campaign begins.
- Slow site = low CTR = sponsor doesn’t renew. Compress sponsor creatives (WebP helps) before you upload them.
What WB Ad Manager does not do here
For this setup, the plugin does not:
- let a sponsor override AdSense in a shared slot, since a shared slot is picked at random by priority
- send invoices or manage insertion orders
- report on campaigns or slots in the free version, because there is no Reports screen there
- count impressions from fully cached pages
- sell your space for you, since sponsors come from your own outreach unless you use Pro’s advertiser portal
Your first 30 days
- Days 1 to 5. Decide your slots and write the rate card.
- Days 6 to 10. Publish the “Advertise with us” page and add the link to your footer.
- Days 11 to 20. Contact ten readers or businesses that sell to your audience.
- Days 21 to 25. Book the first sponsor and send the live preview.
- Days 26 to 29. Check the numbers and send the sponsor a short report.
- Day 30. Ask for the renewal and note what the sponsor said.
Where it sits with the other plugins
WB Ad Manager is one of several separate, optional plugins from the same team. They run on one WordPress site and one login, and you install, host and update each one yourself.
The real connections are small. The free plugin has ad positions for BuddyPress, bbPress and Jetonomy, and Pro adds a BuddyPress integration for the advertiser portal. We claim nothing beyond that.
BuddyNext (community), Jetonomy (forum and Q&A), Learnomy (courses), Listora (directory), WP Career Board (job board), WB Gamification (points and badges), and the BuddyX Pro and Reign themes run on the same site as separate products. A publisher who owns a community, a directory or a job board has audiences worth selling space against, and a sponsor will often pay more to reach a defined group than a general crowd. Read the member self-serve guide if you would rather have advertisers book themselves, and AdSense beside direct sponsors for the shared-slot setup.
Free versus Pro lists what each tier includes. Weighing other tools? See the AdRotate alternative page, or the features page.
Ship checklist
- 3 ad slots defined on the site (sidebar, in-article, header)
- CPM rate card written (even if just internal - defend pricing)
- Refund policy + screenshot-before-launch in your sponsor email template
- One test ad live, click + impression counts showing in WB Ad Manager > All Ads
- AdSense (if using) in the unsold slots, at a lower priority than any sponsor sharing a slot
Then start outreach. Your first three sponsors will be people who already read you.
Common questions
Do I need Pro to sell ad space directly?
No. The free plugin has image, rich content, code, AdSense and email capture ads, over sixteen placements, scheduling by date, weighted rotation and country targeting. You agree terms by email and book the ad yourself. Pro adds the advertiser portal, wallet and moderation queue for sponsors who book themselves.
How do sponsors pay me?
Outside the free plugin. You agree a fee and invoice it with your own tool, then book the ad. With Pro, advertisers can prepay credits into a wallet through WooCommerce, a membership plugin, Stripe or PayPal. Neither plugin writes invoices or insertion orders, so contracts and receipts stay with you.
What can I show a sponsor afterwards?
In the free plugin, impressions, clicks and CTR per ad from All Ads, plus a CTR comparison for ads sharing a slot. Pro adds the Ad Analytics screen with geo and device breakdowns and CSV export. Impressions are counted when the server renders the ad, so cached pages undercount.
What if my sponsor wants every view?
Sell it as exclusive. In a shared slot each page view shows one ad, picked at random by priority, so a sponsor at 10 next to AdSense at 1 gets about 91 percent. For every view, switch the AdSense ad off for those dates or give the sponsor a slot without AdSense.
Does the plugin label sponsored ads?
It prints an ad label, “Advertisement” by default, above or below the ad, and you can change the text. That covers ads in a slot. It does not write a disclosure for a sponsored post or a newsletter, so that wording is yours to add and keep consistent.