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.

Before calls are sent, the trunk’s 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.

  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 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 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. 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 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 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 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. 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.