The first component of strong community growth and engagement is making sure that the right people (aka “high-intent people”) are joining your server. In other words, you should consider “what are the characteristics of a member that will meaningfully contribute to the server, and where are (or aren’t) those members in my traffic sources?”
While the overall traffic source data trends can be helpful in explaining phenomena you’ve observed on your server, you could also use a Discord bot to track how individual members join your server. If you can think of a handful of good (or bad) members and find that they all came from the same invite link, this may provide valuable information about the quality of that traffic source.
For example, you may want to remove your invite link from traffic sources that attract users who:
However, you might want to add or further promote your invite link on traffic sources that bring users who:
Making these adjustments to your traffic sources will help you attract a higher proportion of users that will interact more quickly with other members (improving activation), and encourage them to subsequently return to your server more frequently and over a longer period of time (improving retention). However, this only accounts for the beginning of a member’s server experience. The next step is to further encourage these new members to interact.
Once you are attracting high-intent members to your server, you need to make sure that these new members are able to participate in your community and encourage them to do so. The best way to do this is to provide an easily understandable new member experience with a simple explanation of the server, and a clear ‘call to action’.
The first thing you should do is enable the Welcome Screen in order to guide new members through your server’s layout and purpose. Directing people to the most important channels and providing a ‘call to action’, such as “introduce yourself here” will help new members know how to start their interaction with the community. These channels should have informative, easy to understand content that helps people know the purpose and rules of the server, as well as how to navigate it and use any special features you’ve implemented through Discord bots. Be sure to use concise and easy to understand role and channel names.
Limiting the number of channels visible to new members may also help them navigate the server more easily. Especially if your users are new to Discord, having a long channel list can be overwhelming. Some users may immediately leave if there are too many channels in the server. Fortunately, channel categories can help you keep your channel list organized. Keeping no more than five channels in a category makes it easy to navigate, and putting the most active categories at the top allows users to jump into the conversation without needing to scroll through a long list of channels before they’re ready. You can also make some channels opt-in and require people to type a bot command or click a reaction in order to join it, allowing them to define their own server experience.
If you do need a significant amount of channels, include a welcome or informational channel at the top of your server that lists all of your channels with a brief description of their purpose. This will serve as a resource for new members that get lost in your server, and give them a quick overview of everything they can do.
You can also use a Discord bot to greet new members after they join, or even send them a direct message with a brief explanation of how to use your server. Mentioning new users in a general discussion channel gives them guidance about where they should start talking. Including a question prompt about your server’s topic, such as who their favorite character is in a game or anime, can encourage them to send that first message and start making connections. Regardless of what incentives or prompts you implement, getting members to participate in their first conversation is key to helping them find a place in your community.
Implementing a verification gate is a good way to protect your server from low-level trolls and spammers. However, it can also be a barrier to entry for legitimate members. In this case, you should ensure that your welcome screen guides members to the appropriate channels for members to verify and that your instructions for verifying are clear. If members still have issues completing verification, you may want to evaluate the most common mistakes and how you can better explain or implement the process. One option is to have a bot explain the process in a direct message or in a dedicated greeter channel
The next step is to ensure new members ultimately stick around and stay in the community. Improving member activation is an important component of achieving this step, since a user that has already interacted with other members of your community is much more likely to return and continue visiting your server. The concept of a user coming back to your server after their initial join is referred to as retaining a user. Discord measures “first week retention,” which is the proportion of members that visit your server again between seven and 14 days after joining.
*Unless you are using the channel description for verification instructions rather than an automatic greeter message.
If you want to use the remove unverified role method, you will need a bot that can automatically assign a role to a user when they join.
Once you decide whether you want to add or remove a role, you need to decide how you want that action to take place. Generally, this is done by typing a bot command in a channel, typing a bot command in a DM, or clicking on a reaction. The differences between these methods are shown below.
In order to use the command in channel method, you will need to instruct your users to remove the Unverified role or to add the Verified role to themselves.
If your server is focused around a game, TV show/series, anime, product or similar topic, invest in announcement channels that will provide your members with useful information and give them a reason to check on your server frequently. This includes both automated feeds, such as from a blog or a Twitter account, and manually curated news channels.
For example, giving new members a ‘news’ role when they join or allowing them to opt in to a news role will allow you to mention the role so that interested members can receive notice about important updates.
However, it’s important to make sure members can remove this role if they don’t want it, and not to abuse tagging it. Members that receive too many mentions from a server may be more likely to mute all mentions from the server or even just leave entirely. When applicable though, providing regular updates in this fashion gives members an excellent reason to visit regularly and remain engaged.
A more universal - though more difficult - method of increasing user retention is to always make sure there is something to talk about on your server. Increasing the proportion of visitors that become communicators can be as simple as providing channels where people can talk about your server’s topic with others, ask for help, or engage in meaningful discussion. If your server is about a game that receives constant updates, for example, then there may be plenty of existing conversation material. These conversations can be further encouraged by making use of a leveling system through a Discord bot. As people chat, they can gain “exp” and level up on your server. These levels can grant special roles to the users or even special permissions. Such systems create a goal for which members can strive, and give them another reason to keep coming back.
If you want to take matters into your own hands, consider implementing concerted community engagement efforts from your staff. This includes projects such as hosting server events, contests, and giveaways.
Markdown is also supported in an embed. Here is an image to showcase an example of these properties:
Example image to showcase the elements of an embed
An important thing to note is that embeds also have their limitations, which are set by the API. Here are some of the most important ones you need to know:
An important thing to note is that embeds also have their limitations, which are set by the API. Here are some of the most important ones you need to know:
If you feel like experimenting even further you should take a look at the full list of limitations provided by Discord here.
It’s very important to keep in mind that when you are writing an embed, it should be in JSON format. Some bots even provide an embed visualizer within their dashboards. You can also use this embed visualizer tool which provides visualization for bot and webhook embeds.
Once you’ve optimized your server to improve acquisition, activation, and retention, you need to measure the results of your efforts. Some changes may be immediately visible in your insights, while others (such as ones made to improve retention) can take a week or two to show their effects.
Currently, server insights gives you the option to view statistics on a daily, weekly, or monthly basis. These are all valuable ways to see how your server is performing in both the short and long term. However, it’s important to remember that because metrics such as communicators and visitors are tied to the individual user, the sum of the data for higher resolution time periods will not always equal the value for a lower resolution time period. For example, if one user visits your server every day for a week, they will be counted seven times if you view your insights at the daily level. However, if you view your insights at the weekly level, they will only count once. Analyzing your insights over multiple time resolutions may reveal slightly different patterns in each, and both the quantity and resolution of your data will affect your analysis results. While measuring changes in the first few days can help you understand any critical consequences, overall you should wait at least one or two weeks to ensure you have a representative amount of data and that daily variations are not complicating your insights.
It is important to note that depending on the nature of your community and what changes you’ve made that there is an almost infinite number of ways to interpret changes in your server insights. What might be bad for your server might be good for another, or vice versa. Keep in mind the following caveats as you read about measuring results:
While the guidelines listed here are excellent ways to begin to understand how your actions affect your member insights, they are only guidelines. You should always evaluate your metrics critically and in your community’s context.
Measuring acquisition is done using charts and tables on the Growth & Activation tab. Although constant or mild growth is important to maintain the longevity of your community, what these users are (or aren’t) doing after they join your server is much more important than just joining it. While you should take corrective action if you notice your total membership decreasing over a long period of time, there is no absolute growth percentage or total number of members joining per day that indicates a healthy community. The table below summarizes the suggested actions to take to improve the quality and/or quantity of members joining your server and how you could expect these changes to affect your server insights on their own.
Even though this comparison is important for better understanding of both bots and webhooks, it does not mean you should limit yourself to only picking one or the other. Sometimes, bots and webhooks work their best when working together. It’s not uncommon for bots to use webhooks for logging purposes or to distinguish notable messages with a custom avatar and name for that message. Both tools are essential for a server to function properly and make for a powerful combination.
*Unconfigurable filters, these will catch all instances of the trigger, regardless of whether they’re spammed or a single instance
**Gaius also offers an additional NSFW filter as well as standard image spam filtering
***YAGPDB offers link verification via google, anything flagged as unsafe can be removed
****Giselle combines Fast Messages and Repeated Text into one filter
Anti-Spam is integral to running a large private server, or a public server. Spam, by definition, is irrelevant or unsolicited messages. This covers a wide base of things on Discord, there are multiple types of spam a user can engage in. The common forms are listed in the table above. The most common forms of spam are also very typical of raids, those being Fast Messages and Repeated Text. The nature of spam can vary greatly but the vast majority of instances involve a user or users sending lots of messages with the same contents with the intent of disrupting your server.
There are subsets of this spam that many anti-spam filters will be able to catch. If any of the following: Mentions, Links, Invites, Emoji, and Newline Text are spammed repeatedly in one message or spammed repeatedly across several messages, they will provoke most Repeated Text and Fast Messages filters appropriately. Subset filters are still a good thing for your anti-spam filter to contain as you may wish to punish more or less harshly depending on the spam. Namely, Emoji and Links may warrant separate punishments. Spamming 10 links in a single message is inherently worse than having 10 emoji in a message.
Anti-spam will only act on these things contextually, usually in an X in Y fashion where if a user sends, for example, 10 links in 5 seconds, they will be punished to some degree. This could be 10 links in one message, or 1 link in 10 messages. In this respect, some anti-spam filters can act simultaneously as Fast Messages and Repeated Text filters.
Sometimes, spam may happen too quickly for a bot to catch up. There are rate limits in place to stop bots from harming servers that can prevent deletion of individual messages if those messages are being sent too quickly. This can often happen in raids. As such, Fast Messages filters should prevent offenders from sending messages; this can be done via a mute, kick or ban. If you want to protect your server from raids, please read on to the Anti-Raid section of this article.
Text filters allow you to control the types of words and/or links that people are allowed to put in your server. Different bots will provide various ways to filter these things, keeping your chat nice and clean.
*Defaults to banning ALL links
**YAGPDB offers link verification via google, anything flagged as unsafe can be removed
***Setting a catch-all filter with carl will prevent link-specific spam detection
A text filter is integral to a well moderated server. It’s strongly, strongly recommended you use a bot that can filter text based on a blacklist. A Banned words filter can catch links and invites provided http:// and https:// are added to the word blacklist (for all links) or specific full site URLs to block individual websites. In addition, discord.gg can be added to a blacklist to block ALL Discord invites.
A Banned Words filter is integral to running a public server, especially if it’s a Partnered, Community or Verified server, as this level of auto moderation is highly recommended for the server to adhere to the additional guidelines attached to it. Before configuring a filter, it’s a good idea to work out what is and isn’t ok to say in your server, regardless of context. For example, racial slurs are generally unacceptable in almost all servers, regardless of context. Banned word filters often won’t account for context, with an explicit blacklist. For this reason, it’s also important a robust filter also contains whitelisting options. For example, if you add the slur ‘nig’ to your filter and someone mentions the country ‘Nigeria’ they could get in trouble for using an otherwise acceptable word.
Filter immunity may also be important to your server, as there may be individuals who need to discuss the use of banned words, namely members of a moderation team. There may also be channels that allow the usage of otherwise banned words. For example, a serious channel dedicated to discussion of real world issues may require discussions about slurs or other demeaning language, in this exception channel based Immunity is integral to allowing those conversations.
Link filtering is important to servers where sharing links in ‘general’ chats isn’t allowed, or where there are specific channels for sharing such things. This can allow a server to remove links with an appropriate reprimand without treating a transgression with the same severity as they would a user sending a racial slur.
Whitelisting/Blacklisting and templates for links are also a good idea to have. While many servers will use catch-all filters to make sure links stay in specific channels, some links will always be malicious. As such, being able to filter specific links is a good feature, with preset filters (Like the google filter provided by YAGPDB) coming in very handy for protecting your user base without intricate setup however, it is recommended you do configure a custom filter to ensure specific slurs, words etc. that break the rules of your server, aren’t being said.
Invite filtering is equally important in large or public servers where users will attempt to raid, scam or otherwise assault your server with links with the intention of manipulating your user base to join or where unsolicited self-promotion is potentially fruitful. Filtering allows these invites to be recognized, and dealt with more harshly. Some bots may also allow by-server white/blacklisting allowing you to control which servers are ok to share invites to, and which aren’t. A good example of invite filtering usage would be something like a partners channel, where invites to other, closely linked, servers are shared. These servers should be added to an invite whitelist to prevent their deletion.
Raids, as defined earlier in this article, are mass-joins of users (often selfbots) with the intent of damaging your server. There are a few methods available to you in order for you to protect your community from this behavior. One method involves gating your server with verification appropriately, as discussed in DMA 301.You can also supplement or supplant the need for verification by using a bot that can detect and/or prevent damage from raids.
*Unconfigurable, triggers raid prevention based on user joins & damage prevention based on humanly impossible user activity. Will not automatically trigger on the free version of the bot.
Raid detection means a bot can detect the large number of users joining that’s typical of a raid, usually in an X in Y format. This feature is usually chained with Raid Prevention or Damage Prevention to prevent the detected raid from being effective, wherein raiding users will typically spam channels with unsavoury messages.
Raid-user detection is a system designed to detect users who are likely to be participating in a raid independently of the quantity of frequency of new user joins. These systems typically look for users that were created recently or have no profile picture, among other triggers depending on how elaborate the system is.
Raid prevention stops a raid from happening, either by Raid detection or Raid-user detection. These countermeasures stop participants of a raid specifically from harming your server by preventing raiding users from accessing your server in the first place, such as through kicks, bans, or mutes of the users that triggered the detection.
Damage prevention stops raiding users from causing any disruption via spam to your server by closing off certain aspects of it either from all new users, or from everyone. These functions usually prevent messages from being sent or read in public channels that new users will have access to. This differs from Raid Prevention as it doesn’t specifically target or remove new users on the server.
Raid anti-spam is an anti spam system robust enough to prevent raiding users’ messages from disrupting channels via the typical spam found in a raid. For an anti-spam system to fit this dynamic, it should be able to prevent Fast Messages and Repeated Text. This is a subset of Damage Prevention.
Raid cleanup commands are typically mass-message removal commands to clean up channels affected by spam as part of a raid, often aliased to ‘Purge’ or ‘Prune’.It should be noted that Discord features built-in raid and user bot detection, which is rather effective at preventing raids as or before they happen. If you are logging member joins and leaves, you can infer that Discord has taken action against shady accounts if the time difference between the join and the leave times is extremely small (such as between 0-5 seconds). However, you shouldn’t rely solely on these systems if you run a large or public server.
Messages aren’t the only way potential evildoers can present unsavoury content to your server. They can also manipulate their Discord username or Nickname to cause trouble. There are a few different ways a username can be abusive and different bots offer different filters to prevent this.
*Gaius can apply same blacklist/whitelist to names as messages or only filter based on items in the blacklist tagged %name
**YAGPDB can use configured word-list filters OR a regex filter
Username filtering is less important than other forms of auto moderation, when choosing which bot(s) to use for your auto moderation needs, this should typically be considered last, since users with unsavory usernames can just be nicknamed in order to hide their actual username.
Measuring the effects of changes to improve activation and/or retention is more complex than measuring acquisition due to their interrelated nature. The direct effect of your changes can be measured from the respective graphs for first day activation and users retained in the next week on the Growth & Activation tab. However, the implications of these changes extend to other parts of your insights as well. Improving first day activation tends to also improve user retention, and improving both of these will also affect charts and tables on the Engagement tab. Although these actions are not all designed to improve user retention, you can assume that any action that increases first day activation has a chance to increase user retention as well.
One additional component not included in the table is the effects of implementing a verification gate. The ramifications of a verification gate are difficult to quantify and not easily summarized. Verification gates make it harder for people to join in the conversation of your server, but in exchange help protect your community from trolls, spam bots, those unable to read your server’s language, or other low intent users. This can make administration and moderation of your server much easier. You’ll also see that the percent of people that visit more than 3 channels increases as they explore the server and follow verification instructions, and that percent talked may increase if people need to type a verification command.
However, in exchange you can expect to see server leaves increase. In addition, total engagement on your other channels may grow at a slower pace. User retention will decrease as well. Furthermore, this will complicate the interpretation of your welcome screen metrics, as the welcome screen will need to be used to help people primarily follow the verification process as opposed to visiting many channels in your server. There is also no guarantee that people who send a message after clicking to read the verification instructions successfully verified. In order to measure the efficacy of your verification system, you may need to use a custom solution to measure the proportion of people that pass or fail verification.
After taking the time to understand your community, you can begin to implement changes that improve your member experience and boost your server performance. However, the changes you make to your server can affect your community in varied and unexpected ways. Knowing what to expect is an important part of evaluating whether your changes had the desired effect, but careful analysis of your server insights with community context is vital to maintaining your server.
There are a multitude of ways to interpret your insights and a multitude of ways to improve them. This article is only one framework for doing so. Hopefully this has helped you make connections between the characteristics of your community, the way you manage it, and its overall performance so that you can broaden your understanding even further in the future.
Take the Discord Moderator Exam!Take the Exam