OpenSequence
DocsAPI referenceSDKs and CLIReference
Security and compliance

Data retention

What is kept, what is pruned, erase on request, and what stays in analytics.

Edit on GitHub
curl
curl -X DELETE $SEQ/v1/contacts/p_7 -H "Authorization: Bearer $ADMIN_KEY"     # erase a person
curl -X PUT $SEQ/v1/project/settings -H "Authorization: Bearer $ADMIN_KEY" -H "Content-Type: application/json" \
  -d '{"store_inbound_bodies":false,"retention_days":365}'

What is stored

DataStoredNotes
Contacts, senderswhat you sendattrs included
Outbound messagessubject and body as rendered, addresses, provider ids, thread referenceneeded to match replies and to show the timeline
Inbound repliesaddresses, subject, thread reference, provider id; the body only when store_inbound_bodies is true (default false)the service never stores a mailbox beyond its own threads
Calendar bookingsthe event id, start time and the matched attendee's emailnever the title, description or other attendees
Runsnode, status, branch, the facts a condition read, the values a template rendered, provider referencesthe journey
Signalskind, channel, source, external id, attribution, a small payload
Taskstitle, body, link as rendered, outcome, note (an Allo call summary when auto-completed)
Webhook deliveriesthe full event payload, attempts, errorspruned 30 days after delivery
Secretsencrypted, write-only

What is pruned automatically

The daily retention job deletes idempotency keys after 1 day, dead-letter queue rows after 30 days and delivered webhook deliveries after 30 days.

retention_days (7 to 3650, default 365) is accepted in the project settings but not enforced yet: runs, messages, signals and tasks are kept until the contact is erased. Plan your own pruning or wait for the engine to honour the setting.

Erase on request

DELETE /v1/contacts/{id} (scope admin) exits the contact's active enrollments with reason deleted (an enrollment.exited webhook is delivered so your systems follow), then deletes the contact and everything attached: messages, runs, signals and their effects, tasks, suppressions. The webhook deliveries already made still contain the payloads that named the contact until they are pruned. Analytics counts (enrolled, replies, meetings per sequence) are computed from what remains, so an erased contact leaves the totals.

What leaves the service

Webhook payloads carry contact ids, external ids, emails, phones and names (signal.received), rendered task titles (task.created) and message subjects (run.done). Your endpoints hold what they received; delete it there under your own policy.

On this page