Account
Security
How your workspace is kept apart from everyone else's, and what happens to the credentials you hand over.
Separation between workspaces
Every table holding customer data is fenced at the database itself, not in application code. A query that forgets which workspace it is asking about returns nothing at all rather than someone else's data. The failure mode is an empty screen, never a leak.
Your WhatsApp credentials
An access token is enough to send as your business, so tokens and app secrets are encrypted before they are stored. The key is held by the application and never reaches the database, which means a copy of the database on its own is useless.
Passwords and sessions
| Thing | How it is handled |
|---|---|
| Passwords | Hashed with argon2id. They cannot be read back, including by us. |
| Sign-in | A failed attempt takes the same time whether or not the email exists, so nobody can probe for accounts. |
| Sessions | A short-lived token in memory, plus a refresh cookie replaced on every use. |
| A stolen refresh token | Reusing an old one signals theft, and every session for that person is ended. |
Webhook authenticity
Meta signs every event it sends. Sendrix checks that signature and rejects anything that fails, so a forged delivery cannot inject fake replies or receipts. See Webhooks.
History that cannot be rewritten
The audit log and the credit ledger can be added to but never edited or deleted. This holds at the database level, so a bug or a compromised account cannot quietly rewrite what happened.
Attachments
Files sent to you are copied into private storage. Links to them are signed and expire, so a URL shared by accident does not stay open indefinitely.
Reporting a problem
If you find a security issue, contact us directly rather than opening a public issue, and give us time to fix it before sharing details.