> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Branded Calling (Rich Call Data) Configuration

> Configure RCD branded calling so the answering handset renders your verified brand name, logo, and reason-for-call on outbound voice traffic.

# Branded Calling (Rich Call Data)

**Rich Call Data (RCD)** is the STIR/SHAKEN extension that lets a verified
brand render on the recipient's incoming-call screen: your display name, a
square logo, and a short reason-for-call line appear in place of the bare
number. Branded calling is the configuration surface for it — which brand
assets you send, and whether RCD signalling is enabled at all.

## RCD vs. CNAM

CNAM and RCD solve different parts of caller presentation:

|                          | CNAM (Calling Name)                                                                        | RCD (Rich Call Data)                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
| What the handset renders | A 15-character uppercase string                                                            | Verified brand name (up to 40 chars), logo, reason-for-call                     |
| How the name travels     | A downstream phone number database (LIDB) lookup the terminating carrier performs per call | An ATIS-1000095 extension carried inside the signed STIR/SHAKEN PASSporT itself |
| Verification             | None — anyone can dip for a name                                                           | Bound to the signed call; the brand is registered per carrier                   |

CNAM strings are anything a handset pulls from its database dip; RCD is the
brand carried cryptographically inside the signed call. Where a handset or
terminating carrier supports the RCD extension it renders the verified brand;
where it doesn't, the recipient still sees the attestation result and any
CNAM name on file. Both live under the caller-identity umbrella — CNAM for
the fallback label, RCD for the verified one.

## When RCD pays off

RCD is an **answer-rate treatment that sits on top of STIR/SHAKEN
A-attestation**. Field data across the industry shows 30–50% answer-rate lift
on top of A-attestation alone for cold B2B campaigns — the difference between
a bare verified call and one that arrives with the brand already rendered.

How it behaves in practice:

* **RCD-capable handset + registered brand.** The handset (Verizon and AT\&T,
  plus a growing set of US/EU carriers) renders your brand name, logo, and
  reason-for-call in place of the bare number.
* **RCD not supported, or registration incomplete.** The RCD payload is
  silently dropped for that call; the recipient sees the attestation result
  and any CNAM name on file — the call still benefits from A-attestation.

The brand therefore only pays off on carriers and handsets that support the
extension — a growing segment, but not universal. The lift you measure on
your own traffic is the honest readout.

## Prerequisites

RCD sits on top of full attestation, so the from-number's attestation posture
comes first:

1. **STIR/SHAKEN A-attestation** on the caller number. Full attestation
   requires the number to be an active number your organization owns through
   the platform. Partial (B) and gateway (C) calls do not carry RCD.
   See [STIR/SHAKEN attestation](/channels/voice/stir-shaken).
2. **A public brand logo over HTTPS.** The URL is what the handset fetches —
   it must be publicly reachable without authentication and served over TLS.
3. **Owner or admin access.** Branded-calling is set on the organization;
   only owner/admin roles can save it.
4. **Per-carrier brand registration.** RCD only renders on carriers where
   your brand registration completed. Registration is an operator-managed
   side-band with the Devotel branded-calling team, not something a tenant
   can self-serve.

## Configure branded calling

Set the brand assets in **Settings → Voice → Branded calling**, or with the
API:

```
PUT /api/v1/settings/branded-calling
```

| Field             | Rule                                                                                                                                                                                                         |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `enabled`         | Whether RCD signalling is attached to outbound calls. `false` sends nothing and the call falls back to plain attestation.                                                                                    |
| `display_name`    | Brand display name rendered on the incoming-call screen. 1–40 characters.                                                                                                                                    |
| `logo_url`        | Public `https://` URL of the brand logo. PNG/JPEG/WebP, square aspect, recommended 200×200. Must be publicly reachable without auth headers, served over TLS, on a stable URL.                               |
| `reason_for_call` | Short sub-line under the brand name ("Appointment reminder", "Delivery update"). Up to 60 characters; blank shows brand only.                                                                                |
| `holdout_pct`     | Optional answer-rate experiment hold-out — the remaining percentage of branded calls placed without the RCD payload (a randomized unbranded control), 0–50. Omit it to leave a running experiment untouched. |

Fields are validated when you save — the name length, reason length, and a
full checked URL on `logo_url` are all enforced at write time, so an out-of-
spec value returns a `422` rather than store and fail downstream.

The save response echoes the persisted record. The one field a tenant cannot
supply is `registered_with_carriers`: the per-carrier brand registration is
an operator-managed side-band — once brand registration completes on each
downstream carrier the Devotel branded-calling team finalizes it. Any
tenant-sent `registered_with_carriers` is ignored, and the saved value from
the last approved registration is preserved.

<Note>
  Saving changed brand assets (a new name, logo, or reason-for-call) resets
  the brand-verification state to unverified, so the revised brand goes back
  through review before it is trusted on the handset. Toggling `enabled`
  alone does not reset the verdict.
</Note>

## How the RCD payload is composed

Branded calling is a signalling surface, not a signing one. The platform
never signs the STIR/SHAKEN PASSporT itself — signing happens on the Devotel
wholesale softswitch, the carrier of record, which holds the STIR/SHAKEN
signing certificate and the per-carrier branded-calling registrations.

At dial time the platform resolves your saved branded-calling configuration
and the caller-ID number's per-number profile (if one is set, it overrides
the organization default for that number), and signals the resulting brand
assets to the softswitch on the outbound leg alongside the attestation level.
The softswitch checks the organization's registration status on the
downstream carrier and either attaches the registered RCD payload — the
branded experience — or drops it silently, in which case the recipient sees
the attestation result and any CNAM name on file. A signalling failure never
blocks the call.

## Verify it

Place a test call from an A-attested number to a modern handset on a carrier
where your brand registration completed. The incoming-call screen should
render your display name, logo, and reason-for-call sub-line instead of the
bare number. If it shows only the attestation result with the CNAM name,
work through the failure modes below.

## Common failure modes

* **RCD silently disabled — no A-attested number.** Full attestation requires
  the from-number to be an active number your organization owns. A caller ID
  you don't own falls to partial or gateway attestation, and the call never
  carries RCD. Check the posture and an A-eligible number first.
* **RCD enabled but required fields missing.** RCD with a blank display name
  or logo URL is a misconfiguration; the headers are skipped rather than
  sent empty. Save a complete brand set.
* **The carrier isn't registered, or doesn't support RCD.** The payload
  drops silently on that call. Check the per-carrier registration status on
  the branded-calling surface; where registration is open with the Devotel
  branded-calling team, the brand can't render until it completes.
* **The brand assets changed and are unverified.** A saved name/logo/reason
  resets verification to unverified until review completes.
* **A stale or authenticated logo URL.** The handset fetches the logo URL
  itself; a URL behind auth, or one that expired since you saved it, renders
  nothing. Re-point the field at a stable public URL.
* **No caching to blame.** Configuration changes take effect on the very
  next call — branded-calling config isn't cached on the dial path. If a
  change didn't appear, re-check the saved value rather than looking for a
  stale copy.

## See also

* [CNAM & Caller ID](/numbers/cnam) — the LIDB/calling-name path; the
  fallback label alongside RCD.
* [Brand identity & trust score](/concepts/brand-identity-trust-score) —
  how branded calling rolls into the trust surfaces the score aggregates.
* [STIR/SHAKEN attestation](/channels/voice/stir-shaken) — the attestation
  prerequisite for RCD and the controls you own on the voice channel.
