Advertising System — TBD

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:

  1. LLC formation — need a proper hobby group / business entity set up
  2. Banking — dedicated business bank account for ad revenue
  3. Payment processing — Stripe, PayPal, or manual invoicing
  4. 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 advertisers group (id:43) exists but is not actively used for paid advertising
  • The discourse-adplugin is 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-in members 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

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

  1. Staff creates advertiser account + adds to advertisers group
  2. Staff creates a private subcategory under “Ad Submissions” for that advertiser
  3. Advertiser posts creative using the topic template in their subcategory
  4. Moderator reviews, requests revisions if needed (replies to topic)
  5. When approved, moderator creates a House Ad from the creative
  6. 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

  1. Create advertisers group (done)
  2. Create Ad Submissions parent category (advertisers + staff)
  3. Create FAOL subcategory under Ad Submissions
  4. Add topic template with ad specs
  5. Create pinned “Advertising Guidelines” topic
  6. Enable discourse-adplugin + configure no_ads_for_groups
  7. Add CSS fallback + sponsor styling to theme
  8. Create FAOL’s first House Ad (membership pitch)
  9. 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