Advertising System
Status: Not yet implemented
FAOL plans to offer visitor-only advertising to fly fishing businesses and brands. This is separate from the free classified listings in the Fly Shops directory.
Blocked On
Before we can accept advertising revenue:
- LLC formation — need a proper hobby group / business entity set up
- Banking — dedicated business bank account for ad revenue
- Payment processing — Stripe, PayPal, or manual invoicing
- Tax considerations — consult with accountant on hobby vs. business income
Until these are in place, we are not accepting paid advertising.
What We Have Now
- The
advertisersgroup (id:43) exists but is not actively used for paid advertising - The
discourse-adpluginis installed and active — the “Join Fly Anglers Online / Sign Up Free” membership pitch banner is a live House Ad shown to visitors only - CSS for visitor-only ad display is in the theme and working (
body.logged-inmembers don’t see the banner) - The membership pitch ad is FAOL’s own house ad — not paid advertising
Full Advertising Plan
Context
Visitor-only ads with advertiser self-service, mod approval, and rotation. FAOL’s own ads (membership pitch, site promo) use the same system as external sponsors — no special cases.
Architecture
Groups
advertisers— request-based membership. Every advertiser (including FAOL itself) needs an account in this group.
Categories
- Ad Submissions (parent, private:
advertisers: see,staff: full)- FAOL (subcategory, private:
faol-ads: full,staff: full) — FAOL’s own promo/membership ads - [Brand Name] (subcategory per advertiser, created when onboarded) — each brand gets their own private subcategory visible only to them + staff
- FAOL (subcategory, private:
Each subcategory has a topic template for ad creative (banner images, copy, landing URL, campaign duration).
Display Engine
- discourse-adplugin House Ads (bundled in Discourse core, no plugin install needed)
no_ads_for_groups= all logged-in groups → visitors only see ads- CSS fallback:
body.logged-in .house-ad { display: none !important } - Ad slots:
topic-list-top,topic-above-suggested,post-bottom(nth post) - Rotation: built-in, cycles evenly through all House Ads in a slot
Workflow
- Staff creates advertiser account + adds to
advertisersgroup - Staff creates a private subcategory under “Ad Submissions” for that advertiser
- Advertiser posts creative using the topic template in their subcategory
- Moderator reviews, requests revisions if needed (replies to topic)
- When approved, moderator creates a House Ad from the creative
- Ad enters rotation for visitors
FAOL’s Own Ads
- FAOL gets its own subcategory just like any other advertiser
- Used for: membership pitch, community promo, seasonal announcements
- Same approval workflow — keeps things consistent and auditable
Ad Specs
| Format | Desktop | Mobile | Max size |
|---|---|---|---|
| Leaderboard | 728x90 | 320x50 | 80KB |
| Large banner | 970x90 | 320x100 | 120KB |
| Rectangle | 300x250 | 300x250 | 100KB |
Implementation Steps
- Create
advertisersgroup (done) - Create
Ad Submissionsparent category (advertisers + staff) - Create
FAOLsubcategory under Ad Submissions - Add topic template with ad specs
- Create pinned “Advertising Guidelines” topic
- Enable discourse-adplugin + configure
no_ads_for_groups - Add CSS fallback + sponsor styling to theme
- Create FAOL’s first House Ad (membership pitch)
- Playwright tests: visitor sees ads, member doesn’t, rotation works, mobile OK
Portability
All portable — House Ads stored in DB, group/category in DB, CSS in theme DB. Works on self-hosted, production, and managed Discourse. No custom plugins.
This topic will be updated when the LLC and banking are set up. — Ron