Security
Last updated: March 1, 2026
How we protect your HubSpot data. Everything on this page describes what is actually implemented today.
EU-only infrastructure
Finland + France
AES-256-GCM encryption
Tokens encrypted at rest
Self-hosted database
No third-party SaaS
Zero US subprocessors
All data stays in the EU
Infrastructure
Everything runs in the EU. We self-host our database and analytics on our own servers, not through third-party SaaS.
| Service | Provider | Location |
|---|---|---|
| Application + database | Hetzner Cloud (self-hosted Supabase) | Helsinki, Finland |
| AI processing | Mistral AI | Paris, France |
| Analytics | Plausible CE (self-hosted) | Helsinki, Finland |
| Payments | Mollie B.V. | Netherlands |
Encryption
- OAuth tokens: Encrypted with AES-256-GCM using PBKDF2 key derivation (100,000 iterations) and a random 16-byte salt per operation. Tokens are never stored in plaintext.
- In transit: All connections use TLS 1.2 or higher.
- At rest: Database storage is encrypted at the filesystem level.
- Client-side: No sensitive data is stored in the browser. Authentication tokens are handled by Supabase's secure session management.
Authentication and access control
- HubSpot OAuth 2.0: We never see or store your HubSpot password. Access is granted via OAuth consent and can be revoked at any time from your HubSpot settings.
- Application auth: Supabase JWT-based authentication with secure session handling.
- Row-Level Security: Every database table is protected by RLS policies. Users can only access data belonging to their own portals.
- Edge function auth: Every API call validates the JWT, verifies the user identity, and confirms portal ownership before processing.
Data handling
We access your HubSpot portal to analyse property configurations and compute health scores. Here is exactly what we access and store:
| Data type | Accessed | Stored |
|---|---|---|
| Property definitions (names, types, labels) | Yes | Yes (metadata only) |
| Record samples (up to 1,000 per object) | Yes | No — processed in memory, then discarded |
| Aggregate scores and statistics | Computed | Yes |
| Individual contact/deal/company records | No | No |
| Write operations (property edits) | User-initiated only | Audit log (90-day retention) |
AI processing
AI features (property suggestions, descriptions, embeddings) are processed by Mistral AI in Paris, France.
- Only property metadata is sent (names, descriptions, types) — not individual record values
- Per Mistral AI's data processing terms, API data is not stored beyond the request and is not used for model training
- All processing stays within the EU
GDPR compliance
- Data controller: HubHorizon.io, a Finnish sole proprietorship
- DPA: A Data Processing Agreement is available for all customers
- Data export: Full export available on request
- Right to erasure: Delete your account and all associated data at any time
- Supervisory authority: Office of the Data Protection Ombudsman (Finland)
Security roadmap
What we're working on next:
Questions?
For security questions, vulnerability reports, or to request a security questionnaire, contact us at security@hubhorizon.io.