- Identity
- Clerk handles authentication. Magic links + Google OAuth on by default; SAML/SSO available for enterprise engagements. Sessions are JWT-bound and rotated regularly. We do not store passwords.
- Data hosting
- Customer data lives in Supabase (Postgres) hosted in the US (us-east region). The Hub itself runs on Cloudflare Workers via Webflow Cloud — globally edge-cached, no origin server you can hit directly.
- Encryption in transit
- Everything is TLS 1.3 — Cloudflare terminates and re-encrypts to origin. HSTS preload is on. We don't accept HTTP at any boundary.
- Encryption at rest
- Supabase encrypts all data at rest with AES-256. Stripe handles payment card data — we never see full PANs. Backup snapshots are encrypted with the same key.
- Access control
- Row-level security is enabled on every customer-facing table. Staff access is gated by Clerk public_metadata role claims (stacklumen_role). No staff has direct database credentials; even the service role goes through audited API endpoints.
- Audit log
- Every staff action on customer data (lead status changes, chat messages, contact ticket updates) writes a row to team_activities with the actor's Clerk id, before/after values, and a timestamp. Retained for 24 months.
- Backups
- Supabase daily backups + point-in-time recovery on a 7-day window. Critical schemas are also exported nightly to encrypted cold storage.
- Sub-processors
- Listed in our Terms of Use § 04.02. Current: Cloudflare (infra), Supabase (DB), Clerk (auth), Stripe (billing), Resend (email), Sentry (errors), Webflow Cloud (hosting). Each is under contract with equivalent confidentiality + security obligations.