Legal
Subprocessors and Data Details
Effective Date: October 23, 2026
BabelBot uses the subprocessors below to provide its Discord bot, dashboard, and website. This page is the detailed layer of the BabelBot privacy notice. It also gives more information about data categories and retention. A provider can act as our processor or as an independent controller, depending on its service and legal duties. Read the Privacy Policy.
For data-processing agreement requests, transfer questions, or provider concerns, contact [email protected].
Current Subprocessors
Discord
- Legal Entity: Discord Inc., United States
- Purpose: Discord platform, bot gateway, OAuth login, server membership checks, messages, reactions, attachments, and account information required to operate BabelBot.
- Data Categories: Discord account IDs, server IDs, channel IDs, message content processed in real time, attachment URLs, OAuth profile data, and permission information.
- Hosting Region: United States and other regions where Discord operates.
- Transfer Safeguard: Standard Contractual Clauses, or the EU-US Data Privacy Framework where Discord is certified.
OpenRouter
- Legal Entity: OpenRouter, Inc., United States
- Purpose: AI inference for translation, language detection, text extraction from images and other media, and speech-to-text transcription.
- Data Categories: Message text, selected attachment content, voice audio for transcription, target language settings, and request metadata needed to return translations.
- Hosting Region: OpenRouter routes AI translation, media processing, and language detection to Google (Gemini) through Google Vertex AI's EU endpoint. Translation retries and fallback requests use that same EU endpoint. Voice chat and voice note transcription use OpenAI (Whisper). Those providers receive the content OpenRouter sends them. BabelBot uses OpenRouter's standard gateway. The EU model endpoint does not guarantee that OpenRouter's gateway processing stays in the EU. Gateway processing and Whisper transcription can occur in the United States and other regions those providers use.
- Transfer Safeguard: Standard Contractual Clauses or an adequacy decision for each transfer outside the European Economic Area, including the EU-US Data Privacy Framework where the provider is certified.
Railway
- Legal Entity: Railway Corporation, United States
- Purpose: Discord bot hosting, PostgreSQL hosting, and Redis hosting. Railway also provides logs and internal networking for these services.
- Data Categories: Discord message content processed by the bot, recent context, Discord and dashboard identifiers, translation feedback submitted through Discord forms, server configuration, bridge records, billing state, authentication data, and operational logs.
- Hosting Region: European Union (Netherlands).
- Transfer Safeguard: Data stays in the EU region. Railway's data processing addendum includes Standard Contractual Clauses for access from outside the European Economic Area.
Cloudflare
- Legal Entity: Cloudflare, Inc., United States
- Purpose: HTTPS delivery and protection of the website and dashboard. Storage of encrypted PostgreSQL backups in Cloudflare R2.
- Data Categories: IP address, requested URL, user agent, and security logs needed to deliver and protect the site. Encrypted PostgreSQL backups of the database records described in Data Details.
- Hosting Region: Global network for website and dashboard delivery. PostgreSQL backups are stored in an R2 bucket with EU jurisdiction, in the European Union.
- Transfer Safeguard: Standard Contractual Clauses, or the EU-US Data Privacy Framework where Cloudflare is certified.
Polar
- Legal Entity: Polar Software, Inc., United States
- Purpose: Checkout, subscription management, customer portal access, invoices, tax handling, payment records, and billing webhooks.
- Data Categories: Billing identifiers, customer records, subscription status, payment metadata, invoice data, tax records, and customer portal events.
- Hosting Region: European Union and other regions used for payment processing.
- Transfer Safeguard: Standard Contractual Clauses or an adequacy decision when Polar processes payment data outside the European Economic Area.
Resend
- Legal Entity: Plus Five Five, Inc., United States
- Purpose: Billing, account, and non-essential lifecycle emails for dashboard users and customers.
- Data Categories: Email addresses, delivery metadata, and email content for billing, account, abandoned checkout, and review request messages.
- Hosting Region: Ireland, European Union, for email sending. Resend stores customer data in the United States, including message content, delivery logs, webhook payloads, and account records.
- Transfer Safeguard: Standard Contractual Clauses, or the EU-US Data Privacy Framework where Resend is certified, for the stored data.
Infrastructure We Operate Ourselves
Suurd Digital runs the services below on its own server in the Netherlands. No other company operates them, so they are not subprocessors.
- Website and dashboard
- The public website, the BabelBot dashboard, and their cookieless web analytics. Cloudflare delivers both sites, as described above.
- SigNoz
- Service monitoring that we host ourselves. SigNoz receives traces, logs, and metrics from the Discord bot. These records contain identifiers, timing, languages, providers, and results. They do not contain message text, translations, or transcripts.
- Backup service
- Makes one encrypted PostgreSQL backup each day and sends it to Cloudflare R2. See Retention Details for how long backups stay.
Data Details
These descriptions explain the main technical data groups. They support the summary in the Privacy Policy without listing internal database fields or infrastructure keys.
- Messages and recent context
- BabelBot can temporarily keep the current message and up to five earlier eligible messages from the same channel or thread. Context records can include limited message text, message and author IDs, and timestamps. They expire after up to 15 minutes or when newer messages replace them.
- Attachments and media
- BabelBot receives attachment URLs, file metadata, embeds, stickers, and other Discord media needed for enabled translation features. Relevant content can be sent to an AI provider. BabelBot does not keep attachment files in its primary application storage.
- Live voice and voice notes
- When voice translation is enabled, BabelBot sends the audio to OpenRouter for transcription. BabelBot does not keep the audio after the transcript comes back. The transcript is then handled like other message text.
- Server settings and opt-outs
- BabelBot stores server and channel IDs, language settings, enabled features, ignored user IDs, bridge settings, webhook configuration, and other settings selected by server administrators. BabelBot keeps these records while it remains in the server. They expire 180 days after BabelBot leaves. If BabelBot rejoins during that period, BabelBot keeps them while it remains in the server.
- Dashboard setting history
- Setting-change records can include the acting dashboard account ID or name, source, time, action, and safe before-and-after summaries. The summaries omit custom-word text, bot profile content, and bridge webhook credentials. The dashboard shows up to 500 successful entries from the last 90 days.
- Dashboard accounts
- Dashboard records can include Discord account details, email address, profile image, OAuth tokens, sessions, IP address, user agent, roles, access restrictions, and account-administration metadata.
- Usage and billing
- BabelBot stores translation totals, quota records, plan status, customer and subscription identifiers, billing events, and support records. Usage counters do not contain message text.
- Translation feedback
- When a member reports a translation from a translation embed in a Discord thread, BabelBot stores the submitted problem description, optional suggested correction, Discord and translation identifiers, locale, and timestamps. The database feedback record does not copy the original message or translated text. If configured, an optional private Discord support webhook receives the feedback, any correction, relevant identifiers, and a link to the translation. The link can let authorized maintainers open the Discord translation, subject to their server access.
- Bridges and diagnostics
- Bridge records connect source messages to translated copies so BabelBot can synchronize edits, deletions, replies, and reactions. Message sync records for bridges, replacements, and reply and thread translations contain Discord IDs, delivery state, and a short fingerprint of the message. They do not store message text or translations. Reply previews store the quoted author's name, a short quote, and a message link. BabelBot deletes a preview 30 days after the reply is delivered. Diagnostic records can include Discord, provider, model, outcome, timing, and error identifiers. Authorized diagnostic exports can contain current Discord message content, author data, attachment URLs, and related metadata.
- Analytics and local storage
- BabelBot self-hosts cookieless analytics and performance measurement for the website and dashboard. We do not send this analytics data to the analytics software vendor. Data can include page views, interactions, referrers, browser or device category, approximate location, and performance information. Cookies and browser storage support authentication, locale, interface preferences, and onboarding state. BabelBot does not use advertising cookies.
- Recovery backups and logs
- Recovery backups contain the PostgreSQL database: server settings and setting history, billing and usage records, bridge and message sync records, translation feedback, saved target languages, and dashboard accounts and sessions. Operational logs can contain request metadata, Discord identifiers, provider results, and error information.
Retention Details
| Data group | Current retention |
|---|---|
| Recent message context | Kept for up to 15 minutes. |
| Message sync records | BabelBot keeps message sync records for bridges, replacements, and reply and thread translations. Each record stores Discord IDs, delivery state, and a short fingerprint of the message. The fingerprint shows if the message changed. Message sync records do not store message text or translations. BabelBot deletes the sync record of a reply or thread translation 30 days after it posts that translation. New bridge and replacement records have no age-based expiry. Existing Redis bridge records keep their original expiry, normally 30 days after creation. Reply previews store the quoted author's name, a short quote, and a message link. BabelBot deletes a preview 30 days after the reply is delivered. |
| Recent translation records | A 48-hour history. The records expire after 72 hours without new activity. |
| Daily usage aggregates | 180 days after the last update. |
| Translation feedback | The database record is scheduled for deletion 90 days after submission. Copies in internal support tools follow the retention rules for those tools. |
| Accounting records | At least seven years where Dutch tax law requires it. |
| Monthly usage totals | 13 calendar months after the recorded month ends. |
| Saved target language | 180 days after the member last sets or uses it. |
| Server setup and billing records | Kept while BabelBot remains in the server. They expire 180 days after BabelBot leaves. Rejoining during that period removes this expiry. |
| Dashboard setting history | The dashboard shows up to 500 successful entries from the last 90 days. BabelBot deletes the underlying record after 90 days. |
| Email limits | Email event records expire after 400 days. Monthly abandoned-checkout email limits expire 62 days after the recorded month ends. |
| Sign-in storage | BabelBot uses the expiry supplied by the sign-in service. If that expiry is missing or invalid, the record expires after 30 days. |
| Removal tasks | Records used to finish removing deleted channels and webhooks expire after 30 days. Translation thread deletion records expire 365 days after the scheduled deletion time. |
| Admin-requested troubleshooting files | BabelBot deletes an admin-requested troubleshooting file 30 days after the export, or 90 days after the related support request closes, whichever is later. |
| Recovery backups | A backup service on our own infrastructure makes one encrypted PostgreSQL backup each day. It stores the backup in Cloudflare R2, in a bucket with EU jurisdiction. BabelBot keeps each backup for 90 days and then deletes it. Deleting data from the live service does not delete the same data from existing backups. That data remains until the backup expires. BabelBot uses backups only to restore the service. |
| Dashboard accounts and sessions | Kept while the account remains active or while needed for security, fraud prevention, recovery, support, billing, and legal duties. Expired sessions can be removed earlier. |
| Operational logs | Traces and logs are kept for 15 days. Metrics are kept for one month. |
Changes to This List
We update this page when our subprocessors or data details change. We add a dated row to the change history below for each change.
| Date | Change |
|---|---|
| October 23, 2026 | BabelBot no longer records install source, setup milestones, first payment or active-server events for measurement. We removed that section and its retention period. |
| October 20, 2026 | We no longer update this page 30 days before a new subprocessor starts. We no longer send emails about new subprocessors. We now update this page when the list changes. |
| October 19, 2026 | BabelBot no longer stores cancellation reasons. Polar keeps the reason and comment you give when you cancel a subscription. |
| October 17, 2026 | Cloudflare now also stores encrypted PostgreSQL backups in the European Union. Railway no longer stores backups. BabelBot no longer backs up Redis. We removed Discord Analytics. We added the section about infrastructure we operate ourselves. |