Configure per-domain retention windows
Retention on Orbit is a set of independent windows over independent data classes, and this guide walks the console where you set them. A fresh workspace has no automatic retention behavior for messages, conversations, or audit logs — every domain below is disabled until you enable it, and every enable, change, and disable is written to your audit log. This page is the operational walkthrough; the model layer it sits on is concept-only and linked at the end.Where the console lives
Open Settings → Retention in the dashboard. That route is an alias: it redirects to Settings → Compliance, opens the Retention tab, and scrolls the retention editor into view — so you can bookmark either the direct alias or the compliance deep link…/settings/compliance#retention and reach the same controls. The
Retention tab holds two editors:
- Retention policy — the per-channel media windows (voice recordings, SMS/MMS media, email attachments, WhatsApp, RCS, and Viber media), each of which governs the actual file Orbit stored for that channel, plus the scheduled message-body redaction window, the unified recordings window, the video-room session history window, a hard-delete toggle, and the webhook-delivery grace hours.
- Data retention policy — the per-domain privacy posture: message-body redaction, closed-conversation hard-delete, and audit-log purge, each with its own enable switch and window.
403 on save.
The per-domain windows you can set
The three policy domains are independent of each other and of the media windows. Each answers one storage-limitation question, and each is disabled by default.
Media windows on the same tab — voice recordings, channel-attached
media, the unified recordings window, and video-room session history —
govern stored files, not the rows that describe them. Three bounds on this
side matter when you pick values:
- The media sweep and each channel window are clamped to 7–3650 days; the 7-day floor guarantees post-event dispute lookback.
- The recordings window cannot exceed the object-storage bucket lifecycle safety net: media is hard-purged at 365 days no matter which window you set.
- The video-room session history window is a separate knob (default 90 days) and does not inherit from the recordings window.
Console vs. concept: which page does what
Keep the separation straight:- This page (the console) is where you act: enable a domain, pick a window, and read the resolved policy back. It is operational — it answers “how do I set retention for my workspace.” Writes are merge-on-write, audit-logged, and enforcement is purely sweep-based.
- Retention windows and deletion is the model: the cross-store map of every data class, its default window, what flips at expiry, and how preservation (legal hold, WORM export) and erasure (DSAR) cut across the age-based machinery. It answers “what does retention on Orbit consist of.” You configure nothing there.
- Per-Domain Data Retention Policy is the API reference for the same three domains — the endpoint contract, bounds, and merge-on-write rules for when you automate the policy over the API instead of clicking the console.
The worked loop
Run this end-to-end the first time you set a posture, or when you tighten one.1. Read the current windows
Open Settings → Retention (or the Retention tab of Settings → Compliance). The editors render the resolved values — platform defaults merged with your overrides — plus the allowed bounds, before you touch anything. Note which of the three policy domains are enabled today and what the current windows are; on a fresh workspace everything is disabled.2. Adjust one window
Pick a single intent and change only that. Example — shorten closed-conversation purge from the 180-day fallback to 120 days:- In Data retention policy, enable Closed conversations and set
the window to
120. - Save. The write is merge-on-write, and the dashboard submits only the fields you actually changed, so untouched domains keep their stored values — adjusting the conversation window never re-affirms the message or audit domains behind your back.
- Watch for a conflict gate: when a shortened recordings window would purge recording media earlier than the voice recordings metadata window implies, Save stays disabled until you explicitly acknowledge the earlier deletion date. The acknowledgment is deliberate — it makes a blind contradictory save impossible, and changing either window resets it.
422) naming the
field, so a mistyped window cannot land silently.
3. Verify propagation
- In the console. Re-open the Retention tab and confirm the editor
shows the new resolved value — for the example above, closed
conversations now read
120days. - Over the API. Read the resolved policy the same way your automation would:
- The enforcement clock. The endpoint records policy only. A tightened window queues the newly over-window records for the next scheduled sweep — nothing is redacted or deleted at the instant you save, and nothing already swept is restored if you relax the window. Plan your runbook on the sweep cadence, not on the save.
4. Export the evidence
Every write lands in your audit log with the domains changed and the acting user or API key. To evidence the posture for an auditor or an internal control review:- Open Settings → Compliance → Audit & Evidence and export the audit log for the period — the retention-policy writes are the change trail for the posture itself.
- Attach the read-back from step 3 above (the resolved
GETresponse) to show the policy that was in force alongside the change trail.
Common gotchas
- Legal holds outrank the windows. A legal hold on a conversation or recording exempts it from every retention sweep for as long as the hold stands — the sweep skips it. Retention defines normal operation; the hold defines litigation preservation, and the hold wins. If the closed-conversation sweep looks like it missed a thread, check for a hold before you suspect the sweep.
- The 30-day conversation floor. The closed-conversation window cannot go below 30 days — a thread that closed hours ago can never be swept. Choose at or above the floor.
- The 365-day audit floor is regulatory, not a cap. Audit entries cannot be purged younger than one year, protecting the SOC 2 examination window. It limits how aggressively you can purge evidence, not how conservative the rest of your posture can be.
- Sweeps are asynchronous. Saving a window changes policy, not data. A record crossing its window becomes eligible and is redacted or deleted on the next sweep run; relaxed or disabled windows stop future sweeps only — swept records are never restored.
- Redaction is not deletion. Message retention replaces the body and identifiers with a marker and keeps status, receipt, and pricing metadata; the closed-conversation sweep removes only the thread row and leaves message rows. Billing and dispute lookback keep working on every swept record.
- DSAR erasure is a separate machine. A data-subject erasure request is contact-scoped and runs its own workflow independent of these org-wide windows — the windows do not fulfill an open erasure, and an erasure does not wait for a window. Reconcile the two in your DSAR process.
- Recordings stop at 365 days no matter what. The object-storage bucket lifecycle is a platform safety net above every recordings window. If your obligation is longer, export to your own archive first.
- Every save is merge-on-write. Domains you do not touch keep their
stored values — a save can never silently reset a sibling domain, and
an out-of-range field fails the whole write with a
422, never a partial apply.
Related
Retention windows and deletion
The cross-store model — each store’s window, expiry behavior, and the preservation and erasure controls.
Per-Domain Data Retention Policy
The API contract for the same three domains, bounds and merge-on-write rules included.
Legal Holds
Exempt conversations and recordings from retention sweeps for litigation.
Immutable Archival Export
Copy records into your own signed, tamper-evident store before the sweeps run.
Data Subject Requests
Contact-scoped access and erasure, independent of the age-based windows.
GDPR Posture Guide
Assemble the full posture — consent, DSAR, the register, and the binder.