# Discord Onboarding & MVC Support Infrastructure Setup

**Document ID:** FFG-DISCORD-002  
**Created:** April 6, 2026  
**Created By:** Chronicler #64  
**For:** Holly (The Catalyst) — Discord/LuckPerms Manager  
**Status:** Ready to Implement

---

## 📋 OVERVIEW

This guide covers two major Discord infrastructure updates:

1. **Two-Stage Onboarding System** — Wanderers (minimal) → Subscribers (full role selection)
2. **ModpackChecker Support Ecosystem** — Tickets, chat, voice, and forum channels

**Philosophy:** Wanderers should feel welcomed home while experiencing FOMO. Subscribers get full customization. MVC owners get comprehensive support options.

---

# PART 1: TWO-STAGE ONBOARDING SYSTEM

## 🎯 THE STRATEGY

**Stage 1: Wanderer Onboarding (Discord Native)**
- New members join → See welcome message
- **Forced:** Must accept rules before seeing channels
- Result: `Wanderer` role → See ALL channels (read-only for most)
- Goal: "Stop wandering. You found home. Feel the FOMO."

**Stage 2: Subscriber Onboarding (Carl-bot + Arbiter)**
- User subscribes → Arbiter assigns tier role
- Carl-bot DMs welcome message
- Message posted in #choose-your-roles with @mention
- User customizes: Fire/Frost path, server selections, preferences
- Goal: "You're family now. Make this place yours."

---

## 🛠️ STAGE 1: DISCORD NATIVE ONBOARDING

### **Step 1: Enable Discord Onboarding**

1. Go to **Server Settings → Onboarding**
2. Click **"Enable Onboarding"**
3. You'll see the onboarding editor

---

### **Step 2: Configure Welcome Screen**

**Screen 1: Welcome Message**

**Title:**
```
🔥❄️ Welcome to Firefrost Gaming!
```

**Description:**
```
We're a community of modded Minecraft players who believe in passion, precision, and finding your tribe.

Whether you're Fire (bold, passionate, unfiltered) or Frost (strategic, calculated, precise), there's a place for you here.

Before you explore, please review our community guidelines.
```

**Background Image:** (Optional) Firefrost Gaming banner or Fire/Frost gradient

**Button Text:** `Continue`

---

### **Step 3: Configure Rules Acceptance (REQUIRED)**

**Screen 2: Community Rules**

1. In onboarding editor, click **"Add Default Channel"**
2. Select **#rules** from dropdown
3. Toggle **ON:** "Require members to accept rules"
4. **Accept Button Text:** `I Accept the Rules`

**What this does:**
- Shows #rules channel content in onboarding flow
- User **cannot proceed** without clicking "I Accept the Rules"
- Once accepted, they receive `Wanderer` role

---

### **Step 4: Configure Default Channels (Optional)**

**Screen 3: Get Started**

Discord will ask if you want to show "recommended channels" in onboarding.

**Our Answer:** Skip this screen.

**Why:** We want Wanderers to see ALL channels (FOMO strategy), not a curated list. They'll discover channels organically.

**How to skip:**
- In onboarding editor, don't add any "Default Channels" beyond #rules
- Just have: Welcome Screen → Rules Acceptance → Finish

---

### **Step 5: Configure Completion Action**

**What happens when they click "Finish":**

1. In onboarding editor, go to **"Completion Settings"**
2. **Role to assign:** `@Wanderer`
3. **Channel to send them to:** `#welcome` or `#general`

