HIPAA onboarding: from BAA to audit-ready
The HIPAA controls reference explains what each control does. This guide puts them in order — the sequence that takes a healthcare workspace from “we handle PHI” to “we can show an audit trail” without tripping the422 HIPAA_BAA_REQUIRED send gate — one of the send gates that check sender compliance before a message or call dispatches.
The order matters. HIPAA mode cannot be enabled before the BAA is executed, PHI sends are rejected until it is, and retention only protects data once it is configured. Follow the steps top to bottom.
1. Execute the BAA
Nothing else unblocks until the Business Associate Agreement (BAA) is executed. Two gates read BAA status directly:- Enabling HIPAA mode returns
403 Forbiddenwhile BAA status is notexecuted. - Any PHI send is rejected with
422 HIPAA_BAA_REQUIRED.
POST /api/v1/compliance/baa/require— attests PHI is in scope and moves the organization fromnot_requiredtopending(owner role).POST /api/v1/compliance/baa/execute— records the type-the-name e-signature; the organization is stampedexecuted(owner role).GET /api/v1/compliance/baa/— confirmbaa_statusisexecutedand notedays_until_expiry; an executed BAA expires after its one-year term.
2. Enable HIPAA mode
With the BAA executed, turn on the per-organization HIPAA flag. HIPAA mode is a per-organization feature flag that activates five controls at once — encryption at rest, access controls, PHI audit logging, enforced retention, and BAA tracking.- Dashboard: Settings → Compliance → HIPAA Mode Toggle.
- API:
3. Restrict roles and API scopes to minimum necessary
HIPAA’s minimum necessary standard is your responsibility — it sits on the customer side of the shared-responsibility table. Orbit’s controls today are coarse, so provision for it honestly:- Use the
billingrole for staff who only need financial surfaces. Billing members are confined to billing, pricing, and usage — they receive403on message-content endpoints. - Keep everyone else’s need-to-read in mind:
owner,admin,developer, andviewercan all read message content today, and every read lands in the PHI access log. - Mint API keys with only the scopes the integration needs, and grant
messages:readonly to services that genuinely read PHI-bearing message content.
Known limitation: Orbit does not currently restrict message-content reads to a narrower set of roles beyond the billing confinement, and the message read endpoints (GET /messages,GET /messages/{id}) do not require an operator-supplied reason code. Meet the minimum-necessary standard by provisioning workspace membership and API-key scopes so only staff who need PHI can reach those endpoints. If your program requires per-role read restriction on message content, contact compliance@devotel.io before relying on it.
4. Configure data retention
Set the retention window before PHI accumulates beyond it.- Dashboard: Settings → Compliance → HIPAA → Data Retention.
- API:
5. Verify the configuration
Confirm the flag and retention landed the way you intended:enabled and data_retention_days in the response.
The response also carries an encryption_algorithm field. It is reporting-only: it reflects the platform’s at-rest encryption standard (Google-managed AES-256 on Cloud SQL), not a per-organization application-layer cipher. Devotel does not currently perform per-organization application-layer encryption of message bodies, so do not cite this field to an auditor as evidence that message bodies are individually encrypted at the application layer.
6. Read the PHI access log
Once HIPAA mode is on, every access to PHI-containing data is written to an append-only audit log. Each entry records the user, the resource, the reason (read is recorded automatically on message reads), and the timestamp.
owner and admin roles via the dashboard or API, and can be exported for external audits. Review it on a schedule early — it is how you demonstrate that access follows the role and scope decisions you made in step 3.
7. Export the HIPAA evidence binder
When you need to show posture to an auditor or a buyer’s procurement team, generate the HIPAA pack of the evidence binder from Settings → Compliance → Binder. The HIPAA framework assembles PHI access logging, BAA posture, and your configured retention into a signed, download-ready pack; every generation is recorded in your audit log, and the download link expires after 24 hours.Healthcare activation bundle
The compliance plugin marketplace ships a HIPAA healthcare activation bundle that provisions a draft compliance profile, draft campaigns, a vertical-tuned AI agent, and an opt-in flow configuration in one call. It is a starting scaffold, not a substitute for this sequence: activating the bundle never executes the BAA, never enables HIPAA mode, and never places a send. Run steps 1–6 above first, then activate the bundle and work its go-live checklist from draft to production.Order-of-operations checklist
- BAA executed and
baa_statusconfirmed asexecuted— owner role - HIPAA mode enabled via the toggle or
PUT /settings/hipaa— owner role - Membership trimmed to minimum necessary;
messages:readscoped only to keys that need it — administrator -
data_retention_daysset to your policy window — administrator - Voice region pinned if your residency obligations restrict where recorded audio may live — administrator
-
GET /settings/hipaaverified, withencryption_algorithmtreated as reporting-only — compliance officer - PHI access log reviewed on a schedule — compliance officer
- HIPAA evidence binder generated and handed off through the 24-hour link — compliance officer