A step-by-step guide for community managers who want to recognise a group of members visually, without exposing the underlying group structure to the public. We’ll use the Premium memberships available here on digitallysovereign.org as an example.
What We’re Building
Sometimes your membership tiers are more nuanced behind the scenes than they need to appear on the surface. In this example, we have two paid membership tiers — Premium Solo and Premium Group — that are functionally identical on the platform. Rather than confuse members with two separate badges and flairs, we want:
One badge: Premium Member— awarded automatically to members of either group
One flair: a gold star on their avatar
One title: Premium Member— that members can choose to display
Both underlying groups kept hidden from public view
This approach keeps things clean and simple for your members, while preserving the behind-the-scenes distinction you need for managing different service levels.
Before You Start
You’ll need:
- Admin access to your Discourse site
- Two groups already set up (in this example:
premium_soloandpremium_group) - The group IDs for both groups — you’ll need these for the badge SQL query (more on that below)
- About 20–30 minutes
Finding your group IDs: Go to Admin → Groups and click on each group. Then add
.jsonto the end of the URL in your browser. In the JSON that appears, look for the"id"variable near the top — that’s your group ID. Make a note of both.In this example:
premium_solo= 49,premium_group= 55
Part 1: Hide the Groups
First, let’s make sure neither group shows up in the public group directory.
- Go to Admin → Groups
- Click on
premium_solo, then click Manage - Go to the Interaction sub-tab
- Set the following:
- Visibility:
Group owners and moderators - Who can @mention this group:
Nobody - Who can message this group:
Nobody
- Visibility:
- Click Save
- Repeat for
premium_group
The groups will still work normally — managing permissions, triggering badges, and so on — they just won’t be browsable by regular members, and nobody can accidentally @mention or message them.
Part 2: Set Up the Flair on Both Groups
Since flair is configured at the group level, you’ll set the exact same flair on both groups so members see an identical result regardless of which group they belong to.
Repeat these steps for both premium_solo and premium_group:
- Go to Admin → Groups → click the group → Manage
- Go to the Membership sub-tab
- Find the Flair section and fill in:
| Field | Value |
|---|---|
| Flair Icon | star |
| Flair Background Color | #F1C40F (gold — matches the |
| Flair Color | #FFFFFF (white star on gold circle) |
- Click Save
- Repeat for the second group
Using identical flair settings on both groups means a Premium Solo and a Premium Group member are completely indistinguishable to other community members — which is exactly what we want.
Part 3: Create the Badge
Now let’s create the single shared badge that will be awarded to members of either group.
3.1 Basic Badge Settings
- Go to Admin → Badges
- Click New Badge
- Fill in:
| Field | Value |
|---|---|
| Name | Premium Member |
| Badge Type | Gold (the badge will automatically use the gold color) |
| Badge Grouping | Community |
| Icon | star |
3.2 Write the Descriptions
Discourse badges have two levels of description. Note that HTML is supported but Markdown is not in badge descriptions.
Short description (a few words, shown in the badge directory):
⭐ A paying member receiving hands-on support from Tobias.
Long description (shown on the badge’s own page):
Premium Members receive hands-on support from Tobias, plus full access to everything this community has to offer.
<p>What you get:
<ul>
<li>Everything in the free membership
<li>Direct support from Tobias for hands-on help with your digital sovereignty journey
<li>Weekly office hours with Tobias, with screen sharing
<li>A visible Premium Member badge and flair on your profile
<li>Premium Group members also get a private group space for their own team or community to get support from each other, with backstopping from Tobias
</ul>
<p><strong>How to sign up:</strong>
Visit <a href="https://tobiaseigen.org/#membership">tobiaseigen.org/#membership</a> and choose Premium Solo or Premium Group. Both are available as monthly or annual plans — annual saves you two months.
3.3 Configure the Badge Settings
| Setting | Value | Why |
|---|---|---|
| Allow Title | Members can display Premium Member as their profile title |
|
| Multiple Grant | A member only needs this badge once | |
| Enabled | Makes the badge active |
3.4 Add the SQL Query
This is the step that makes the badge work across two groups at once. Instead of using the simple group trigger (which only supports one group), we use a SQL query.
- On the badge settings page, find the Query field
- Enter the following, replacing
49and55with your own group IDs:
SELECT user_id, current_timestamp granted_at
FROM group_users
WHERE group_id IN (49, 55)
- Set Trigger to
Update daily— this ensures the badge is awarded to new members within 24 hours - Enable Run revocation query daily — this automatically removes the badge if a member leaves or is removed from both groups
- Click Save
What this query does: It looks up everyone who is currently a member of either group and awards them the badge. Running daily means it stays in sync with your membership automatically — additions and removals alike.
Important: The SQL query approach and the simple group trigger approach are mutually exclusive — use one or the other, not both. For spanning two groups, SQL is the right choice.
Part 4: Test It!
- Go to Admin → Groups → premium_solo → Manage → Members
- Add your own admin account to the group
- Visit Admin → Badges → Premium Member and click Run Query to trigger the badge manually
- Visit your profile and check for:
- The
Premium Member badge on your profile page - The gold star flair next to your avatar (once you opt in — see below)
- The
- Remove yourself from the group when done
Part 5: A Note on Flair — Members Need to Opt In
Just as with any group flair in Discourse, the gold star won’t appear automatically — members need to activate it themselves. Here’s what to tell them:
- Click your profile picture → Preferences
- Go to the Profile tab
- Scroll to Flair
- Select
premium_soloorpremium_group(whichever applies — they look identical!) - Click Save
Tip: Include this in your welcome message to new premium members. Something like:
“Your Premium Member badge is now active! To show the gold star flair on your avatar, go to Preferences → Profile → Flair and select your membership group.”
Quick Reference Checklist
- Both groups set to
Group owners and moderatorsvisibility, with @mention and messaging set toNobody - Flair set identically on both groups (Membership sub-tab): icon
star, background#F1C40F, color#FFFFFF - Badge created: name
Premium Member, typeGold, iconstar - Short and long descriptions written (remember: HTML not Markdown!)
- Badge settings: Allow Title
, Multiple Grant 
- SQL query entered covering both group IDs, trigger set to
Update daily -
Run revocation query dailyenabled - Tested on your own account
- New premium members notified about how to activate their flair
Have questions or run into something unexpected? Every Discourse installation is a little different — don’t hesitate to kick off a topic in Members only.
This topic is available in our Outline documentation library. If you find it useful, please let us know by adding a reply below. You can also add comments in Outline to point out issues or suggest improvements. Thank you!
→ View in Outline