Brand identity and trust score
Every regulated channel carries its own brand-registration flow: 10DLC brand and campaign, toll-free verification, WhatsApp Business verification, RCS verified sender, branded calling (RCD/CNAM), and per-number regulatory KYC. Each one lives in a different registry, reports its status in its own vocabulary, and has its own settings page. Brand Identity reads the current state of all of them and rolls them into one trust score plus a prioritized next-action list, so you answer “how verified is our brand, everywhere?” from a single surface instead of six. Brand Identity is a read-only hub. It never changes anything you register; it reports what you have registered. The endpoint contract lives in the Brand Identity API reference — this page explains the model and how to run it in practice.What the hub rolls up
Six sources feed the rollup, each with a stable channel key:
Each channel reports one of five states:
verified— registration approved and active.in_progress— a submission is pending review with the registry.action_required— the registry bounced something back, and a fix is pending.not_started— you have never submitted.unavailable— the underlying subsystem could not be reached on this read.
not_started and in_progress are where most gaps come from; action_required is the one to fix first, since a registry has already rejected something it had approved expectations for.
How the trust score is computed
The score isverified / applicable, rounded to an integer 0–100, where applicable is the count of channels that returned a real state. The counters land in summary: applicable, verified, inProgress, actionRequired, notStarted, trustScore, and an overallState derived from the worst channel state.
The formula is deliberately simple. Every channel counts equally — that is the point of the rollup: a brand that is verified on SMS but unregistered on WhatsApp still carries a partial posture, and weighting games would obscure that. A per-request weighting, if you need one, belongs in your own scoring on top of the API response.
Reads are fail-soft. If one source subsystem times out, it comes back as unavailable and drops out of the denominator instead of blanking the whole response or zeroing the score. You get the other five channels plus a complete summary, and the score reflects the sources that actually answered. Weights that fail to load never silently trash your number.
Which sources to register, and whether a low score matters to you, is your call as the tenant. Brand Identity is a reporting surface — it surfaces your posture so you decide what to complete, in what order. It does not gate sending, and it never blocks a send that the registry itself still allows.
Reading the next-action list
Alongside the numeric score, the endpoint returnsnextActions: every channel that is not yet verified, sorted urgent before todo, each with the route to the surface where you fix it.
- Urgent maps to
action_required— a registry rejected or is blocking something. Fix it ahead of anything merely incomplete. - To do maps to
not_startedorin_progress.
href into the dashboard. Map each action to its fix surface:
When an action disappears from the list, the channel reached
verified — refresh the status call and watch the score climb.
Pull your posture
One read, one trust score:summary.applicable— channels that answered this read. The denominator for the score.summary.verified— channels inverifiedstate. The numerator.summary.inProgress/actionRequired/notStarted— the breakdown of what is left.summary.trustScore—verified / applicablerounded (here, 3 of 6 = 50).summary.overallState— worst-case state across channels;action_requiredhere because one channel needs a fix.channels[].key/label/pillar— which channel you are looking at, and whether it belongs to messaging or voice.channels[].state— one of the five states above.channels[].detail— a plain summary of the registry’s current answer.channels[].reason— when a registry rejected something, why;nullotherwise.channels[].verifiedAt— when the channel reachedverified.channels[].manageHref— the dashboard route where that channel is managed.nextActions[]— the unresolved channels, urgent first.nextActions[].priority—urgentonaction_required,todoonnot_started/in_progress.
verifiedAt moves forward as a channel completes, and nextActions drains as gaps close.
Using it in ops
The same endpoint backs the Brand identity & trust panel on Settings → Compliance in the dashboard: trust-score progress bar, a state chip per channel, and the prioritized list. Because the API accepts any authenticated role —owner, admin, developer, or viewer — everyone on the team can read posture in either surface; the fix links land on the role-appropriate pages.
A practical cadence:
- Read the score in your weekly ops review. Track the trend, not the snapshot.
- Drive the backlog off
nextActions— urgent items first, complete gaps second. - Build on the API rather than scrape the dashboard if you are automating: alert on a trust-score drop beyond a threshold, or on
actionRequired > 0.
See also
- Brand Identity API reference — the endpoint contract this concept page explains
- 10DLC registration guide — the highest-yield rollup source to complete first
- Sender-ID registration — toll-free and alphanumeric sender posture
- Regulatory preview — pre-flight per-number KYC requirements
- Compliance → privacy register — tenancy-level generic posture register
- Glossary — definitions of Trust Score and Brand Vetting / Vetting Score