Privacy for server operators
Controller and processor roles, what to tell players, consent records, retention and erasure requests including the Roblox webhook.
5 min read
When you use Modhelm, you process personal data of your players: Discord IDs, Roblox IDs, descriptions, videos. This page explains the roles, what Modhelm does for you and what you have to do yourself. It is practical guidance, not legal advice.
Roles: you are the controller, Modhelm is the processor
- You, the operator of the Discord server, decide why and how player data is processed. You are the controller under Art. 4 (7) GDPR.
- Modhelm processes the data on your behalf and only on your instructions. Modhelm is your processor under Art. 28 GDPR.
- The Data Processing Agreement you accept in the dashboard is the written contract the GDPR requires. It is available at modhelm.com/dpa and under Terms in the dashboard, with the version you accepted and the date.
For the network wide verification Modhelm acts in its own name, because one verification serves many servers. The privacy policy at modhelm.com/privacy covers that part.
What is processed
| Data | Source | Purpose |
|---|---|---|
| Discord ID and username of reporters and appellants | Discord sign in | Questions, result messages |
| Roblox ID, names, picture, account age of reported players | Public Roblox profile | Identify the player, show context |
| Descriptions, answers, videos, pictures, links | The reporter | Evidence for the decision |
| Bans, reasons, durations, notes | Your team | Moderation history |
| Roblox ID of banned players and the public reason | Your team | Sent to Roblox to enforce the ban |
| Consent records | The person | Proof of consent |
Data is stored on servers in Germany. API keys, bot tokens and OAuth tokens are encrypted at rest.
What you have to tell your players
Art. 13 GDPR requires that people know what happens with their data. Modhelm helps with:
- A generated privacy notice in your portal at
/privacy, naming you as the controller with the contact email you entered, listing the data, purposes, recipients, retention periods and rights. - A consent checkbox before every report, unban request and verification, never pre-ticked.
You still need your own privacy policy and imprint. Enter their links under Settings > Portal > Legal pages. For a custom domain they are mandatory.
Consent records
Every consent is recorded with: who (Discord or Roblox ID), what for (report, unban request, verification, Roblox link, terms, DPA), the version and a SHA-256 fingerprint of the exact text in the language shown, the time, the source (web or Discord), a keyed hash of the IP address and a shortened user agent. Clear IP addresses are never stored.
Players see their own records under My data. You can request the records for your server from support if you need them for an inquiry.
Retention
| Data | Kept until |
|---|---|
| Reports without a punishment | 180 days after the decision |
| Reports with a punishment, the punishment, related unban requests | One year after the punishment ended |
| Notes | Until deleted, or with the player's data |
| Verification | Until the person deletes it |
| Audit log | 14, 90 or 365 days depending on the plan |
| Everything of a server | Deleted when you delete the server data or remove the server |
Deletion runs automatically. You do not need to clean up by hand.
Rights of players
Players can ask you for access, correction, deletion, restriction and a copy of their data. Modhelm gives you the tools:
- Access and copy: the player page shows everything stored about one player. Data > Export downloads all data of the server as JSON.
- Deletion: see below.
- Verification data: players delete it themselves under My data or with
/unverify.
You have one month to answer a request (Art. 12 (3) GDPR).
Erasure requests
There are three ways to delete everything your server stores about one Roblox player:
- Player page > Delete player data. Type the name to confirm. Reports with all evidence, notes, unban requests and punishments of this player on this server are deleted.
- API:
DELETE /api/v1/players/{robloxUserId}with a token that has the "Delete player data" permission. See API. - Roblox erasure webhook: automatic, see below.
In all three cases:
- Active bans stay in place on Roblox. Modhelm forgets them, but Roblox keeps the restriction. If the player should be unbanned, lift the ban first. The result tells you how many bans are still active.
- Messages already posted in Discord are not removed. Delete them by hand if needed.
- Data on other servers is not touched.
- The audit log keeps an entry that an erasure happened, without the player's ID.
Set up the Roblox erasure webhook
When a Roblox user asks Roblox to delete their personal data, Roblox notifies the creators of the experiences the user played. Roblox sends this only by webhook; there is no API to ask for it. Connect the webhook once and Modhelm deletes the player's data on your server automatically.
- In the dashboard, open Settings > Team & API > Roblox data deletion and click Create secret. Copy the Webhook URL and the Secret.
- Open the Creator Hub and go to Webhooks in the settings of the account or group that owns your experience.
- Click Add webhook.
- Paste the URL into the webhook URL field:
https://modhelm.com/api/roblox/webhook/<your-server-id>- Paste the secret into the Secret field.
- Under Triggers, select Right to erasure request.
- Save.
Modhelm verifies every delivery with the secret (HMAC-SHA256 over the timestamp and body), rejects old or repeated notifications and then runs the same deletion as the button on the player page. The audit log records that Roblox asked.
If you created a new secret in the dashboard, update it in the Creator Hub, otherwise deliveries are rejected.
Server data
Under Data you can export all data of the server as one JSON file and delete all data of the server permanently. Cancel your subscription first, otherwise it keeps running.
DSA and bans
Players who are banned see the reason and the duration in Roblox and get a way to appeal through the portal. That matches what the Digital Services Act expects from a statement of reasons and an internal complaint system. Write reasons that explain the decision, not just the rule number.