**Completion Message (in #welcome or #general):**
```
Welcome to Firefrost Gaming, [username]! 🔥❄️

You've joined as a **Wanderer** — explore our community, chat in #general, and see what we're all about.

Ready to dive deeper? Subscribe to unlock full access:
🔗 firefrostgaming.com

Need help? Open a ticket in #open-a-ticket anytime.
```

---

### **Step 6: Set Wanderer Permissions**

**In Server Settings → Roles → @Wanderer:**

**Channel Access:**
- ✅ See ALL channels (FOMO!)
- ✅ Can post in: #rules, #general, #open-a-ticket
- ❌ Cannot post in: Subscriber-only channels, Fire/Frost-specific channels, server channels

**Specific Permissions:**
```
View Channels: ✅ YES (for all channels)
Send Messages: ✅ YES (only in #general, #rules, #open-a-ticket)
Read Message History: ✅ YES
Add Reactions: ✅ YES
Use External Emojis: ✅ YES
Attach Files: ✅ YES (in allowed channels)
```

**How to set "can post in some channels but not others":**
- Base `@Wanderer` role: `Send Messages = ❌ NO` (deny by default)
- Per-channel overrides: Go to each channel → Permissions → @Wanderer → `Send Messages = ✅ YES`
  - #general: ✅ Allow
  - #rules: ✅ Allow
  - #open-a-ticket: ✅ Allow
  - All other channels: ⚫ Neutral (inherits deny from role)

---

### **Step 7: Test Wanderer Onboarding**

1. Create a test Discord account (or use alt account)
2. Join server with invite link
3. Verify flow:
   - ✅ See welcome message
   - ✅ See #rules content
   - ✅ Cannot skip without clicking "I Accept the Rules"
   - ✅ Assigned `@Wanderer` role after acceptance
   - ✅ Can see ALL channels
   - ✅ Can post in #general, #rules, #open-a-ticket
   - ✅ Cannot post in subscriber channels
4. If anything fails, review permissions and onboarding settings

---

## 🎨 STAGE 2: SUBSCRIBER ONBOARDING

### **Overview**

When Arbiter assigns a subscriber role (Awakened, Elemental, Knight, Master, Legend, Sovereign), we want **BOTH**:
1. Carl-bot DMs the new subscriber
2. Welcome message posted in #choose-your-roles with @mention

**Goal:** Make them feel seen, welcomed, and excited to customize their experience.

---

### **Step 1: Create #choose-your-roles Channel**

**In Discord → Server Settings → Channels:**

1. Create new text channel: **#choose-your-roles**
2. **Category:** Support (or create "Subscriber Lounge" category)
3. **Channel Description:**
```
🔥❄️ Customize Your Firefrost Experience

Choose your path, select your servers, and make this community yours.
```

**Permissions:**
- `@everyone`: ❌ Cannot see
- `@Wanderer`: ❌ Cannot see
- `@Awakened` (and all higher tiers): ✅ Can see and post
- `@Staff`: ✅ Full access

**How to set:**
- Channel Settings → Permissions
- Remove `@everyone` / `@Wanderer` view access
- Add each subscriber role with View Channel + Send Messages

---

### **Step 2: Set Up Carl-bot Reaction Roles in #choose-your-roles**

**Pin a message at the top:**
```
🔥❄️ **Welcome to the Family!** 🔥❄️

You're no longer a Wanderer — you're home.

Use the reaction roles below to customize your experience:
```

**Reaction Role Setup (via Carl-bot dashboard or commands):**

#### **Fire or Frost Path**
```
!rr create

**Choose Your Path:**
🔥 Fire — Bold, Passionate, Unfiltered
❄️ Frost — Strategic, Calculated, Precise

React below to choose your identity.
```

Add reactions:
- 🔥 → `@Fire` role
- ❄️ → `@Frost` role

---

#### **Server Selection**
```
!rr create

**Which servers do you play on?**
Select all that apply — you can change these anytime.

React to unlock server-specific channels:
```

Add reactions (examples — adjust to your actual servers):
- 🌍 → `@Overworld Players` role
- 🔮 → `@Arcane Academy Players` role
- 🏰 → `@Kingdom Builders` role
- 🚀 → `@Modpack Testers` role

Each role unlocks the corresponding server channel(s).

---

#### **Notification Preferences** (Optional)
```
!rr create

**Notification Preferences:**
📢 Announcements — Server news and updates
🎉 Events — Community events and giveaways
📰 Patch Notes — Modpack updates and changes

React to opt IN to notifications:
```

Add reactions:
- 📢 → `@Announcement Pings` role
- 🎉 → `@Event Pings` role
- 📰 → `@Patch Notes Pings` role

**Note:** These roles should be mentionable and used in respective channels for pings.

---

### **Step 3: Configure Carl-bot Welcome DM**

**In Carl-bot Dashboard → Welcomer:**

1. Enable **"Send welcome message via DM"**
2. **Trigger:** When user receives `@Awakened` role (or any subscriber tier)

**DM Message Template:**
```
🔥❄️ **Welcome to Firefrost Gaming, {user}!** 🔥❄️

You've unlocked full access as an **{role}** subscriber.

Here's what's new:
✅ All channels unlocked
✅ Full chat permissions
✅ Server-specific channels (choose in #choose-your-roles)
✅ Fire or Frost path selection
✅ Priority support

**Next step:** Visit #choose-your-roles to customize your experience and choose your path!

Questions? Open a ticket in #open-a-ticket anytime.

— The Firefrost Team 💙🔥❄️
```

**Variables:**
- `{user}` — Mentions the user
- `{role}` — Shows their subscriber tier (Awakened, Elemental, etc.)

**How to set trigger:**
- Carl-bot dashboard → Welcomer → "Trigger on role add"
- Select all subscriber tier roles: Awakened, Elemental, Knight, Master, Legend, Sovereign

---

### **Step 4: Configure Welcome Message in #choose-your-roles**

**Option A: Manual (Holly posts when someone subscribes)**

When you see a new subscriber in the server member list:
1. Go to #choose-your-roles
2. Post:
```
Welcome, @username! 🔥❄️

You're officially part of the Firefrost family. Choose your path and servers below to customize your experience.

If you have any questions, we're here to help!
```

**Option B: Automated (via Carl-bot or custom webhook)**

If Arbiter can trigger a webhook when assigning roles, send to Carl-bot or Discord webhook:

**Webhook Payload:**
```json
{
  "content": "Welcome, <@user_id>! 🔥❄️\n\nYou're officially part of the Firefrost family. Choose your path and servers below to customize your experience.\n\nIf you have any questions, we're here to help!"
}
```

**Webhook URL:** #choose-your-roles webhook (create in Channel Settings → Integrations)

**Option C: Michael can add webhook call to Arbiter**

In Arbiter 3.5.0, after assigning Discord role via API, call Discord webhook:
```javascript
// After successful role assignment
await fetch('https://discord.com/api/webhooks/[WEBHOOK_ID]/[WEBHOOK_TOKEN]', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    content: `Welcome, <@${discordUserId}>! 🔥❄️\n\nYou're officially part of the Firefrost family. Choose your path and servers below to customize your experience.\n\nIf you have any questions, we're here to help!`
  })
});
```

**Recommended:** Start with Option A (manual) until subscriber volume requires automation.

---

### **Step 5: Test Subscriber Onboarding**

1. Have Michael manually assign a subscriber role to a test account
2. Verify:
   - ✅ User receives Carl-bot DM
   - ✅ Welcome message appears in #choose-your-roles (if automated)
   - ✅ User can see #choose-your-roles channel
   - ✅ User can react to role selection messages
   - ✅ Roles are assigned correctly when reacting
   - ✅ Server channels unlock based on selections

---

# PART 2: MODPACKCHECKER SUPPORT ECOSYSTEM

## 🎯 THE STRUCTURE

MVC owners need comprehensive support options:

1. **#mvc-general** — Public chat for peer support, tips, discussion
2. **#mvc-support** — Private tickets via Ticket Tool (role-gated)
3. **🎙️ MVC Voice Support** — Voice channel for live troubleshooting
4. **📋 MVC Help Forum** — Forum channel for FAQs, guides, troubleshooting threads

**Access:** All gated to `@ModpackChecker Owner` role

---

## 🛠️ STEP 1: CREATE MODPACKCHECKER CATEGORY

**In Discord → Server Settings → Channels:**

1. Create new category: **📦 ModpackChecker**
2. **Position:** Below subscriber channels, above staff channels
3. **Permissions:**
   - `@everyone`: ❌ Cannot see
   - `@Wanderer`: ❌ Cannot see
   - `@ModpackChecker Owner`: ✅ Can see all channels
   - `@Wizard` (Michael): ✅ Full access
   - `@Staff` / `@Moderators`: ✅ Can see (optional — for community helpers later)

---

## 📱 STEP 2: CREATE #mvc-general (Text Chat)

**Channel Name:** `#mvc-general`  
**Type:** Text Channel  
**Category:** 📦 ModpackChecker

**Channel Topic:**
```
Chat, tips, and peer support for ModpackChecker owners. Ask questions, share configs, help each other troubleshoot. For official support, open a ticket in #mvc-support.
```

**Permissions:**
- Inherits from category (MVC Owner can see/post)

**Pin a welcome message:**
```
🔌 **Welcome to #mvc-general!**

This is your space to:
✅ Ask quick questions
✅ Share configs and tips
✅ Help other MVC owners troubleshoot
✅ Discuss feature requests

**Need official support?** Open a ticket in #mvc-support — Michael typically responds within 24 hours.

**Resources:**
📖 Full Documentation: [GitBook URL when ready]
🔧 Troubleshooting Guide: [Direct link]
🎟️ Official Support: #mvc-support

Happy troubleshooting! 🔥❄️
```

---

## 🎟️ STEP 3: ADD MVC SUPPORT TICKET CATEGORY

**In Ticket Tool Dashboard (tickettool.xyz):**

1. Go to **Panels → Edit Panel** (your existing support panel in #open-a-ticket)
2. Click **"Add Ticket Type"**

**Ticket Type Configuration:**

| Field | Value |
|-------|-------|
| **Name** | `ModpackChecker Support` |
| **Emoji** | 🔌 (or 📦 or ⚙️) |
| **Button Color** | Purple |
| **Welcome Message** | See below |
| **Support Roles** | `@Wizard` (Michael only — you're the only one who knows the code) |
| **Required Role** | `@ModpackChecker Owner` ← **CRITICAL SETTING** |
| **Category (Discord)** | 📦 ModpackChecker |
| **Ticket Name Format** | `mvc-{username}` |
| **Max Open Tickets Per User** | 1 |

**Welcome Message:**
```
Thanks for purchasing ModpackChecker! 🔌

Please describe your issue and include the following information:

**Panel Info:**
✅ Pterodactyl Panel version
✅ Blueprint version
✅ PHP version

**Modpack Info:**
✅ Platform (CurseForge/Modrinth/FTB/Technic)
✅ Modpack name and ID (if manual config)

**Error Details:**
✅ What you expected to happen
✅ What actually happened
✅ Screenshots of errors (if any)

**Response Time:** We typically respond within 24 hours. Support hours are Monday-Friday, 9 AM - 5 PM CST.

While you wait:
📖 Check the documentation: [GitBook URL]
💬 Ask in #mvc-general — other owners may have solved similar issues
📋 Browse the MVC Help Forum for FAQs

We'll be with you shortly!
```

**Save and Deploy Panel.**

**What this does:**
- Only users with `@ModpackChecker Owner` role can see the "ModpackChecker Support" button
- Creates private ticket in 📦 ModpackChecker category
- Michael gets notified
- Ticket includes pre-filled troubleshooting info

---

## 🎙️ STEP 4: CREATE MVC VOICE SUPPORT CHANNEL

**Channel Name:** `🎙️ MVC Voice Support`  
**Type:** Voice Channel  
**Category:** 📦 ModpackChecker

**Channel Settings:**
- **User Limit:** 10 (Michael + up to 9 buyers for group troubleshooting)
- **Bitrate:** 64 kbps (standard voice quality)
- **Video Quality:** Auto (allows screen sharing)

**Permissions:**
- Inherits from category (MVC Owner can join)
- `@Wizard`: ✅ Full permissions (priority speaker, mute/deafen others if needed)

**Channel Description:**
```
Voice support for real-time troubleshooting. 

**When to use:** Complex issues that need screen-sharing or live debugging.
**Availability:** Monday-Friday, 9 AM - 5 PM CST (when Michael is available).

Not required for most issues — text tickets in #mvc-support work great!
```

**Pin a message in #mvc-general about voice support:**
```
🎙️ **Voice Support Available**

For complex issues that need screen-sharing or live debugging, you can join 🎙️ MVC Voice Support.

**Availability:** Mon-Fri, 9 AM - 5 PM CST
**Use when:** Text troubleshooting isn't cutting it

Most issues are resolved via tickets — voice is optional!
```

---

## 📋 STEP 5: CREATE MVC HELP FORUM CHANNEL

**Channel Name:** `📋 MVC Help Forum`  
**Type:** Forum Channel  
**Category:** 📦 ModpackChecker

**Forum Settings:**

**Default Reaction Emoji:** ✅ (marks as solved)

**Available Tags:** (Create these in Forum Settings → Tags)
1. `FAQ` (Color: Blue)
2. `Troubleshooting` (Color: Orange)
3. `Configuration` (Color: Green)
4. `Bug Report` (Color: Red)
5. `Feature Request` (Color: Purple)
6. `CurseForge` (Color: Orange)
7. `Modrinth` (Color: Green)
8. `FTB` (Color: Yellow)
9. `Technic` (Color: Light Blue)
10. `Solved` (Color: Green) ← Auto-applied when thread is marked solved

**Default Layout:** List View

**Permissions:**
- Inherits from category (MVC Owner can create threads, post, react)
- `@Wizard`: ✅ Can manage threads, pin, lock, mark as solved

**Channel Guidelines (Pin at top):**
```
📋 **MVC Help Forum**

This is a searchable knowledge base for ModpackChecker owners.

**How to use:**
1. Search existing threads before posting — your question may already be answered!
2. Create a new thread for your question or tip
3. Add relevant tags (CurseForge, Modrinth, Troubleshooting, etc.)
4. Mark thread as ✅ Solved when your issue is resolved

**What to post:**
✅ Common issues and solutions
✅ Configuration examples
✅ Tips and tricks
✅ Feature requests
✅ Bug reports

**What NOT to post:**
❌ Support tickets (use #mvc-support for private help)
❌ Off-topic discussion (use #mvc-general)

Let's build a great resource together! 🔥❄️
```

---

### **Pre-Seed Forum with Initial Threads**

**Michael (or Holly) should create these starter threads:**

#### **Thread 1: FAQ - Getting Started**
**Title:** `[FAQ] Getting Started with ModpackChecker`  
**Tags:** FAQ, Configuration  
**Content:**
```
Welcome to ModpackChecker! Here's how to get started:

1. **Install the extension** via Blueprint
2. **Configure API keys** in Admin Panel → Extensions → ModpackChecker
3. **Wait for auto-detection** (runs every hour via cron)
4. **Check your dashboard** for update badges

**Supported Platforms:**
✅ CurseForge (auto-detection)
✅ Modrinth (auto-detection)
⚙️ FTB (manual config required)
⚙️ Technic (manual config required)

**Full Documentation:** [GitBook URL when ready]

Questions? Ask in #mvc-general or open a ticket in #mvc-support!
```

Mark as solved (✅), pin the thread.

---

#### **Thread 2: Troubleshooting - Badge is Gray**
**Title:** `[Troubleshooting] My badge shows gray / "Not Configured"`  
**Tags:** Troubleshooting  
**Content:**
```
If your dashboard badge is gray or says "Not Configured," this means:

❌ No modpack was auto-detected
❌ Manual configuration has not been set

**Common Causes:**
1. **Vanilla Server** — No modpack manifest exists
2. **Custom Modpack** — Not using CurseForge/Modrinth
3. **FTB/Technic Server** — Requires manual configuration
4. **Manifest File Deleted** — The installer removed manifest.json

**Solution:**
Use manual configuration in the server's Console Widget:
1. Click "Configure Manually"
2. Select platform (CurseForge, Modrinth, FTB, Technic)
3. Enter modpack ID
4. Save

The badge will update on the next cron run (every hour).

**Still stuck?** Open a ticket in #mvc-support with:
- Panel version
- Blueprint version
- Server details (modpack name, platform)
```

Mark as solved (✅), pin the thread.

---

#### **Thread 3: Configuration - Where to Find Modpack IDs**
**Title:** `[Configuration] How to find your modpack ID for manual config`  
**Tags:** Configuration, CurseForge, Modrinth, FTB, Technic  
**Content:**
```
When manually configuring a server, you need the modpack ID from the platform.

**CurseForge:**
1. Go to the modpack page (e.g., `curseforge.com/minecraft/modpacks/all-the-mods-9`)
2. Look at the URL — the ID is the number at the end: `715572`
3. OR: Look at `manifest.json` → `projectID` field

**Modrinth:**
1. Go to the modpack page (e.g., `modrinth.com/modpack/adrenaserver`)
2. The slug is the last part of the URL: `adrenaserver`
3. OR: Look at `modrinth.index.json` → Extract from `versionId` field

**FTB:**
1. Go to the FTB App modpack page
2. The ID is usually in the URL or modpack details
3. Contact FTB support if unclear

**Technic:**
1. Go to `technicpack.net/modpack/[slug]`
2. The slug is the modpack identifier (e.g., `tekkit-classic`)

**Still confused?** Open a ticket in #mvc-support with the modpack name and we'll help!
```

Mark as solved (✅), pin the thread.

---

## ✅ STEP 6: TEST MVC SUPPORT ECOSYSTEM

**Test Checklist:**

1. **Create test account with `@ModpackChecker Owner` role**
2. **Test #mvc-general access:**
   - ✅ Can see channel
   - ✅ Can post messages
   - ✅ Welcome message is pinned
3. **Test ticket access:**
   - ✅ Can see "ModpackChecker Support" button in #open-a-ticket
   - ✅ Clicking button creates ticket in 📦 ModpackChecker category
   - ✅ Welcome message shows correct info
   - ✅ Ticket is private (only user + Michael can see)
4. **Test voice channel:**
   - ✅ Can see 🎙️ MVC Voice Support
   - ✅ Can join channel
   - ✅ Can share screen (if needed for troubleshooting)
5. **Test forum channel:**
   - ✅ Can see 📋 MVC Help Forum
   - ✅ Can create new thread
   - ✅ Can add tags
   - ✅ Can mark as solved (✅)
   - ✅ Starter threads are visible and pinned

**If any tests fail, review permissions and channel settings.**

---

## 📊 WHAT THIS CREATES

### **For Wanderers:**
- Simple onboarding: Accept rules → Welcome home
- See ALL channels (FOMO effect)
- Can chat in #general, get support in #open-a-ticket
- Clear path to subscribe for full access

### **For Subscribers:**
- Warm welcome via DM + #choose-your-roles mention
- Full customization: Fire/Frost path, server selections
- Feel special, welcomed, part of the family

### **For MVC Owners:**
- `#mvc-general` — Quick questions, peer support, community
- `#mvc-support` — Private tickets, Michael responds 24 hrs
- `🎙️ MVC Voice Support` — Live troubleshooting when needed
- `📋 MVC Help Forum` — Searchable FAQs, guides, solved issues

**Complete support ecosystem. Professional, welcoming, scalable.** 🔥❄️💙

---

## 🔄 HANDOFF TO HOLLY

**Holly, here's your implementation checklist:**

### **Part 1: Onboarding (30-60 minutes)**
- [ ] Enable Discord Native Onboarding
- [ ] Configure welcome screen
- [ ] Set rules acceptance (required)
- [ ] Set `@Wanderer` role as completion action
- [ ] Configure Wanderer permissions (see all, post in some)
- [ ] Test with alt account

### **Part 2: Subscriber Onboarding (30-60 minutes)**
- [ ] Create #choose-your-roles channel
- [ ] Set up Carl-bot reaction roles (Fire/Frost, servers, notifications)
- [ ] Configure Carl-bot DM on role assignment
- [ ] Decide: Manual welcome messages or automated webhook?
- [ ] Test with test subscriber account

### **Part 3: MVC Support (60-90 minutes)**
- [ ] Create 📦 ModpackChecker category
- [ ] Create #mvc-general (text chat)
- [ ] Add MVC Support ticket type in Ticket Tool
- [ ] Create 🎙️ MVC Voice Support (voice channel)
- [ ] Create 📋 MVC Help Forum (forum channel)
- [ ] Pre-seed forum with 3 starter threads
- [ ] Test with test MVC Owner account

**Total Time:** 2-3 hours

**Questions?** Tag Michael or open a ticket in #open-a-ticket.

---

**Fire + Frost + Foundation = Where Love Builds Legacy** 💙🔥❄️

**Created by:** Chronicler #64  
**Date:** April 6, 2026  
**Status:** Ready for Holly to implement
