Skip to main content

Compliance Readiness Summary

The readiness summary rolls the four pre-send posture checks — business verification (KYC), US A2P sender registration (10DLC), frequency caps, and keyword rules — into one colour-coded read, served by GET /api/v1/settings/compliance-health. It answers “is this workspace configured to send?” before you scale traffic, not after a carrier tells you. This guide explains how to read each pillar, where the summary appears in the console, and the exact setting that moves a pillar.

What this summary is, and what it is not

The summary is a configuration read. Every field describes a setting or registration state your organization controls: whether KYC has passed, whether a TCR brand exists and in what status, how many frequency caps and keyword rules are enabled. It is not a traffic read. A separate surface, messaging compliance health (GET /api/v1/compliance/health), scores what actually happened on your traffic: consent coverage, opt-out velocity, STOP-reply rate, and carrier rejections. That surface is documented in Compliance Health Scores. The two answer different questions: Both surfaces are read-only and never gate sends. Nothing in Orbit blocks, queues, or alters a message because of either read. Compliance posture is your tenant’s responsibility; the summary only reports it. It is visible to owner and admin roles, like the rest of Settings → Compliance.

Reading the four pillars

overall_status is derived from the pillars: red if any pillar blocks, amber if any is pending, green otherwise. A pillar that reads “not configured” (frequency caps or keyword rules with nothing enabled) does not move the overall status; those are optional posture controls you turn on when you want them.

KYC — kyc

A brand-new workspace reads not_started (red) until onboarding begins. That is the summary doing its job, not a penalty. Move it: submit your documents in KYC Documents; the end-to-end walkthrough is Organization KYC onboarding.

10DLC — ten_dlc

Fields: brand_id (null until you register a brand), brand_status, campaign_count, health. campaign_count is informational; the pillar colour derives from the brand status. Move it: register your brand and campaigns per 10DLC registration, then manage the records in 10DLC brand & campaign profiles.

Frequency caps — frequency_caps

active_count is the number of enabled caps; health is green when at least one is enabled and none otherwise. Caps limit how many messages a recipient receives in a window. They are tenant-owned and default off, so none is a posture choice, not a defect. Move it: Frequency caps, with the console walkthrough at Frequency caps in the console.

Keyword rules — keyword_rules

active_count is the number of active keyword rules; health is green when at least one is active and none otherwise. Move it: write your rules per Opt-out rules; the default keyword set and its aliases are listed in the Opt-out keyword alias table.

Where the summary appears in the console

Settings → Compliance overview renders the overall status and one tile per pillar, so the hub’s first screen is the posture read. The SMS composer’s sender picker reads the 10DLC pillar too. When you select an owned US long code while ten_dlc.health is not green, the picker shows an inline advisory that the number is not backed by an approved brand and campaign, and that US carriers filter unregistered A2P traffic. The advisory is informational: the number stays selectable and the send is not blocked. Whether and when to register is your call; the platform reports posture, it does not mandate it.

Worked example

A fully populated response for an organization with approved KYC, a brand in review, two enabled caps, and four active keyword rules:
The endpoint’s reference sample shows the four pillars as empty objects for brevity; a live response always populates every field, with brand_id null and counts of 0 where nothing is configured.

Triage walkthrough: overall red on a suspended brand

  1. overall_status is red, so find the blocking pillar: kyc.health is green, ten_dlc.health is red.
  2. brand_status: suspended with a brand_id means a previously registered brand was suspended. campaign_count: 1 tells you one campaign hangs under it; that campaign’s US long-code traffic is the traffic at risk.
  3. Open 10DLC brand & campaign profiles, read the registry reason on the brand record, and correct what it flags. The registration and resubmission path is 10DLC registration.
  4. After resubmission the brand moves to a pending state: the pillar reads amber and the overall status follows to amber. When the registry approves, both read green. The console refreshes the summary every couple of minutes, so allow one refresh after a change before you re-read the tile.

Tenant-owned, read-only, safely degraded

  • Tenant-owned. Every pillar reports a setting your organization configures; nothing is set on your behalf, and the switchable controls default off. The single platform-applied guard, the US federal TCPA voice dialing window, is not part of this summary; it lives with the voice controls and is covered in the hub FAQ.
  • Read-only. The endpoint never blocks, queues, or alters a send. A red pillar is a report, not a gate.
  • Safely degraded. If part of your workspace is still provisioning, the summary still responds: a pillar whose data is not ready yet reads as not configured (count 0, health none) instead of erroring the whole response.