What you’re building
A self-serve advertising platform that lives inside your WordPress site. Members top up an account balance (via WooCommerce, EDD, MemberPress, or any billing plugin), 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: 100 small advertisers + a UI = the same labor as 5 direct deals. Revenue compounds 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)
Reddit’s self-serve ad business is ~25% of revenue from advertisers spending <$10k/year. Same shape applies at every scale.
What members actually do
Front-end member flow:
- Sign up + verify as an advertiser (separate role from regular member). Free, takes 30 seconds.
- Top up credits. $20 minimum, paid via your existing checkout (WooCommerce, EDD, Stripe). Balance shows in their dashboard.
- Build a campaign. Pick ad type, upload creative, choose placement, set start + end date, set max daily spend. Plugin previews live in their dashboard.
- Submit for review. Goes to a moderation queue you control.
- You approve / reject. Approval flips it live. Spending starts.
- Campaign runs. Plugin deducts credits per impression or per click (you set the model). Report in member dashboard updates real-time.
Stops when credits run out, end date passes, or daily cap hits.
Inventory + pricing models built in
Pro supports both:
- 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.
Common configuration:
| 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 these. Plugin enforces them on campaign creation.
Commission to you (the platform owner)
Two ways to take a cut:
- Markup at the rate-card level. You charge $5 CPM. You cost the platform $0 (it’s your inventory). 100% is your margin.
- Real commission against external inventory. If you ever integrate third-party ad networks, plugin tracks commission rate per network.
For most cases, model #1 applies: every dollar advertisers spend is yours minus payment-processor fees.
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
- Member’s history (previous campaigns + flags)
- 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 + bbPress group ads
Pro ships with BuddyPress integration. Members can run ads scoped to specific BuddyPress groups they own. Group admins get a “Boost this group” button that opens the campaign builder pre-filled for their group.
This is the killer feature for community marketplaces: members promote their own groups using their own balance. Platform takes the cut without sourcing campaigns.
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 + top-up button
- Pending invoices (for credit-based platforms)
- Refund requests (if a campaign was malformed)
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.
Common pitfalls
- No daily / monthly cap on member spend. Members run out of credits accidentally and feel scammed. Add a hard daily cap as a default.
- 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.
Ship checklist
- WooCommerce / EDD credit top-up wired (plugin > Pro > Billing settings)
- 3 placements defined with public rate card
- Moderation policy written and linked from advertiser dashboard
- Daily + monthly spend caps configured per role
- 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.