Your data stays with you for as long as you are a customer. OpenCX runs no scheduled job that
deletes or redacts customer data after a fixed age — removal happens when you ask for it, when a
workflow you built fires, or when your account is terminated. Where your contract with OpenCX
defines a retention or deletion term, your contract governs.
Principles
Data minimisation
Information is retained only where there is a defined business, contractual, or legal purpose
for keeping it.
Storage limitation
Retention is bounded by the purpose. When the purpose ends, the clock starts.
Auditable disposal
Every deletion produces a verifiable record — what was requested, what was executed, against
which stores, by whom, and when.
Reviewed, not forgotten
Data storage systems are reviewed quarterly and the full data inventory annually. Nothing is
held without someone owning the reason.
Retention schedule
The same schedule in full, including the event that starts the retention clock and the method used to dispose of the data:Lifecycle
Every asset carries a classification and a retention rule from the moment it is created. Disposal is a controlled operation, not a background timer: a trigger fires — an account termination, a deletion request, a workflow you built — an engineer executes the removal against every store that holds a copy, and each leg is verified before the request is closed.Trigger-based removal
Retention does not have to wait on a calendar. Often the right moment to strip a session is the moment it stops being operationally useful — the session closed, the case was resolved in your ticketing system, the thread went cold. Workflows let you bind removal to that event. The pattern is the same in every case: a trigger fires, a workflow runs, and the workflow callsPOST /redaction/session to strip the session’s messages
and attachments.
- Ticket closed in your ticketing system
- Session went inactive
- Tag-driven removal
- Scheduled sweep
When an agent closes the ticket in Zendesk, Salesforce, HubSpot, or any connected ticketing
system, the webhook closes the matching OpenCX session and fires the
ticket-resolved
trigger. Hang a workflow off it to remove the transcript as soon as the system of record says
the work is done.1
Trigger: Ticket resolved
Fires on close in OpenCX and on close propagated from the connected ticketing system.
2
Optional: Wait
Add a Wait step for a cooling-off period — long enough to absorb a reopen, short enough
that the transcript is not sitting around. A common choice is 7 days.
3
Optional: Condition
Branch on tags, team, or channel so removal only applies where you want it — for example
sessions tagged
payments but not those tagged dispute.4
Action: Redact the session
An HTTP call step to
POST /redaction/session with the session id from the trigger
context. The API key needs the redaction:write scope.There is no automatic redaction window. Nothing in OpenCX strips a session because it reached
a certain age. Two real controls sit either side of that gap. PII redaction at ingest is an
opt-in, per-organisation setting — off until you turn it on — that detects and strips sensitive
values from chat, email, and live voice transcripts as messages arrive, in either redact at
rest, where the original is never stored, or preserve original, where the original stays
retrievable behind the
redaction:write permission and every reveal is audit-logged. Redaction
on demand is the POST /redaction/session and
POST /redaction/message endpoints, called by hand or
by the workflows above, for anything already stored.Disposal methods
Scoped hard deletion
Scoped hard deletion
The primary method for your records in the production database. Deletion is scoped to exactly
the rows in the request — cascading to dependents where the schema defines a cascade, with
explicit cleanup where it does not. There is no soft-delete flag left behind; the rows are gone.Org-level deletion is coordinated by an engineer, executed against every table that holds a
copy, and verified before the request is closed.
Permanent object removal
Permanent object removal
For files — attachments, exports, call recordings. The metadata record is deleted and a
permanent object-removal request is issued to our storage service. Org-level deletion enumerates
every attachment, export, and recording explicitly rather than trusting a prefix sweep, and any
removal that fails is logged and followed up until the object is confirmed gone.
Tombstones in derived stores
Tombstones in derived stores
The search and reporting stores do not support row-level deletes. A deletion writes a tombstone
instead: the record is excluded from every read the moment the tombstone lands, and the bytes
are physically removed as the store merges its data files.
Backups
Backups
Individual records are not selectively removed from an existing recovery backup — residual
copies can persist until the recovery window expires and the backup ages out on its own. If a
backup is ever restored, the deletion is reapplied before the system returns to service.
Physical media
Physical media
OpenCX operates no customer-facing physical media. Corporate endpoints are full-disk encrypted;
on retirement the disk is cryptographically erased through device management and the hardware is
wiped or physically destroyed by a contracted provider under certificate of destruction.
Evidence of disposal
Evidence of disposal
Every deletion request produces a record: what was requested, what was executed, against which
stores, by whom, and when. Data storage systems are reviewed quarterly, the full data inventory
annually, and backups are tested annually for integrity.
Deletion requests
A deletion request is not a singleDELETE. A copy of a record can exist in the production
database, in object storage, in derived search and reporting stores, in backups, and at a
sub-processor — so the request fans out to every one of them and is confirmed only when the last
live leg completes.
Where OpenCX is a Processor — your customer data — ask us and all data we have no legal or
business obligation to retain is deleted within 30 days. The request runs against the production
database, object storage, the derived search and reporting stores, and the relevant sub-processors,
and each leg is verified before the request is closed. Backups are the stated exception: they are
not selectively edited, they age out on their own schedule, and a restored backup has the deletion
reapplied before it returns to service.
Where OpenCX is a Controller — employee and prospect data — data-subject requests are logged,
authenticated, actioned, and confirmed in writing to the requester under applicable data-protection
law.
Submit a deletion or data-subject request
Email [email protected]. Include the org, the scope of data, and the legal basis
if the request is made on behalf of a data subject.
Legal holds & exceptions
A legal hold suspends normal retention and disposal for specified data until the hold is released.1
Initiated by an authorised party
Only the CEO, the CTO/CISO, or General Counsel may place a hold.
2
Documented in writing
Scope and justification are recorded before the hold takes effect.
3
Reviewed at least every six months
Holds are re-justified or released — they do not become permanent by neglect.
Sub-processors
Sub-processors are contractually required to meet retention periods and disposal rules at least as strict as those above. Compliance is verified annually under the Vendor Management Policy, and on any change of scope.Governance
Retention you control
You can hold less than the schedule allows, without a contract change. These controls are yours, set per organisation:PII redaction
Opt in and sensitive values are stripped from chat, email, and live voice as messages arrive —
per category, in redact-at-rest or preserve-original mode.
Workflow-driven removal
Bind removal to a session closing, going inactive, or picking up a tag — or to a schedule you
define.
Connect thread lifecycle
Grace and retention windows for Connect threads are set per org, and per thread at creation.
Enterprise customers can request the full signed Data Management & Retention Policy, the
sub-processor register, and disposal evidence samples as part of a security review. Contact
[email protected].