Because we plan meeting locations in our Discord server, we ensure that only students at our university can access sensitive message channels.
Previously, new members had to fill out a Google Form while signed into their university Google account. It would then take up to a week for an officer to manually grant them elevated permissions in our Discord server. The new system grants members immediate access to our Discord server if they have a current university email address.
What used to take days now takes seconds, improving our ability to engage with prospective members.
This flowchart depicts the user-facing steps and back-end processing that makes up the email verification system.
Users begin by selecting 'Verify with NetID'
↓
Users enter their email address while still signed into Discord
On submission, Discord's servers POST the users's email address, name, and Discord account ID to my server. Because these requests are signed, my server can use its key to ensure that the request originated from Discord and that its payload has not been altered. This way, I can safely attribute the user's Discord ID with their email address.
↓
Users receive an email containing a verification link
The URL's query string has a JWT which contains the user's Discord ID and an expiration date. Because it is also signed, my server can later verify that the JWT was generated by itself and that the payload is authentic.
↓
A page on our website has a button which grabs the JWT from the query string and POSTs it to my server
If the JWT is valid, my server will make the Discord API requests necessary to grant the user elevated permissions in our Discord server.
↓
Verification is complete! Users receive a confirmation message.
© 2026 Rishi Roy
Unless otherwise stated, all images are my own work. (I'm a photographer, after all!)