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 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 + 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.