Create shared badge, title & flair for members of your Discourse community

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:

  • :star: One badge: Premium Member — awarded automatically to members of either group
  • :star: One flair: a gold star on their avatar
  • :star: One title: Premium Member — that members can choose to display
  • :eye: 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_solo and premium_group)
  • The group IDs for both groups — you’ll need these for the badge SQL query (more on that below)
  • About 20–30 minutes

:light_bulb: Finding your group IDs: Go to Admin → Groups and click on each group. Then add .json to 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.

  1. Go to Admin → Groups
  2. Click on premium_solo, then click Manage
  3. Go to the Interaction sub-tab
  4. Set the following:
    • Visibility: Group owners and moderators
    • Who can @mention this group: Nobody
    • Who can message this group: Nobody
  5. Click Save
  6. Repeat for premium_group

:white_check_mark: 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:

  1. Go to Admin → Groups → click the group → Manage
  2. Go to the Membership sub-tab
  3. Find the Flair section and fill in:
Field Value
Flair Icon star
Flair Background Color #F1C40F (gold — matches the :star: emoji)
Flair Color #FFFFFF (white star on gold circle)
  1. Click Save
  2. Repeat for the second group

:light_bulb: 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

  1. Go to Admin → Badges
  2. Click New Badge
  3. 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 :white_check_mark: On Members can display Premium Member as their profile title
Multiple Grant :cross_mark: Off A member only needs this badge once
Enabled :white_check_mark: On 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.

  1. On the badge settings page, find the Query field
  2. Enter the following, replacing 49 and 55 with your own group IDs:
SELECT user_id, current_timestamp granted_at
FROM group_users
WHERE group_id IN (49, 55)
  1. Set Trigger to Update daily — this ensures the badge is awarded to new members within 24 hours
  2. Enable Run revocation query daily — this automatically removes the badge if a member leaves or is removed from both groups
  3. Click Save

:light_bulb: 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.

:warning: 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!

  1. Go to Admin → Groups → premium_solo → Manage → Members
  2. Add your own admin account to the group
  3. Visit Admin → Badges → Premium Member and click Run Query to trigger the badge manually
  4. Visit your profile and check for:
    • The :star: Premium Member badge on your profile page
    • The gold star flair next to your avatar (once you opt in — see below)
  5. 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:

  1. Click your profile picture → Preferences
  2. Go to the Profile tab
  3. Scroll to Flair
  4. Select premium_solo or premium_group (whichever applies — they look identical!)
  5. Click Save

:light_bulb: 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 moderators visibility, with @mention and messaging set to Nobody
  • Flair set identically on both groups (Membership sub-tab): icon star, background #F1C40F, color #FFFFFF
  • Badge created: name Premium Member, type Gold, icon star
  • Short and long descriptions written (remember: HTML not Markdown!)
  • Badge settings: Allow Title :white_check_mark:, Multiple Grant :cross_mark:
  • SQL query entered covering both group IDs, trigger set to Update daily
  • Run revocation query daily enabled
  • 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.


:information_source: 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! :hugs: → View in Outline