Privacy Policy
Updated: 17 Feb 2026
Scope
This privacy policy applies to the marketing website https://sandbank.cloud as well as the Sandbank web application (app), opt‑in features (waitlist, newsletter, product updates, discounts, blog updates) and our internal admin area (Admin Console).
We process data in accordance with the GDPR and applicable e‑privacy rules (e.g. TDDDG).
The website is aimed exclusively at businesses.
Roles in B2B SaaS (controller / processor)
Sandbank is a B2B SaaS application. Depending on the processing activity, we act either as controller or as processor.
- As controller we process account, security, billing and support data that is required to provide and operate the service.
- For data that customers connect or upload to Sandbank (“Customer Content”), the customer typically acts as controller. We process such data as a processor under a DPA (Art. 28 GDPR).
Data subject rights note: If your data is included in a customer’s Customer Content (e.g. as an employee), please contact the respective customer (e.g. your employer). For requests about your Sandbank account data you can use the DSAR features in the in‑app privacy panel or contact us (support@sandbank.cloud).
1. Controller
Zweigen
Paul Zehm (sole proprietorship)
Koberg 20
23552 Lübeck
Germany
2. Data Protection Officer
No DPO appointed (not legally required).
3. Legal bases, storage locations, recipients, withdrawal
We process personal data on the following legal bases:
- Art. 6(1)(a) GDPR (consent): web analytics (PostHog), newsletter/marketing (opt‑in).
- Art. 6(1)(f) GDPR (legitimate interests): operation and security of the website, WAF filtering, rate‑limits, anti‑abuse, documentation of double opt‑in.
- Art. 6(1)(b) GDPR: pre‑contractual communications (email/phone).
You may withdraw consent at any time, e.g. via “Cookie settings” in the footer or by emailing support@sandbank.cloud.
Right to object (Art. 21 GDPR): You may object at any time to processing based on legitimate interests (Art. 6(1)(f) GDPR), e.g. by emailing support@sandbank.cloud.
3.1 Requirement to provide data
Some data is required to provide certain functionality:
- Account/sign-in: without a business email and required authentication data we cannot provide an account.
- Billing: without contract and invoice data (e.g. company name, billing address; VAT ID where provided) we cannot correctly bill paid services.
- Optional: consent-based web analytics (PostHog) and newsletter/opt-in are optional; the service can generally be used without this consent.
4. Hosting, security, server & WAF logs
Our website servers run in European data centres provided by OVHcloud S.A.S. (EU). Domain management and our email inboxes are provided by mittwald CM Service GmbH & Co. KG (Germany/EU).
We use an OVHcloud load balancer with Web Application Firewall (OWASP CRS) plus self‑hosted observability (OTEL/SigNoz, EU) and a dedicated Redis database for rate‑limits (EU).
4.1 Processed log data (site + /api/public/opt-in)
When visiting our website and API we process:
- IP address
- date and time
- hostname, path, HTTP method, HTTP status
- user‑agent, referrer (if any)
- request/trace ID, rate‑limit decision
- no request bodies
Purposes: delivery, stability, security, abuse detection, rate‑limits.
4.2 Storage locations & retention
| System | Retention | Location |
|---|---|---|
| OVHcloud web server/WAF | 14 days | EU |
| Observability (OTEL/SigNoz) | 7 days | self‑hosted, EU |
| Redis rate‑limits | short‑lived | self‑hosted, EU |
| Mittwald mail/domain logs | provider default (short-term technical logging) | EU (Germany) |
IP addresses are not anonymized but used exclusively for security and operational purposes.
Legal basis: Art. 6(1)(f) GDPR (legitimate interests: stability, security, abuse prevention).
5. TLS/SSL
Transport encryption according to current best practice.
6. Consent management (Klaro!)
We use locally hosted Klaro! to obtain and document consent for analytics cookies.
Processed data
- consent status
- timestamp
- pseudonymous browser identifier
Storage entry
- Name: klaro
- Lifetime: 365 days
- SameSite=Lax, Secure, host‑only
- Category: essential
Legal basis: e‑privacy (technical storage), Art. 6(1)(c/f) GDPR.
8. Web analytics (PostHog, self‑hosted in the EU)
We process pseudonymous IDs, events, and technical data. No third‑country transfers. Session replay is disabled by default. Event retention: up to 180 days.
Legal basis: consent (Art. 6(1)(a) GDPR; applicable e‑privacy rules).
You can withdraw consent at any time via the cookie settings.
9. Waitlist, newsletter, product updates
Public API /api/public/opt‑in processes:
- email address, optional name, locale
- preferences (categories), UTM parameters, path/referrer
- double‑opt‑in token (hash only), DOI status
- worker/job metadata (PgBoss), delivery status at the mail service
| Store | Purpose | Location |
|---|---|---|
| Marketing Postgres (dedicated) | opt‑in data, preferences, DOI status | EU |
| Redis (dedicated) | rate‑limits for public API | EU |
| PgBoss queue/worker | DOI sending, cleanup jobs | EU |
| SMTP – Brevo | sending DOI and marketing emails | EU region |
- Brevo: no open/click tracking enabled.
Legal basis: consent (Art. 6(1)(a) GDPR); proof/blacklist: Art. 6(1)(f) GDPR.
Retention: active subscriptions remain stored until withdrawn/unsubscribed. After unsubscribing, we delete email/name (PII) and keep only pseudonymous DOI proof (e.g. email hash, timestamps, status) for up to 3 years.
9.1 App & integrations (data sources, OAuth)
The Sandbank app allows you to connect external data sources (integrations) via OAuth2 to build BI analytics and dashboards.
Core principles: tokens are processed server-side only, stored encrypted, and never exposed to the browser. Provider API calls are executed server-side only via allow-listed egress destinations.
Important: For OAuth integrations you are redirected to the respective provider (e.g. Google/LinkedIn) for authentication/authorization. Those providers process your data as independent controllers. Sandbank processes OAuth-derived data only to deliver the requested product functionality.
Processed data (typically)
- OAuth tokens (access/refresh/expiry), stored encrypted
- account/provider identifiers (e.g. providerSubject) and resource IDs (e.g. property/site/account)
- aggregated metrics and optional dimension slices as BI read-models (no tokens, no secrets)
Deletion on disconnect (full purge)
When you disconnect an integration, we start an async purge job and delete the related tokens, bindings, discovery snapshots/indexes, and all derived analytics data (full purge), unless statutory retention obligations apply. Depending on data volume, deletion may take a few minutes.
Integrations overview (incl. planned)
Additional integrations may be planned and will only be activated after approval/terms review.
| Integration | Status | Data | Retention | Notes | Deletion |
|---|---|---|---|---|---|
| Google Ads (google-ads) | available (app) | OAuth tokens (encrypted), resource IDs (customer), aggregated ads metrics/dimension slices (no creatives) | snapshots/index short-lived; analytics read-models per granularity (hour/day/week/month; see policy) | provider calls server-side only; allow-listed egress; no storage of ad texts/assets | disconnect starts an async full purge (tokens, bindings, snapshots/index, analytics data), unless legal retention duties apply |
| Google Analytics 4 (google-analytics) | available (app) | OAuth tokens (encrypted), resource IDs (property), aggregated metrics/dimension slices (BI read-models) | snapshots/index short-lived; analytics read-models per granularity (hour/day/week/month; see policy) | provider calls server-side only; allow-listed egress; no tokens in client | disconnect starts an async full purge (tokens, bindings, snapshots/index, analytics data), unless legal retention duties apply |
| Google Business Profile (google-business) | available (app) | OAuth tokens (encrypted), resource IDs (location/account), aggregated metrics (no review texts stored) | snapshots/index short-lived; analytics read-models per granularity (see policy) | only derived time series metrics are persisted; no content/review texts | disconnect starts an async full purge (incl. tokens, snapshots/index/analytics), unless legal retention duties apply |
| Google Search Console (google-search-console) | available (app) | OAuth tokens (encrypted), resource IDs (site), aggregated SEO metrics (optional: potentially sensitive dimensions like query/page) | snapshots/index short-lived; analytics read-models per granularity (see policy) | dimensions like query/page may contain sensitive strings and are not processed as defaults | disconnect starts an async full purge (incl. tokens, snapshots/index/analytics), unless legal retention duties apply |
| LinkedIn (Ads) (linkedin-ads) | planned | OAuth tokens (encrypted); no discovery/analytics storage without approval | tokens until disconnect; discovery/index/analytics disabled by default (tokens-only) | additional terms/program approval required; without approval analytics/discovery remain disabled | disconnect starts an async full purge; while tokens-only is active this typically affects tokens only; once enabled it also covers snapshots/index/analytics |
| LinkedIn (Organic) (linkedin-organic) | planned | OAuth tokens (encrypted); no discovery/analytics storage without approval | tokens until disconnect; discovery/index/analytics disabled by default (tokens-only) | LinkedIn API/portability terms may add constraints (e.g. retention limits, “no mixing”) | disconnect starts an async full purge; while tokens-only is active this typically affects tokens only; once enabled it also covers snapshots/index/analytics |
9.2 Billing & accounting
For billing and statutory obligations we process contract and invoice data (e.g. company, contact person, billing address, VAT ID where provided). Payment processing may be handled via Mollie; we do not store full card/bank details in our systems.
Retention: invoices and accounting evidence are typically retained for 10 years (statutory retention).
9.3 Retention, backups, deletion (app)
We store personal data only as long as required for the respective purposes or as required by law. For the app, technical backup retention also applies.
| Area | Retention (typical) | Notes |
|---|---|---|
| Account deletion request (DSAR) | 30 days (grace period) | Account is blocked immediately; final purge follows after retention unless legal hold applies. |
| Backups | 30 days | Backups cannot be selectively purged; deletions only take effect in backups after retention expires. |
9.4 Admin area (internal)
For operations, support, and administration we use an internal admin area (Admin Console). Access is restricted to authorized personnel only and protected by technical controls (e.g. access-restricted network environment, rate-limits) as well as authentication and role-based access control (RBAC).
Processed data
- Admin account: user ID, email address, roles/permissions, session key, MFA claims (as provided by the IdP).
- Tenant & user administration: organization/tenant IDs, user IDs, invites (email, role, status, timestamps, invitedBy/revokedBy), suspension/deactivation reasons (if provided).
- Support inbox: support case IDs, organization reference, requester email address, status/category, snippets and reply texts; where applicable ticket references (e.g. Zammad ticket ID/link).
- Marketing/opt‑in administration: opt‑in status/preferences, sending status (outbox), template key, delivery status (no open/click tracking).
- API keys (admin): name, prefix, permissions, rate-limits, expiration (plain key only on issuance).
- Technical & audit data: IP address, user‑agent, request ID, timestamps, actions/resources (audit logs).
Cookies/storage (admin area)
The admin area uses essential, host-only cookies/storage keys for authentication and session security (session, CSRF, device identifier). Cookie/storage details for public surfaces (marketing site + app) are listed in the cookie overview (annex).
Legal bases: Art. 6(1)(b) GDPR (contract performance/support) and Art. 6(1)(f) GDPR (operations, security, abuse prevention, auditability). Where required, legal obligations may apply as well (Art. 6(1)(c) GDPR), e.g. compliance/retention duties.
Recipients/processors: ZITADEL (authentication/IdP), OVHcloud (hosting) and – where applicable – ticketing (self-hosted; tool: Zammad). No marketing analytics/tracking is performed in the admin area.
Note: The admin area is an internal area for employees/operators and not intended for customers/end users.
9.5 Indirect data collection (Art. 14 GDPR)
Some personal data is not collected directly from you, but comes from customer contexts or connected providers.
- Customer Content: data processed by a customer in Sandbank is provided to us by that customer.
- Integrations/OAuth: after your authorization, connected providers (e.g. Google/LinkedIn) deliver data to our server-side interfaces.
- System events: audit, security and workflow metadata is generated technically during service usage.
Where Art. 14 GDPR applies, we provide transparent information on categories, purposes, recipients and retention periods. For customer content, the respective customer is typically responsible for primary notice.
10. Contact via email/phone
Data: name (if provided), email address, content, meta/header data.
Recipient: our email provider mittwald CM Service GmbH & Co. KG (Germany/EU).
Storage: until completion of the request and up to 12 months thereafter unless longer statutory retention applies.
Legal basis: Art. 6(1)(b) GDPR (contract/pre-contract) and Art. 6(1)(f) GDPR (legitimate interest in replying to requests).
12. No external embeds
- no videos
- no maps
- no chat widgets
- no social plugins
13. Data subject rights
- access
- rectification
- erasure
- restriction
- data portability
- objection
- withdraw consent
How to exercise rights: In the app, the privacy panel provides DSAR features for data export and account deletion. You can also contact us via email: support@sandbank.cloud.
If your data is included in a customer’s Customer Content, please direct requests to the respective customer as controller, as we usually cannot associate data subjects without a customer reference.
14. Third-country transfers and safeguards
Sandbank is operated in the EU by default. For specific integrations, provider-side processing outside the EU/EEA may still occur.
- Where an adequacy decision of the EU Commission exists, we rely on that transfer mechanism.
- Otherwise we rely on EU Standard Contractual Clauses (Art. 46 GDPR) and supplementary technical/organizational safeguards.
- The exact transfer scenario depends on the connected provider and its product configuration.
We provide additional details on transfer safeguards on request (support@sandbank.cloud).
15. Complaint
You may lodge a complaint with a supervisory authority. The authority competent for our company is the Independent State Centre for Data Protection Schleswig-Holstein (ULD), Holstenstraße 98, 24103 Kiel, Germany.
16. No automated decision‑making
No profiling, no automated decisions.
17. Changes to this policy
We update this policy when services, legal requirements or technical processes change. The current version is always available on this page.
18. Annex – subprocessors
Subprocessors process personal data on our behalf where necessary for hosting, operations and support. At this time, we only use subprocessors located within the EU.
| Subprocessor | Service | Location | Notes |
|---|---|---|---|
| OVHcloud S.A.S. | Hosting (compute, load balancer, WAF) | EU | — |
| mittwald CM Service GmbH & Co. KG | DNS, mailboxes (MX/IMAP) | Germany/EU | — |
| Brevo (Sendinblue GmbH / Brevo) | Email delivery (opt-in/newsletter) | EU | No tracking pixels; restricted sender setup |
19. Annex – processing overview
| Processing | Purpose | Data | Legal basis | Recipients | Third country | Transfer mechanism / safeguards | Retention |
|---|---|---|---|---|---|---|---|
| Server/WAF logs | Security, operation, rate-limits | full IP, time, host, path, method, status, user-agent, referrer (if any), request/trace ID, RL decision | Art. 6(1)(f) GDPR | OVHcloud, OTEL/SigNoz (self-hosted) | no | No third-country transfer planned | 14 days (OVH), 7 days (observability) |
| Consent management | Manage consent | consent status, timestamp, browser ID | e-privacy; Art. 6(1)(c/f) GDPR | self-hosted | no | No third-country transfer planned | 365 days |
| PostHog (analytics) | Web analytics | pseudonymous IDs, events, technical data | Art. 6(1)(a) GDPR; e-privacy | self-hosted (OVH) | no | No third-country transfer planned | up to 180 days |
| Sandbank app - integrations (OAuth, data sources) | Connect data sources and provide BI analytics/dashboards | OAuth tokens (encrypted), account/provider identifiers, resource IDs, aggregated metrics/slices (read-models); no tokens in client | Art. 6(1)(b) GDPR (contract) and where applicable Art. 6(1)(f) GDPR (operations/security) | OVHcloud (hosting) and connected data providers (see integration overview in privacy policy) | provider-dependent | Where providers process outside EU/EEA: adequacy decision or EU Standard Contractual Clauses (Art. 46 GDPR) plus supplementary safeguards | tokens until disconnect; snapshots/index short-lived; analytics read-models: hourly 14 days, daily 2 years, weekly 5 years, monthly 5 years |
| Billing & accounting | Billing, contract administration, tax/legal obligations | invoice/customer data (company, address, VAT ID where provided), invoices, payment status/provider IDs; no full card/bank details stored in our systems | Art. 6(1)(b)/(c) GDPR | OVHcloud (hosting), payment provider (Mollie) where used | no | No third-country transfer planned | invoices/accounting: 10 years (statutory retention) |
| Backups | Operational resilience, disaster recovery | backups may include technical copies of production data (including personal data where present) | Art. 6(1)(f) GDPR | self-hosted (OVHcloud EU) | no | No third-country transfer planned | 30 days (rotation/overwrite); deletions only take effect in backups after retention expires |
| Opt-in / newsletter | DOI, delivery, preferences | email (encrypted), optional name (encrypted), categories, UTM, DOI token hash; after unsubscribe: pseudonymous proof only (email hash, status, timestamps), PII deleted | Art. 6(1)(a/f) GDPR | marketing Postgres, Redis RL, PgBoss, Brevo | no | No third-country transfer planned | active: until withdrawn; proof: 1095 days |
| Admin area (internal) | Operations, support, security, audit | admin account (ID, email, roles), tenant/user administration (IDs, invites), support cases (email, snippets/replies), technical data (IP, user-agent, request ID), audit logs | Art. 6(1)(b/f) GDPR | OVHcloud (hosting), ZITADEL (IdP), ticketing (self-hosted; tool: Zammad) | no | No third-country transfer planned | sessions up to 4h; audit logs as needed (typically short periods) |
| Contact via email/phone | Communication | contact details, content | Art. 6(1)(b/f) GDPR | Mittwald (email provider) | no | No third-country transfer planned | up to 12 months |
| Account deletion (DSAR) | Fulfill deletion requests and prevent abuse (subject to legal hold/retention duties) | deletion request status, audit/evidence, technical metadata; account is blocked immediately, final purge follows | Art. 6(1)(c)/(f) GDPR | OVHcloud (hosting) | no | No third-country transfer planned | finalization after retention/grace period (typically 30 days), unless legal hold applies |
11. Social media links
Static links. No data transfer without click.