# Caller ID and CNAM OUT

Caller ID and CNAM OUT control the calling number and caller name presented
on outbound calls. Configure which Caller IDs an outbound trunk may use,
choose how non-matching numbers are handled, and use the appropriate CNAM
OUT delivery method.

## How outbound Caller ID works

Caller ID, also called CLI (calling line identification), is the calling
number that the originating SIP endpoint asks to present for an outbound
call. The outbound trunk does not generate a Caller ID or automatically
select one from **Allowed CLI(s)**. Your PBX, SBC, softphone, or other SIP
endpoint must supply the number in every SIP `INVITE`.

The calling number is placed in the user part of the SIP `From` header. For
example:

```
From: <sip:12025550100@caller.example>;tag=example
```

In this example, `12025550100` is the requested Caller ID.
`caller.example` is the SIP URI domain and is not part of the calling
number. Send the number in [E.164 format](routing-dialing/outbound-dialing.html#outbound-dialing).

Before calls are sent, the trunk's [CLI Settings](outbound-trunk-reference.html#outbound-trunk-cli-settings) define
which DIDWW numbers are treated as
permitted Caller IDs. These settings validate the number supplied by the
originating endpoint; they do not insert or replace it.

```
        %%{init: {
  "theme": "base",
  "themeVariables": {
    "fontSize": "14px",
    "primaryColor": "#e0f2fe",
    "primaryBorderColor": "#38bdf8",
    "primaryTextColor": "#1f2d3d",
    "secondaryColor": "#ccfbf1",
    "secondaryBorderColor": "#2dd4bf",
    "secondaryTextColor": "#1f2d3d",
    "tertiaryColor": "#fef3c7",
    "tertiaryBorderColor": "#facc15",
    "tertiaryTextColor": "#1f2d3d",
    "lineColor": "#0066cc",
    "textColor": "#1f2d3d",
    "nodeTextColor": "#1f2d3d",
    "edgeLabelBackground": "#ffffff"
  }
}}%%

flowchart LR
    ORIGIN["Originating SIP endpoint<br/>Send INVITE with Caller ID"]
    AUTH["Match and authenticate trunk"]
    READ["Read Caller ID<br/>from From header"]
    CHECK{"Caller ID matches<br/>permitted CLI?"}
    POLICY{"On CLI mismatch"}
    ROUTE["Select outbound route"]
    SEND["Send call downstream"]
    REJECT["Reject call"]

    ORIGIN --> AUTH --> READ --> CHECK
    CHECK -->|Match| ROUTE
    CHECK -->|No match| POLICY
    POLICY -->|Send Original CLI| ROUTE
    POLICY -->|Reject Call| REJECT
    ROUTE --> SEND

    classDef endpoint fill:#e0f2fe,stroke:#0066cc,color:#1f2d3d,stroke-width:1.5px
    classDef process fill:#ccfbf1,stroke:#2dd4bf,color:#1f2d3d,stroke-width:1.5px
    classDef decision fill:#fef3c7,stroke:#facc15,color:#1f2d3d,stroke-width:1.5px
    classDef rejected fill:#fee2e2,stroke:#f87171,color:#1f2d3d,stroke-width:1.5px

    class ORIGIN endpoint
    class AUTH,READ,ROUTE,SEND process
    class CHECK,POLICY decision
    class REJECT rejected

    linkStyle default stroke:#0066cc,stroke-width:1.5px
```

For each call, Caller ID is processed as follows:

1. **Send the Caller ID.** The originating SIP endpoint places the requested
   calling number in the SIP `From` header and sends the `INVITE`.
2. **Match and authenticate the trunk.** The SIP request is matched to an
   outbound trunk, and the originating system is authenticated. This confirms
   which system sent the request but does not validate the Caller ID. See
   [Authentication and security](authentication-security.html).
3. **Read the requested Caller ID.** The calling number is taken from the
   SIP `From` header of the authenticated request.
4. **Apply the CLI Settings.** The number is compared with the Caller IDs
   permitted by the matched trunk. If it matches, Caller ID validation
   succeeds. If it does not match, **On CLI mismatch** either forwards the
   original number or rejects the call. The trunk does not substitute another
   Caller ID.
5. **Select the route and send the call downstream.** If the call is not
   rejected, the destination, Caller ID, and available coverage determine the
   outbound route. A [local route](routing-dialing/outbound-dialing.html#outbound-dialing-local-routes) may
   be used when the destination and an eligible DIDWW Caller ID belong to the
   same country and in-country coverage is available. Otherwise, an available
   origin-based or international route may be used.

CNAM OUT and [STIR/SHAKEN](stir-shaken-outbound.html) provide different
information. CNAM OUT provides the caller name, while STIR/SHAKEN carries a
signed identity assertion. Neither one supplies or replaces the Caller ID
number.

Note

Passing Caller ID validation does not guarantee that the number will be
displayed to the called party. The destination operator or an intermediate
network may modify, suppress, or decline to display it according to its
policies and applicable regulations.

### Allowed outbound CLIs

The **Allow any DID(s) for Voice OUT** toggle determines which DIDWW numbers
are treated as permitted CLIs:

| Toggle state | Behavior |
| --- | --- |
| **Enabled** | All supported DIDWW numbers in your account are treated as permitted CLIs. Individual selection is not required. |
| **Disabled** | Only numbers added to **Allowed CLI(s)** are treated as permitted. Select them from **Available CLI(s)**, which lists DIDWW numbers that support [local routes](routing-dialing/outbound-dialing.html#outbound-dialing-local-routes). DIDs without local-route support are not listed. |

These settings define which numbers match the permitted CLI set. A
non-matching number may still be forwarded when **On CLI mismatch** is set to
**Send Original CLI**.

For field values, defaults, and dependencies, see [CLI
Settings](outbound-trunk-reference.html#outbound-trunk-cli-settings) in the Outbound trunk reference.

### CLI mismatch behavior

A CLI mismatch occurs when the calling number in the SIP `From` header does
not match the numbers permitted by the trunk's CLI Settings. This includes a
third-party number or a DIDWW number that was not added to **Allowed CLI(s)**
when **Allow any DID(s) for Voice OUT** is disabled.

The trunk's **On CLI mismatch** setting determines the outcome:

| Setting | Outcome |
| --- | --- |
| **Send Original CLI** | Forwards the original `From` header value downstream without modification. Display by the destination network is not guaranteed. |
| **Reject Call** | Rejects the call when the calling number does not match the permitted CLI set. |

CLI matching uses the calling number in the user part of the SIP `From`
URI. It does not use the quoted display name, which is processed separately
as CNAM OUT.

Important

**Send Original CLI** allows a non-matching number to be sent downstream.
Use it only when presenting a third-party Caller ID intentionally and when
you are authorized to use that number. To restrict every call to the
permitted DIDWW Caller IDs, select **Reject Call**.

---

## CNAM OUT

CNAM OUT provides caller name information for outbound calls. Caller ID
identifies the calling number, while CNAM OUT provides a name that may be
displayed alongside it. CNAM OUT does not create, validate, or replace the
Caller ID number.

DIDWW supports two CNAM OUT delivery methods: CNAM OUT registration for
supported US DIDWW numbers, and a per-call SIP `From` display name for
Canadian and other non-US caller IDs. The applicable method depends on the
Caller ID and whether the name is registered in advance or supplied in each
call.

## How CNAM OUT works

Select the supported method for the Caller ID, then follow its setup and
delivery process:

```
        %%{init: {
  "theme": "base",
  "themeVariables": {
    "fontSize": "14px",
    "primaryColor": "#e0f2fe",
    "primaryBorderColor": "#38bdf8",
    "primaryTextColor": "#1f2d3d",
    "secondaryColor": "#ccfbf1",
    "secondaryBorderColor": "#2dd4bf",
    "secondaryTextColor": "#1f2d3d",
    "tertiaryColor": "#fef3c7",
    "tertiaryBorderColor": "#facc15",
    "tertiaryTextColor": "#1f2d3d",
    "lineColor": "#0066cc",
    "textColor": "#1f2d3d",
    "nodeTextColor": "#1f2d3d",
    "edgeLabelBackground": "#ffffff"
  }
}}%%

flowchart LR
    START["Caller name for an outbound call"]
    METHOD{"Which CNAM OUT<br/>method applies?"}

    REGISTER["Supported US DIDWW number<br/>Register name and Identity in My Numbers"]
    ACTIVE["Registration is reviewed<br/>CNAM OUT status becomes Active"]
    DB_CALL["Send call using the DID<br/>as Caller ID"]
    LOOKUP["Destination operator<br/>query the registered CNAM"]

    HEADER["Non-US or third-party Caller ID<br/>Add CNAM to SIP From for each INVITE"]
    RELAY["Relay caller name when<br/>available and supported"]

    DISPLAY["Destination display<br/>the caller name"]

    START --> METHOD
    METHOD -->|CNAM registration| REGISTER
    REGISTER --> ACTIVE
    ACTIVE --> DB_CALL
    DB_CALL --> LOOKUP
    LOOKUP --> DISPLAY

    METHOD -->|SIP From header| HEADER
    HEADER --> RELAY
    RELAY --> DISPLAY

    classDef endpoint fill:#e0f2fe,stroke:#0066cc,color:#1f2d3d,stroke-width:1.5px
    classDef process fill:#ccfbf1,stroke:#2dd4bf,color:#1f2d3d,stroke-width:1.5px
    classDef decision fill:#fef3c7,stroke:#facc15,color:#1f2d3d,stroke-width:1.5px
    classDef result fill:#ccfbf1,stroke:#2dd4bf,color:#1f2d3d,stroke-width:1.5px

    class START endpoint
    class METHOD,LOOKUP decision
    class REGISTER,ACTIVE,DB_CALL,HEADER,RELAY process
    class DISPLAY result

    linkStyle default stroke:#0066cc,stroke-width:1.5px
```

### Registered CNAM OUT

CNAM OUT registration is available for DIDWW US numbers that support the
CNAM OUT feature. It is configured on the DID number in **Phone Numbers > My
Numbers**, rather than on the outbound trunk.

Use [Manage CNAM OUT](../../phone-numbers/my-numbers/how-to-guides/configure-cnam-out.html) to submit a
caller name of up to 15 characters and select the required Identity. The
request is reviewed, usually within 48-72 hours. The registered value becomes
available for downstream lookup when the DID's [CNAM OUT
status](../../phone-numbers/my-numbers/my-numbers-reference.html#my-numbers-cnam-out-statuses) is **Active**.

When an outbound call presents the DID as its Caller ID, the
destination operator may use that DID number to query registered CNAM. If the
operator performs the lookup and retrieves the registered value, it can
display the caller name to the called party.

### SIP From header CNAM OUT

For Canadian and other non-US caller IDs, place the caller name in the
display-name portion of the SIP `From` header of every `INVITE`. This
method is also useful when a per-call value is required or when a non-US
third-party Caller ID cannot use the database-registration method.

DIDWW does not have access to a Canadian CNAM database equivalent to the
CNAM database used for US numbers, so this method does not use the US
database-registration workflow. Send the `INVITE` to a [DIDWW outbound
signaling endpoint](outbound-sip-information.html#voice-out-signaling-endpoints). DIDWW relays the caller
name to downstream carriers when available and supported.

Place the CNAM value as a quoted display name before the SIP URI:

```
From: "Example Name" <sip:12025550100@caller.example>;tag=example
```

In this example:

- `Example Name` is the caller name relayed for this call.
- `12025550100` is the Caller ID in E.164 format.
- `caller.example` is the SIP URI domain and is not part of the caller name
  or Caller ID.

Note

The caller name must not exceed 15 characters. Avoid special characters
that intermediate SIP systems may alter or remove.

Important

Neither CNAM OUT method guarantees that the caller name will be displayed.
With database registration, the destination operator must perform a lookup.
With the SIP-header method, intermediate and destination networks must
preserve and support the display-name value.

## Related resources

- [Outbound dialing](routing-dialing/outbound-dialing.html) - Format destination numbers and
  understand local-route selection.
- [Caller Name Delivery (CNAM)](../cnam/index.html#user-panel-cnam) - Compare CNAM IN and
  CNAM OUT.

On this page
