What actually protects the data in a Tephlo workspace, described so a non-specialist can follow it and a specialist can check it — including the things we do not claim.
The short version: workspaces cannot see each other; sign-in uses short-lived tokens and supports multi-factor authentication; secrets and credentials are encrypted; sensitive values are stripped out of logs; administrative actions are recorded in trails that cannot be quietly edited; files are scanned before anything reads them; and deletion really deletes.
Every record belongs to exactly one workspace, and every request is scoped from the account that made it rather than from anything the browser sends. A user cannot ask for another workspace’s data by changing an identifier, because the workspace is never taken from the request in the first place.
A conversation is keyed by the workspace, the channel, the business identity that received the message and the customer — so the same person reaching two businesses, or reaching one business through two numbers, produces separate conversations that never merge.
Where several businesses share one platform number, which business a conversation belongs to is recorded using a salted one-way hash of the customer’s identifier rather than the identifier itself.
In transit: everything runs over HTTPS. The production configuration refuses to start if a provider endpoint is not HTTPS, if the connection to the cache is not encrypted, or if a managed database connection is downgraded to plaintext — a misconfiguration fails loudly instead of quietly running unencrypted.
At rest: the managed database and object storage apply their providers’ own encryption at rest, which is their commitment rather than ours to guarantee. On top of that the platform encrypts specific things itself, so that a copy of the database alone does not hand over credentials:
Encryption keys are held in the deployment’s secret manager, and the channel key supports rotation: a new key becomes the encrypting key while the old one remains decrypt-only until everything has been re-encrypted.
Inbound WhatsApp webhooks are verified with a cryptographic signature over the original request body, checked against the secret of the channel that owns the number. A forged webhook does not reach the pipeline.
A channel cannot be enabled until the whole path has been proven end-to-end, and if verification later fails the channel is disabled automatically. A visible outage is better than silently dropping a customer’s message.
Logs are for diagnosing faults, and they are one of the easiest places for personal data to leak. Email addresses, phone numbers, URLs, bearer tokens, signatures and stack traces are redacted at the logging boundary, so a value has to survive that filter to be recorded.
Operational analytics store categories and counts — how a conversation turn ended, how long a reply took, how many tokens it used — with no message content and no customer identifier. Where the platform needs to recognise a repeated question, it uses a hash of the normalised request rather than the text.
Actions that change security-relevant state are recorded with who did it, what they touched and the reason they gave: channel credential changes, routing changes, platform configuration, privacy exports and deletions, media operations, and workspace or account deletion.
Two of these trails are append-only at the database level: an attempt to modify or remove a row is rejected by the database itself, not merely by the application. Audit rows never carry message content, and privacy audit rows identify the person by a salted hash rather than by their phone number or user id — so the record that something was erased does not recreate what was erased.
Reading an untrusted file is one of the riskiest things a system can do, so the order of operations matters:
The assistant is treated as a component that can be wrong or manipulated, and the guardrails around it are ordinary code rather than instructions to the model:
Data has a defined end, not just a beginning. Temporary state expires on a timer; inactive conversations the assistant handled are swept after the configured retention period; delivery records and duplicate-delivery protection records are pruned on their own schedules; raw uploaded files are deleted as soon as their text has been extracted, by default.
A workspace administrator can export or erase one customer’s data. The erasure is serialised with message processing, so work accepted just before it either completes and is removed, or is suppressed afterwards — a reply cannot arrive after someone asked to be forgotten. The Privacy Policy lists exactly what it removes, including the two record types it does not yet cover.
Deleting a whole workspace removes everything it owns in a single transaction — either all of it goes or none of it does — and the files in object storage are removed by a cleanup job that commits with that transaction, so a crash cannot leave them behind. Platform audit records survive by design, and carry no message content.
Database backups are encrypted before they leave the host, so the backup file is unreadable without a key held separately from the application. They are taken on a schedule, kept for a rolling window, and stored separately from the running system.
Restoring is a documented procedure with an integrity checklist, and it is practised rather than assumed: the most recent documented restore drill was on 2 August 2026, into a disposable database, verified against that checklist. Recovery times measured at drill scale do not yet prove recovery times at production scale, which is stated in the runbook and repeated here rather than glossed over.
Because backups are not edited individually, data you delete leaves them as they age out and are pruned, not at the moment of deletion.
The product documentation describes how these appear in the console.
If you find a vulnerability, tell us at [SECURITY CONTACT] or support@tephlo.com. Include enough detail to reproduce it, and please do not access, modify or retain anyone else’s data while investigating.
General questions about this document go to support@tephlo.com. Questions about personal data, including requests from individuals, should go to the data protection contact at [DATA PROTECTION CONTACT]; until that address is published, the general address above reaches the same team.
Postal address: [REGISTERED COMPANY NAME], [REGISTERED ADDRESS].