Back to home

Privacy Policy

Last updated: 1 November 2026

This is a draft, not legal advice.

It was written to describe how NullKit actually works, and it has not been reviewed by a legal professional. It must be reviewed by one before public launch. Anything highlighted in amber below is a placeholder that still has to be filled in.

This policy describes what personal data NullKit collects, why, how long it is kept and how to have it removed. It was written by going through the system's actual data model rather than from a template, so it describes what the code does today.

1. Who is responsible for your data#

NullKit is a Discord bot and web dashboard operated by James Byne, trading as NullKit, the data controller for the personal data described in this policy. The governing jurisdiction is the United Kingdom, and this policy is written against the UK GDPR and the Data Protection Act 2018.

For anything in this policy, including requests about your own data, contact contact@getnullkit.com.

One point needs a lawyer's view rather than ours. When NullKit stores data about members of a Discord server it has been added to, the server's owner decides what the bot is used for and what it records. That arrangement may make the server owner a controller in their own right, with NullKit acting as a processor, or it may make us joint controllers. This policy does not try to settle that question.

2. The short version#

3. Newsletter subscriptions#

If you submit your address to the newsletter form, a record is created containing your email address (trimmed and lowercased), the time you submitted it, the time you confirmed it if you have, a single-use confirmation token, a long-lived unsubscribe token, and the time the record was created. Nothing else is attached to it: no name, no Discord account, no location.

The legal basis is your consent, and the time of that consent is stored as part of the record.

The form uses a double opt-in design: a record is not treated as subscribed until a confirmation link is acted on, and an unconfirmed record is never sent anything other than its own confirmation. Note that confirmation emails are not being sent yet, because no email provider has been selected, so the confirmation step is in place but is not yet operating. Until a provider is wired up, a submitted address may also appear in our server-side application logs. If you have submitted an address and want it removed before then, contact us using the address above.

4. Signing in to the dashboard#

The dashboard signs you in with Discord. The permissions requested are identify and guilds, which give us your basic Discord profile and the list of servers you are in. They do not give access to your messages, and we never post as you.

Signing in does not create a record in our database. Your session is a signed cookie held by your browser, containing your Discord user id and an access token for calling Discord on your behalf. Your list of servers is fetched from Discord and held in a short-lived cache for 60 seconds so that every page view does not re-request it.

The legal basis is the performance of our agreement with you: without this we cannot show you the servers you are allowed to configure.

5. What the bot stores about Discord users#

If NullKit is in a server you are in, it may store records keyed to your Discord user id. A basic account record holds your Discord user id, username, discriminator where you still have one, and your avatar reference. It is created or updated when you join such a server, when you send a message in a server with levelling enabled, when you use an economy command, when you open a ticket, or when you are involved in a moderation action.

Depending on which features the server's administrators have turned on, the following may also be stored against your Discord user id:

The legal basis is legitimate interests: the server's operators need these records to run their community, moderate it and provide support. Where a server is in the UK or EU, the balance of those interests against your rights is the server operator's to strike as much as ours, which is part of why the responsibility question above needs a lawyer's view.

6. Paid plans and payments#

If a server subscribes to a paid plan, payment is handled by Stripe. We store the plan, its status, the Stripe customer, subscription and price identifiers, the billing period dates, and any pending plan change.

We do not receive or store card numbers, expiry dates or security codes. Those go to Stripe directly and are held by Stripe under its own terms and privacy policy.

7. Abuse prevention#

The public newsletter form is rate limited, which requires two short-lived counters. One is keyed by your IP address, taken from the forwarding header on the request and held for 10 minutes. The other is keyed by the submitted email address and held for 15 minutes. Both are counters rather than logs of activity, both expire automatically, and neither is used for any other purpose.

Both counters live in our short-lived cache, hosted by Upstash in London (eu-west-2), and never reach the database.

An IP address is personal data, so it is disclosed here even though it is held briefly and in the cache alone.

The legal basis is legitimate interests: without a limit, a public form that writes records and sends email can be used to flood our database or to send unwanted confirmation emails to someone else's address.

8. What we do not collect#

9. How long we keep it#

We want to be straightforward about the last point, because it is the weakest part of this policy. Removing NullKit from a Discord server does not currently delete that server's stored data, and leaving a server does not delete the records held about you in it. There is no automatic expiry on moderation records, ticket transcripts, application answers, levelling or economy data. Deletion is carried out manually when it is asked for, using the process in the next section but one. Automatic deletion is planned, and this policy will be updated when it exists rather than before.

10. Who your data is shared with#

We do not sell your personal data, and we do not share it for advertising or profiling.

11. Where your data is stored#

12. Your rights#

Under the UK GDPR you have the right to:

Exercising any of these is free, and we will respond within one month.

You also have the right to complain to the Information Commissioner's Office, the UK supervisory authority, at ico.org.uk. We would rather you contacted us first so we can put things right.

13. How to exercise your rights#

For the newsletter, use the unsubscribe link in any email, or contact us. Unsubscribing deletes the record immediately and completely, so there is nothing left to ask about afterwards.

For data the bot or dashboard holds, email contact@getnullkit.com and include your Discord user id, which is the key all of these records are stored against. You can find it in Discord by enabling Developer Mode and copying your own id. Tell us whether you want a copy of the data, a correction, or erasure, and which servers it concerns if you know.

Two honest limits. Some records exist because a Discord server's staff need them, such as moderation history, and erasing them may need the server operator's involvement. And where a record is also part of a server's own moderation history, we may need to keep a minimal record of the action for the server operator's legitimate interests even after removing what identifies you.

14. Children#

Discord's own terms require users to be at least 13, and older in some countries. NullKit is not directed at children, we do not knowingly collect data from anyone under the minimum age for their country, and we do not verify age ourselves. If you believe a child's data has been collected, contact us and we will remove it.

15. Changes to this policy#

If this policy changes, the date at the top changes with it. Where a change materially affects what we collect or why, we will say so rather than relying on you noticing the date.

16. Contact#

Questions, requests and complaints about this policy go to contact@getnullkit.com.