Security
Your data, locked down by default.
Multi-tenant isolation enforced at the model level. OAuth and email credentials encrypted at rest. JWT auth with per-session revocation. Audit log on every change. Webhook HMAC. Rate limiting. The security baseline of an enterprise tier — on every plan.
Tenant isolation by design
Every domain model includes a TenantScoped concern. Every query scopes by current_tenant. Unique indexes scoped per tenant. Data leakage is structurally impossible.
Encrypted at rest
Rails 7 encrypts on OAuth tokens, IMAP/SMTP passwords, and integration credentials. AES-256.
Audit log on every change
AuditLog row per create / update / destroy on every domain entity. Captures who, what, when, IP, device, severity, recorded_changes diff.
Anatomy
Every region, explained.
TenantScoped concern
Mixed into every domain model. Forces scope at the ORM level. Controllers filter by current_tenant.
Devise + JWT auth
Stateless tokens with JTIMatcher revocation strategy. Per-session UserSession row with token_digest, IP, device, last_seen_at.
Encrypted fields
OAuth access + refresh tokens, IMAP password, SMTP password — all encrypted via Rails encrypts.
Audit log
Auditable concern hooks after_create / after_update / after_destroy. Severity field, anomaly text, partial index on non-info events.
Rate limiting
Rack::Attack on burst operations keyed by user-id-or-IP. Returns 429 + Retry-After when exceeded.
Webhook HMAC
Every outbound webhook signed with HMAC SHA-256 over the payload using a per-subscription secret. Rotate via API.
Deep dive
Everything that's in the box.
Per-tenant data residency
Tenant locale + timezone + currency stored on Tenant record. Data isolation enforced model-level.
Per-session revoke
Settings → Security lists every active session with device + IP + last seen. One-tap revoke invalidates token immediately.
Pundit role-based policies
Per-resource Pundit policies. Roles: admin / manager / member / viewer. Granular permissions per action.
CSRF for cookie sessions
GET /auth/csrf issues a paired cookie + token; SessionCookies concern verifies X-CSRF-Token header. JWT bearer auth bypasses CSRF (intended for SPA + native clients).
Filter parameter logging
Passwords, tokens, OTP, SSN, CVV, certificate data redacted from Rails logs at the framework level.
30-day archive purge
ArchivePurgeJob hard-deletes records that have been archived for 30 days. Right-to-be-forgotten compliant.
Slack & Gmail signature verification
Slack Events API HMAC verified before processing. Gmail Pub/Sub OIDC bearer token verified.
Honeybadger error tracking
Production exceptions captured in Honeybadger for monitoring. PII filtered at the Rails level before transmission.
In the wild
How teams use it.
"Per-session revoke saved my life when I lost my laptop. Killed the session from my phone in 10 seconds."
Carlos R.
Agency, 8 reps
"Audit log answered three customer compliance audits in a row. Defensible data trail."
Maya J.
Logistics, 40 reps
"Webhook HMAC let us integrate billing without trusting public endpoints."
Tomás D.
SaaS engineering
Pulse vs. The Old Way
A different league.
Keep exploring
Related features.
FAQ
Frequently asked
Get started in 5 minutes
Ready to see the pulse of your revenue?
Start free. Bring your whole team. Cancel whenever (you won't).