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#
- We do not store card details. Stripe handles payments and holds that data.
- We run no analytics, no tracking pixels and no third-party scripts.
- AI features record a count of how many calls a server made, never the prompts or the responses.
- Unsubscribing from the newsletter deletes your address outright rather than flagging it.
- Other data the bot stores is kept until removal is requested. There is no automatic deletion yet, and this policy says so plainly below.
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:
- Levelling and economy progress: experience, level, wallet and bank balances, daily streak, last message time, and economy transactions.
- Moderation records: the action taken, who took it, the reason given, any duration, a case number, your warning count, and where the AI explanation feature is used, a generated explanation of the action.
- Support tickets: the ticket itself, answers you gave to its form, the close reason, staff notes on it, and the message transcript including author names and avatars.
- Applications: your answers, a snapshot of the questions you were asked, the reviewing staff member and their reason, and the private thread used.
- Suggestions and reviews you post through the bot, including their text and any rating.
- Staff features, if you are a staff member: clock-in sessions and leave requests with their reasons and decisions.
- Invite attribution: which member invited you, and reward claims against invite milestones.
- Verification events, including the outcome of a verification attempt.
- Server configuration may include your user id where an administrator has, for example, blocked you from opening tickets.
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#
- No analytics or product telemetry of any kind. There is no Google Analytics, no tag manager, no Plausible, no PostHog and no third-party script on any page of this site.
- No advertising identifiers, and no sharing of data for advertising.
- No card or payment instrument data.
- No AI prompt or response content. The only thing recorded for AI features is a number: how many calls a server made in a given month.
9. How long we keep it#
- Newsletter records: until you unsubscribe, at which point the record is deleted outright rather than marked inactive.
- Rate-limiting counters: 10 minutes for the IP counter, 15 minutes for the address counter, after which they expire on their own.
- Dashboard server-list cache: 60 seconds.
- Everything else: kept until removal is requested.
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#
- Discord, which is where the bot operates and which authenticates you.
- Stripe, for payments and subscription management.
- Neon, which hosts the PostgreSQL database.
- Our hosting providers, which run the bot and the dashboard.
- Upstash, our cache provider, hosted in London (
eu-west-2), which holds the short-lived items described above. - An email provider, EMAIL PROVIDER once chosen, once the newsletter is operating. None has been selected at the time of writing, and no newsletter email has been sent.
We do not sell your personal data, and we do not share it for advertising or profiling.
11. Where your data is stored#
- The infrastructure we control is in the United Kingdom. The database is
hosted in Neon's London region (
eu-west-2), and the short-lived cache described in section 7 is hosted by Upstash in London (eu-west-2). The data controller is also in the United Kingdom, so neither involves an international transfer. - Between them those two hold everything this policy describes that we store ourselves. That does not by itself mean nothing ever leaves the United Kingdom, and we would rather say so than imply a guarantee we cannot give.
- Some of the third parties in the previous section are organisations based outside the United Kingdom, and may process data in other countries under their own terms. Discord is the clearest case: the service runs inside Discord, so anything you send in a Discord server reaches Discord's own systems regardless of where we store our records. Stripe processes payments under its own arrangements. The email provider, once one is chosen, may do the same, and our hosting providers may serve the site from outside the United Kingdom even though the data they read is held here.
- Where a transfer outside the United Kingdom does occur through one of those providers, it needs an appropriate safeguard, such as the UK International Data Transfer Agreement or the UK addendum to the European Commission's standard contractual clauses. Confirming which applies to each provider is outstanding, and this section will name them once it is settled.
12. Your rights#
Under the UK GDPR you have the right to:
- Ask what personal data we hold about you and get a copy of it.
- Have inaccurate data corrected.
- Have your data erased.
- Ask us to restrict how we use it, or object to our using it where we rely on legitimate interests.
- Receive your data in a portable form.
- Withdraw consent at any time, where consent is the basis we rely on. The newsletter is the case that applies 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.