Security Overview

Security at Signals

Signals aggregates your customer activity from Stripe, Gmail, Calendar, and CRM. We designed our architecture around a single principle: a database breach should never reveal who your customers are.

Encrypted identities

Customer emails, names, and company info are encrypted with per-tenant keys using AES-256-GCM. A database breach reveals encrypted blobs, not people.

PII-free events

Event payloads store activity metadata only. Email addresses and names are stripped at ingestion. Activity data is separated from identity.

Tenant-isolated keys

Each tenant's data is encrypted with a unique key. Compromising one tenant's key has zero impact on any other tenant.

Data flow

Your data is encrypted at every layer — in transit, at the application level, and at rest on disk.

Browser
HTTPS/TLS 1.2+ encrypted transit
Application
AES-256-GCM encrypt PII on receipt • decrypt on read • per-tenant keys
Database
Encrypted identities • emails, names, tokens
Activity metadata • no PII stored
Storage
AWS RDS • AES-256 disk encryption • isolated VPC

Encryption

All customer PII — emails, names, company names — is encrypted with AES-256-GCM at the application layer before it reaches the database. Each tenant has a dedicated encryption key, derived from a master key that never touches the database.

OAuth tokens for connected integrations (Stripe, Gmail, Calendar, CRM) are encrypted with the same per-tenant keys. Even with full database access, an attacker cannot read tokens or impersonate integrations.

Underneath the application-layer encryption, AWS RDS provides AES-256 disk encryption for all stored data.

AES-256-GCM authenticated encryption for all PII
Per-tenant key isolation via envelope encryption
HMAC-SHA256 hashed lookups — no plaintext indexes
Master key stored outside the database (AWS Secrets Manager)
AWS RDS disk-level encryption (AES-256)

Data minimisation

We only store what we need. Email body content is never stored. Calendar descriptions and attachments are never stored. Event payloads contain activity metadata (amounts, dates, statuses) but no personal identifiers.

DataWhat we storeWhat we don't store
EmailSubject, timestamp, recipient countBody content, attachments, CC addresses
CalendarEvent title, time, attendee countDescriptions, attachments, attendee emails
PaymentsAmount, date, status, billing cycleCard details, bank info
CRMDeal stage, amount, datesFree-text notes with PII (stripped)

Tenant isolation

Every database query is scoped to a tenant ID. There is no code path that can access another tenant's data. Authentication is enforced at the middleware layer, and tenant context is embedded in every session token.

All queries filtered by tenant ID
Per-tenant encryption keys — cryptographic isolation
Foreign key constraints enforce data boundaries
No shared data between tenants at any layer

Audit logging

All sensitive operations are logged with an immutable audit trail: customer deletions, data exports, blocklist changes, integration connections and disconnections, and account setting changes.

Audit logs never contain PII. They reference entities by ID, not by email or name. The audit trail is retained for the lifetime of your account, plus 90 days after account deletion for compliance.

Data deletion

Customer deletion is a hard delete — no soft-delete retention period. When you delete a customer, all their events, facts, and records are permanently removed in a single atomic transaction. The customer's email is added to a blocklist to prevent re-ingestion from connected integrations.

Account deletion has a 7-day grace period. During this window you can cancel. After 7 days, all data — customers, events, integrations, credentials, and configuration — is permanently deleted.

Data export

Export any customer's complete data in machine-readable JSON format — their profile, events, computed metrics, and group membership. This supports your obligations under GDPR Article 15 (Right of Access) and Article 20 (Right to Data Portability).

Data retention

Customer data and events are retained for the lifetime of your account. We don't impose arbitrary retention limits on your core data. Operational data (expired tokens, orphaned credentials) is automatically cleaned up.

Infrastructure

Signals runs on AWS with encryption and isolation at every layer.

TLS 1.2+ for all connections
AWS RDS with AES-256 encryption at rest
VPC isolation — database not accessible from public internet
AWS Secrets Manager for key management
No third-party analytics or tracking in the application

Sub-processors

These are the third-party services that process data on our behalf.

ServicePurposeData processed
AWS RDSDatabase hostingAll stored data (encrypted)
AWS ECSApplication hostingData in transit
AWS Secrets ManagerKey managementEncryption keys
Google APIsGmail & Calendar syncOAuth tokens, email/calendar metadata
Stripe APIPayment syncWebhook event data
HubSpot APICRM syncContact and deal data
OnepageCRM APICRM syncContact and deal data

Compliance

Signals acts as a data processor on behalf of our customers (data controllers). We support GDPR data subject rights including the right to erasure, access, rectification, and data portability. A Data Processing Agreement is available on request.

GDPR compliant — data subject rights fully supported
CCPA compliant
Data Processing Agreement available
72-hour breach notification commitment
Hard delete — no data retained after deletion

Questions about security?

We're happy to discuss our security practices, provide our DPA, or answer questions from your security team.

Contact us

Last updated April 2026