{
  "schema": "launchmyserver.blueprint/v1",
  "source": "https://launchmyserver.com/templates/saas-customer-community",
  "updated": "2026-11-12",
  "slug": "saas-customer-community",
  "name": "SaaS Customer Community",
  "title": "SaaS Customer Community Discord Server Template",
  "description": "Discord server template for SaaS teams: support forum with tags, feature requests, bug reports, beta channels, ticket bot, roles and AutoMod rules.",
  "tagline": "For SaaS founders, dev tools and beta programs.",
  "bestFor": [
    "SaaS products with a user community",
    "Dev tools and open-source projects",
    "Beta tester programs"
  ],
  "sizeHint": "Designed to scale to 10,000+ members with forums instead of chat for support.",
  "discord_template_url": null,
  "categories": [
    {
      "name": "START HERE",
      "channels": [
        {
          "name": "welcome",
          "type": "text",
          "topic": "What this server is for, where to get support, response times.",
          "access": "Everyone can read; only Staff can post"
        },
        {
          "name": "rules",
          "type": "text",
          "topic": "Community rules and code of conduct.",
          "access": "Everyone can read; only Staff can post"
        },
        {
          "name": "announcements",
          "type": "announcement",
          "topic": "Product news. Members can Follow this into their own servers.",
          "access": "Everyone can read; only Staff can post"
        },
        {
          "name": "changelog",
          "type": "announcement",
          "topic": "Release notes, posted automatically by webhook.",
          "access": "Everyone can read; only Staff can post"
        }
      ]
    },
    {
      "name": "SUPPORT",
      "channels": [
        {
          "name": "help",
          "type": "forum",
          "topic": "One post per question. Tags: Billing, Bug, How-to, Integrations, Solved. Search before posting.",
          "access": "Members can read and post"
        },
        {
          "name": "bug-reports",
          "type": "forum",
          "topic": "Template: steps to reproduce, expected, actual, version, screenshots.",
          "access": "Members can read and post"
        },
        {
          "name": "open-a-ticket",
          "type": "text",
          "topic": "Account or billing issue that needs privacy? Press the button.",
          "access": "Everyone can read; nobody posts (ticket panel only)"
        }
      ]
    },
    {
      "name": "PRODUCT",
      "channels": [
        {
          "name": "feature-requests",
          "type": "forum",
          "topic": "One idea per post. Upvote with the default reaction. Tags: Planned, In progress, Shipped, Not planned.",
          "access": "Members can read and post"
        },
        {
          "name": "show-and-tell",
          "type": "forum",
          "topic": "What you built with the product.",
          "access": "Members can read and post"
        },
        {
          "name": "general",
          "type": "text",
          "topic": "Chat with other users.",
          "access": "Members can read and post"
        }
      ]
    },
    {
      "name": "BETA",
      "channels": [
        {
          "name": "beta-announcements",
          "type": "text",
          "topic": "Builds, test plans and known issues.",
          "access": "Beta Tester role only; Staff posts"
        },
        {
          "name": "beta-feedback",
          "type": "forum",
          "topic": "Feedback on beta features.",
          "access": "Beta Tester role only"
        }
      ]
    },
    {
      "name": "LIVE",
      "channels": [
        {
          "name": "office-hours",
          "type": "stage",
          "topic": "Monthly roadmap and Q&A sessions.",
          "access": "Members listen; speakers invited by Staff"
        }
      ]
    },
    {
      "name": "STAFF",
      "channels": [
        {
          "name": "team",
          "type": "text",
          "topic": "Internal coordination.",
          "access": "Hidden from everyone except Staff"
        },
        {
          "name": "mod-log",
          "type": "text",
          "topic": "AutoMod alerts and bot logs.",
          "access": "Hidden from everyone except Staff"
        },
        {
          "name": "ticket-transcripts",
          "type": "text",
          "topic": "Closed ticket transcripts.",
          "access": "Hidden from everyone except Staff"
        }
      ]
    }
  ],
  "roles": [
    {
      "name": "Admin",
      "color": "#2f5d50",
      "purpose": "Founders",
      "permissions": [
        "Administrator"
      ],
      "assignedBy": "Owner, manually"
    },
    {
      "name": "Team",
      "color": "#e9b44c",
      "purpose": "Employees: support, product, engineering",
      "permissions": [
        "Manage Messages",
        "Manage Threads",
        "Timeout Members",
        "Manage Events",
        "View Audit Log"
      ],
      "assignedBy": "Admin"
    },
    {
      "name": "Community Mod",
      "color": "#f7b731",
      "purpose": "Trusted volunteers",
      "permissions": [
        "Manage Messages",
        "Manage Threads",
        "Timeout Members"
      ],
      "assignedBy": "Team"
    },
    {
      "name": "Customer",
      "color": "#4b7bec",
      "purpose": "Verified paying customer (badge + priority)",
      "permissions": [
        "None extra; used for priority tags"
      ],
      "assignedBy": "Linked Roles or Team after verification"
    },
    {
      "name": "Beta Tester",
      "color": "#8854d0",
      "purpose": "Opted into beta program",
      "permissions": [
        "View BETA category"
      ],
      "assignedBy": "Onboarding question or Team"
    },
    {
      "name": "Release pings",
      "color": "#a5b1c2",
      "purpose": "Opt-in changelog pings",
      "permissions": [
        "None"
      ],
      "assignedBy": "Onboarding question"
    }
  ],
  "permissionNotes": [
    "@everyone can view START HERE, SUPPORT, PRODUCT and LIVE; deny View Channel on BETA and STAFF.",
    "#open-a-ticket: deny Send Messages for @everyone; the ticket bot needs Manage Channels and Manage Roles to create private ticket channels.",
    "Forum channels: allow Create Posts for @everyone; restrict Manage Threads (and tag editing) to Team and Community Mod.",
    "The webhook for #changelog needs no bot: Channel settings > Integrations > Webhooks."
  ],
  "onboarding": [
    {
      "question": "How do you use the product?",
      "required": true,
      "multiSelect": false,
      "options": [
        {
          "label": "I'm a paying customer",
          "grants": "Shows #help and #open-a-ticket first (Customer role via verification)"
        },
        {
          "label": "I'm on a free plan or trial",
          "grants": "Default channels"
        },
        {
          "label": "I'm evaluating it",
          "grants": "Shows #show-and-tell and #general"
        }
      ]
    },
    {
      "question": "What are you interested in?",
      "required": false,
      "multiSelect": true,
      "options": [
        {
          "label": "Getting help",
          "grants": "#help, #bug-reports"
        },
        {
          "label": "Shaping the roadmap",
          "grants": "#feature-requests"
        },
        {
          "label": "Testing beta features",
          "grants": "Beta Tester role"
        },
        {
          "label": "Release pings",
          "grants": "Release pings role"
        }
      ]
    }
  ],
  "automod": [
    {
      "rule": "Block Mention Spam",
      "setting": "On. Start with a low mention limit per message (Discord lets you choose the number) and enable raid protection.",
      "response": "Block message + send alert to #mod-log + timeout member"
    },
    {
      "rule": "Block Suspected Spam Content",
      "setting": "On for all channels.",
      "response": "Block message + send alert to #mod-log"
    },
    {
      "rule": "Block Commonly Flagged Words",
      "setting": "Enable the preset lists (insults and slurs, sexual content, severe profanity) that match your audience.",
      "response": "Block message with a short custom explanation"
    },
    {
      "rule": "Custom keyword rule: scams",
      "setting": "Keywords such as *free nitro*, *steam gift*, *airdrop*, *crypto giveaway*, *dm me for*. Exempt Staff.",
      "response": "Block message + alert #mod-log + timeout member"
    },
    {
      "rule": "Member profile filter",
      "setting": "Block the same scam terms plus impersonation patterns like *admin*, *support team*, *moderator* in usernames and nicknames.",
      "response": "Block member from interacting until they change their name"
    },
    {
      "rule": "Custom keyword rule: invite links",
      "setting": "Block *discord.gg/* and *discord.com/invite* outside staff. Exempt Team and Community Mod.",
      "response": "Block message + alert #mod-log"
    }
  ],
  "bots": [
    {
      "name": "Ticket Tool",
      "url": "https://tickettool.xyz",
      "job": "Private support tickets",
      "why": "A button panel that opens a private channel between a member and staff, with transcripts. Set up from its web dashboard.",
      "optional": false
    },
    {
      "name": "Carl-bot",
      "url": "https://carl.gg",
      "job": "Role menus, logging, tags",
      "why": "Reliable reaction/button role menus for anything Onboarding doesn't cover, detailed mod logs, and saved 'tags' for answers you type every week.",
      "optional": false
    },
    {
      "name": "GitHub (webhook)",
      "url": "https://docs.github.com/en/webhooks",
      "job": "Changelog and release posts",
      "why": "GitHub webhooks can post releases to a Discord webhook URL (append /github) with no bot to maintain.",
      "optional": true
    },
    {
      "name": "Statbot",
      "url": "https://statbot.net",
      "job": "Analytics beyond Server Insights",
      "why": "Message and voice activity by channel and member over time, useful once you want retention data.",
      "optional": true
    },
    {
      "name": "Wick",
      "url": "https://wickbot.com",
      "job": "Anti-raid and anti-nuke",
      "why": "Extra protection for public or fast-growing servers: raid detection and limits on destructive admin actions.",
      "optional": true
    }
  ],
  "welcomeMessages": [
    {
      "where": "#welcome",
      "text": "Welcome to the {Product} community.\n\n**Need help?** Search #help first; most answers are already there. If not, create a post with the right tag.\n**Found a bug?** Use #bug-reports and fill in the template.\n**Private account or billing issue?** Open a ticket in #open-a-ticket. Never share passwords or API keys in public channels.\n**Have an idea?** Post it in #feature-requests and upvote others.\n\nThe team answers on weekdays, {hours} {timezone}."
    },
    {
      "where": "#bug-reports (forum guidelines)",
      "text": "**Steps to reproduce:**\n**Expected:**\n**What happened:**\n**Plan / version / browser:**\n**Screenshot or video:**"
    },
    {
      "where": "Server Guide welcome message",
      "text": "Hi [@username]! Search #help before posting; most questions are answered there."
    }
  ],
  "checklist": [
    {
      "phase": "Before you start",
      "items": [
        "Decide support hours and publish them",
        "Decide what goes to tickets vs public forum (billing, account data = tickets)"
      ]
    },
    {
      "phase": "Structure",
      "items": [
        "Create roles, categories and channels",
        "Create forum tags and post guidelines for #help, #bug-reports, #feature-requests",
        "Set a default reaction (for example 👍) on #feature-requests for voting"
      ]
    },
    {
      "phase": "Community features",
      "items": [
        "Enable Community",
        "Onboarding questions and default channels",
        "AutoMod rules, alerts to #mod-log",
        "Make #announcements an Announcement channel so customers can follow it"
      ]
    },
    {
      "phase": "Bots and automation",
      "items": [
        "Ticket Tool: invite, configure panel on the dashboard, send panel to #open-a-ticket, set transcripts channel",
        "Webhook for #changelog from GitHub releases or your changelog tool",
        "Optional: Linked Roles to verify customers"
      ]
    },
    {
      "phase": "Launch",
      "items": [
        "Seed #help with your 10 most common questions as solved posts",
        "Add the invite link to your app's help menu and docs",
        "Run the first office hours as a Scheduled Event"
      ]
    }
  ],
  "guides": [
    "https://launchmyserver.com/guides/discord-server-for-saas-community",
    "https://launchmyserver.com/guides/searchable-discord-support-forum",
    "https://launchmyserver.com/guides/discord-ticket-bot-setup",
    "https://launchmyserver.com/guides/github-discord-integration"
  ],
  "notice": "LaunchMyServer is an independent service. Not affiliated with, endorsed by or sponsored by Discord Inc. Discord is a trademark of Discord Inc."
}