RTDashboard handles revenue data for real businesses. Here's exactly how we protect it.
All traffic uses TLS 1.2+. Integration credentials (Shopify access tokens, Klaviyo API keys, ad-platform refresh tokens) are encrypted at rest with Fernet/AES-128 in the application layer before they ever touch Postgres.
We request the narrowest read scopes each platform offers. Shopify: read_orders, read_products, read_customers. Google/Meta Ads: read-only reporting. We do not request write access on any platform.
Every query is scoped by org_id at the dependency layer. Two organisations cannot read each other's data — even superadmin queries log an audit trail.
JWT sessions live in HttpOnly Secure SameSite=Lax cookies with a double-submit CSRF token. Bcrypt hashes passwords. Login is rate-limited per IP. Optional TOTP-based 2FA is available in Settings → Security.
Postgres is backed up nightly with 30-day point-in-time recovery via the managed provider. RTO target: 4 hours. RPO target: 24 hours. We test restores quarterly.
Application errors are forwarded to Sentry with PII scrubbed (passwords, tokens, Authorization headers redacted before they leave the process). Access logs are retained for 90 days.
| GDPR | Data deletion + export on request. EU customers: data hosted in Frankfurt. |
| CCPA | California residents can request deletion from settings@rtdashboard.com. |
| SOC 2 | Type I in progress (target: Q4 2026). Type II to follow. |
| PCI DSS | We don't store card data. All billing flows route through Paddle (PCI-DSS Level 1) or Shopify Billing. |
Found something? Email security@rtdashboard.com with steps to reproduce. We respond within one business day, never threaten legal action against good-faith researchers, and credit reporters in our changelog when they prefer.