What you’re building
A self-serve advertising platform that lives inside your WordPress site. Members top up an account balance (via WooCommerce, Paid Memberships Pro, MemberPress, or Stripe/PayPal connected directly), build their own ad campaigns from a front-end dashboard, pick placements + budgets, and run them against your inventory.
You set the rate card. You set the moderation rules. You collect the revenue.
This is the Reddit / Facebook / LinkedIn ads model - small advertisers self-serve, the platform takes the cut. Implemented inside WordPress.
Why this is structurally better than direct sales
Direct ad sales scale linearly: each sponsor = one email thread, one upload, one report. Revenue caps at how many threads you can hold.
Self-serve scales differently: many small advertisers behind one form can cost you less time than a few direct deals. Revenue can grow because:
- Long-tail advertisers who’d never buy $500/month sidebar will spend $30 testing self-serve
- Members already in your community trust the platform more than a cold sponsor pitch
- Credit top-ups create float (members buy $100 in credits, run $40 in ads, balance sits)
Setting it up, step by step
Most of the setup is wallet, packages and moderation. In order:
- Wire the wallet. In Settings, Credits, connect WooCommerce, a membership plugin, or Stripe or PayPal. Direct purchases have a 10-credit minimum.
- Build your packages. A package sets the price, the placements, the allowed formats, the duration and whether approval is needed.
- Check the portal pages. Pro creates default pages that carry the portal shortcodes, so look at them as an advertiser would.
- Set the moderation rules. Approval is the safe default. The optional trust system can auto-approve advertisers after a number of approved ads, but it is off by default and always reviews code ads unless you change that.
- Test the whole loop yourself. Admins get an advertiser account automatically, so you can top up, submit and approve from one login.
- Read the emails. Messages for submitted, approved, rejected, wallet credited and low balance are all on by default, sent in your site’s name.
What members actually do
Front-end member flow:
- Sign up as an advertiser. Advertisers get their own role, separate from regular members. Depending on your settings, accounts are created at registration or approved by you.
- Top up credits. Paid via WooCommerce, a supported membership plugin, or Stripe/PayPal directly (a 10-credit minimum on direct purchases; you set the price per credit). Balance shows in their dashboard.
- Build a campaign. Pick ad type, upload creative, choose placement, set start + end date and a total budget. Spend is paced evenly across the run. Plugin previews the ad in their dashboard.
- Submit for review. Goes to a moderation queue you control.
- You approve / reject. Approval flips it live. Spending starts.
- Campaign runs. When a CPM or CPC campaign goes live, its budget is reserved from the wallet. Billing runs hourly against impressions or clicks, and unused budget is refunded when the campaign ends or is cancelled. The member dashboard shows the figures as they come in.
It stops when the end date passes or the budget is used.
A normal week of running it
Once advertisers are in, the week is mostly review and support. Typically:
- Clear the queue. Approve or reject new submissions inside your stated turnaround.
- Watch low balances. The low-balance email goes out when a wallet drops below your threshold, 10 by default.
- Read the Revenue screen. See which placements and packages bring in the money.
- Answer questions. Most are about sizes, billing and where an ad will appear. Our banner sizes guide is a handy link to send.
Inventory + pricing models built in
Pro supports flat prices and per-use pricing:
- CPM (cost per mille) - $X per 1,000 impressions. Standard programmatic model.
- CPC (cost per click) - $X per click. Members pay only when ad is clicked.
- CPM and CPC together - a campaign can bill on both.
Example rates only, not recommendations:
| Placement | CPM | CPC |
|---|---|---|
| Sidebar widget | $2-5 | $0.20-0.50 |
| In-article | $4-8 | $0.40-0.80 |
| Header bar | $6-10 | $0.60-1.00 |
| Activity feed (BuddyPress) | $3-7 | $0.30-0.70 |
You set the prices on your ad packages.
What you can measure
Advertisers see their own campaigns, impressions, clicks and spend in the portal, and can export their analytics as a CSV. You see more. Pro’s Ad Analytics screen shows geo and device breakdowns and revenue by placement, and the Revenue screen shows what advertisers paid through the wallet.
The free plugin has no Reports screen. It shows Impressions and Clicks columns and a CTR comparison for each ad. Impressions are counted when the server renders the ad, so fully cached pages undercount, and advertisers should be told that.
What it earns, and how
Your cut (the platform owner)
Your cut is the rate card itself. You charge $5 CPM. You cost the platform $0 (it’s your inventory), so 100% is your margin.
Every dollar advertisers spend is yours minus payment-processor fees.
Your income is the price advertisers pay for the packages and campaigns you create. The wallet holds prepaid credits, and you collect through the route you wired: WooCommerce, a membership plugin, Stripe or PayPal. The plugin sends advertisers a receipt email. It does not send invoices.
Payment-processor fees come out of what you collect.
Moderation workflow
Moderation workflow
Critical part. Self-serve ad platforms fail without it.
Plugin queues every new campaign for review. Admin dashboard shows:
- Campaign creative + landing URL
- Targeting + placement
- Which advertiser it came from, so you can see their earlier submissions
- One-click approve / reject with reason
Rejection sends a notification with your reason. Members can resubmit.
Recommended rejection criteria (publish these as platform policy):
- Misleading claims
- Affiliate cloak chains (single hop is OK; chained redirects not)
- Content unrelated to community focus
- Adult / gambling / weapons (depending on your community)
- Direct competitor of the platform
Spend 5-10 min per campaign on review for the first 50 campaigns. Patterns emerge fast. Most members self-correct after one rejection.
BuddyPress integration
Pro ships with BuddyPress integration. The advertiser portal surfaces as tabs on the member’s own profile: My Ads, Submit Ad, Classifieds, Post Classified, and Inquiries. The free plugin already places ads in activity streams and member and group directories.
Members manage their advertising from the profile they already use every day, which keeps the self-serve loop inside your community instead of a separate dashboard page.
Member-side reporting
Every advertiser dashboard shows:
- Active campaigns with impression + click + spend counts updating real-time
- Historical campaigns with full CSV export
- Credit balance, transaction history + top-up button
- A refund to the wallet when you reject a submission that was already charged. Credits are taken on approval, so a rejection before approval costs the member nothing
Build trust by making the data they see match the data you see exactly. Self-serve ad platforms collapse when advertisers don’t believe the metrics.
The 14-day launch playbook
- Day 1-3. Pick rate card. Define moderation policy. Wire WooCommerce credit top-ups.
- Day 4-5. Build 3 placement types into your theme (sidebar, in-article, header).
- Day 6-7. Run a closed beta with 5-10 existing community members. Free first campaign for each.
- Day 8-12. Iterate on the dashboard UX based on what trips them up. Almost always: ad sizing, billing clarity, “where will my ad appear?” preview.
- Day 13. Publish your launch announcement + open advertiser signup.
- Day 14. Live. Start moderating.
Duties that stay with you
A self-serve platform makes you the publisher of other people’s ads. These duties do not move to the plugin:
- Write the advertising policy. Say what you accept, and link it from the advertiser dashboard.
- Label paid ads. The ad label prints “Advertisement” by default, above or below the ad, and you can change the text.
- Handle refunds and tax. Decide the refund terms for credits and what tax applies to what you sell.
- Protect advertiser data. Names, emails and billing details need a place in your privacy policy.
- Review what goes live. The moderation queue only helps if someone works it.
What WB Ad Manager does not do here
For this setup, the plugin does not:
- accept Easy Digital Downloads as a payment route for top-ups
- set spend caps per role or per day and month, since a campaign has a total budget and dates
- write invoices or insertion orders
- verify an advertiser’s identity or business
- put AdSense ahead of, or behind, self-serve ads in a shared slot, since priority sets the share
Your first 30 days
- Days 1 to 5. Wire the wallet, build the packages and publish the rate card.
- Days 6 to 10. Write the advertising policy and set the approval rules.
- Days 11 to 16. Run a closed beta with five to ten members and a free first campaign.
- Days 17 to 22. Fix what trips them up, usually sizes, billing and previews.
- Days 23 to 26. Announce it and open advertiser signup.
- Day 30. Review approval times and the Revenue screen, then adjust prices.
Common pitfalls
- Budgets that burn out unnoticed. Members run out of credits and feel scammed. Ask for start and end dates on every campaign so spend is paced across the run, and keep the low-balance email switched on.
- Approval queue lag. If approval takes >24 hours, members lose interest. Define an SLA + stick to it.
- No clear refund policy. Bad creative goes live, member wants money back. Have a 7-day refund-on-non-performance rule.
- Mixing self-serve ads with AdSense in same slot. Confuses both pricing systems. Reserve specific slots for self-serve; keep AdSense on the rest.
- Underpricing. $1 CPM destroys perceived value + your margin. Don’t undercut a marketplace you’re trying to build trust in.
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.
This page has the strongest real connection. Pro’s BuddyPress integration puts the advertiser portal on member profiles, and the free plugin has ad positions in BuddyPress, bbPress and Jetonomy. Beyond that we claim no built-in links.
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 are separate products that can sit on the same site. A publisher who owns a community, a directory or a job board has audiences worth selling space against, and members of that audience are the natural advertisers. Read the direct sponsor guide for the manual route, AdSense beside direct sponsors for sharing a slot and the classifieds guide for paid listings.
See free versus Pro and the features page for the full list. To weigh a marketplace-style tool, see the BuySellAds alternative page, or the pricing page.
Ship checklist
- Credit top-ups wired: WooCommerce, a membership plugin or Stripe/PayPal (Settings > Credits)
- 3 placements defined with public rate card
- Moderation policy written and linked from advertiser dashboard
- Beta cohort of 5-10 existing members lined up
- Refund-on-non-performance policy published
Then open signup. Most platforms see meaningful revenue inside 60 days.
Common questions
Is the advertiser portal part of the free plugin?
No. The advertiser portal, the wallet and the moderation queue are Pro. The free plugin runs your own ads and cloaked links. Pro is a paid yearly licence, and the pricing page lists the site counts. Free versus Pro lists everything each one includes.
How do members add credits?
Through WooCommerce, WooCommerce Subscriptions or Memberships, Paid Memberships Pro, MemberPress, or directly with Stripe or PayPal. Direct purchases have a 10-credit minimum and you set the price per credit. Easy Digital Downloads is not a supported route for top-ups, so use one of the others.
Do I have to approve every campaign?
Approval is the safe default and most owners keep it. An optional trust system can auto-approve advertisers after a set number of approved ads. It is off by default, and code ads are always reviewed unless you change that. Rejections send the advertiser a notice with your reason.
What happens to unused budget?
When a CPM or CPC campaign goes live, its budget is reserved from the wallet. Billing runs hourly against impressions or clicks. If the campaign ends or is cancelled, the unused part goes back to the advertiser’s wallet. A submission rejected before approval is never charged, and one charged and then rejected is refunded.
Can I cap how much one advertiser spends?
Each campaign has a total budget and run dates, and spend is paced evenly across the days, so a campaign cannot burn its whole allowance in the first hour. There are no per-role or per-day spend caps. You control spend by the package prices, the campaign budget an advertiser sets, and the approval you give.