Messaging data residency
“Where does my message data live?” is a question you can answer programmatically. Orbit exposes a messaging-layer residency read alongside the org-level residency pin, so a regulated buyer integrating the messaging product reads residency where it integrates — next to sender pools and messaging services — instead of digging through a generic settings page. This page explains what the read reports, how it differs from tenant-schema isolation, and how it composes with the voice residency controls.Section 1 — What the messaging residency read reports
The org-level residency pin is stored and managed in the compliance surface: one singleton configuration per organization, written through the compliance endpoints and read everywhere else. The messaging read projects that pin onto the messaging data plane and answers the question a messaging team actually has: where are message bodies, metadata, and logs stored and processed today? Read your messaging residency posture:- The org’s residency pin —
pinnedRegionis the enforced region, ornullwhen nothing is enforced;enforcedseparates a recorded advisory pin from an enforced one.supportedRegionslists the closed catalog (region code, label, jurisdictions, regulatory frameworks, per-region availability) so the messaging surface shows the choices without a second call to the compliance endpoint. - The messaging-plane status —
planeis themessagingentry of the org-wide data-plane matrix, same class and fields the compliance matrix reports. Message bodies and metadata live in theprimary_databasestorage class, and both axes are reported: at-rest storage (residencyScoped,residentRegion) and processing (processingScoped,processingRegion), each with a plain-languagenotewritten for quoting into a register. - The composed verdict —
storedAndProcessedInRegionistrueonly when the pin is enforced and targets the region where the message bytes genuinely rest and are processed today. The platform stores and processes message data in one region (the EU; see the per-plane matrix in Data residency overview), so this flag istruefor an enforcedeupin andfalsefor every other configured pin — it reports the cross-region gap rather than implying a guarantee. - The API-layer residency signal —
api_regionis a separate object from the storage story above: it compares the compute region this API pod is actually processing in (apiRegion) against the region your enforced pin targets for REST API traffic (targetApiRegion), reports whether the two coincide (inRegion), and gives the region-pinned ingress endpoint (targetApiEndpoint, e.g.https://api.eu.orbit.devotel.io/api/v1) withtargetApiEndpointLivestating whether that ingress is serving today. All of its fields beyondapiRegionarenullwhen nothing is enforced — there is no target to compare against.
Owner or admin permission is required for writes; every change lands in
your audit log.
Section 2 — Messaging residency vs. tenant-schema isolation
Do not confuse the residency pin with tenant isolation. They answer different questions:- Tenant isolation is the hard boundary. Every tenant’s working data lives in its own PostgreSQL schema, resolved server-side from your API key on every request. That boundary keeps one tenant’s data unreachable from another tenant; it applies to all tenants always, pin or no pin.
- The residency pin is a within-my-tenant choice: of the geographic regions the platform offers, which one should my data be pinned to? It is a tenant-owned control — you set it, you lock it, you document it. It is not a platform hard gate, and it defaults open until you enforce it.
Section 3 — How it composes with voice data residency
Messaging data and voice data have separate residency controls, and a coherent posture sets both deliberately rather than assuming one covers the other:- Voice data (call recordings, voicemail, live media) follows the workspace voice-region pin documented in Voice data residency. It covers exactly those three voice data classes and nothing else.
- Messaging data (SMS, MMS, chat bodies and metadata) follows the org residency pin described above.
Section 4 — Common setups
Enforce the EU pin, then lock it. The region catalog reports each boundary asavailable or preview, and enforcement is only accepted
for an available region. The EU is the one region live today — the
same region the primary database and all platform compute already run
in — so an enforced EU pin also flips storedAndProcessedInRegion on
the messaging read to true. For a regulated EU posture:
409 RESIDENCY_LOCKED) on any further region
change until you deliberately unlock it — the guard that keeps data
already written under the pin from being silently re-homed.
Advisory pin while a region is in preview. Every other catalogued
region (UK, US, CA, AU, BR, IN) is preview until its region-scoped
storage and provisioning go live. Enforcement of a preview region is
refused (409 RESIDENCY_REGION_UNAVAILABLE) because the platform will
not claim an at-rest guarantee it cannot keep — but an advisory pin
(enforced: false) to a preview region is allowed: you register where
your data needs to land, so the intent is recorded before the region
graduates.
One org, one pin. Residency is set per organization, and a pin
covers every messaging data plane at once — there is no per-channel
pin to keep in sync. A multi-brand operator sets each organization’s
pin independently on its own compliance surface; the messaging read
then reports that organization’s answer, and the audit log records who
set it.
Section 5 — Read your posture before you certify it
Residency is one of the tenant-owned controls in your compliance posture: Orbit provides the surface, you own the decision and its documentation. Before you certify a workspace’s residency posture in a register or answer a questionnaire, read the messaging surface and record what it returns:- Read the messaging endpoint and check
pinnedRegion,enforced, andstoredAndProcessedInRegion. AfalsestoredAndProcessedInRegionmeans either the pin is advisory-only or it targets a region where message data does not rest and get processed today — resolve which before you certify. - Check the
api_regionblock if you care about where API calls are processed, not only where data rests.inRegion: falseortargetApiEndpointLive: falsetells you the request path is still cross-region even when the at-rest story is settled. - Check the lock state if you rely on the pin as a frozen answer. An unlocked enforced pin can still be moved by an owner or admin; lock it if the register entry must not drift.
- Record the plain-language notes the endpoint returns per plane — they are written for exactly this register entry, so quote them rather than paraphrasing.
The residency surfaces are storage-placement policy. They perform no
outbound traffic of their own and gate no sending — configure them
deliberately and document the reading you settle on.
Cross-references
- Tenant isolation — the hard schema-per-tenant boundary the residency pin composes with.
- Data residency overview — the map of which surface answers which channel’s residency question.
- Voice data residency — the separate pin for recordings, voicemail, and live media.
- Compliance posture overview — where tenant-owned controls like this one fit in your overall posture.