> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.youratlas.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.youratlas.com/_mcp/server.

# SIP Trunking

SIP trunking is the bring-your-own-carrier option for phone numbers. Instead of
Atlas provisioning a number for you through [Twilio](twilio-integration), you
keep your number with your existing carrier and point that carrier's SIP trunk
at the Atlas platform. Calls travel over your trunk, and transfers go out to
SIP URIs instead of dialed phone numbers.

Use it when you already own numbers you can't move, when your carrier contract
or compliance rules require you to keep the trunk, or when you want calls to
stay inside a PBX you already run.

> **Note**
>
> SIP trunking is rolled out per account. If you don't see the **SIP Trunking**
> option in the phone number modal, contact support to have it enabled.

## Network requirements

Atlas sends SIP signalling and media from a fixed set of IP addresses. Allowlist
them on your firewall, SBC, or PBX so traffic can pass between Atlas and your
trunk, in the form:

```
198.51.100.10/32
198.51.100.11/32
```

> **Note**
>
> The addresses above are examples. Ask support for the current Atlas SIP
> addresses for your account — they carry SIP traffic only.

## What you'll need

Collect the following from your carrier or PBX administrator before you start:

| What              | Notes                                                                                                |
| ----------------- | ---------------------------------------------------------------------------------------------------- |
| SIP phone number  | The DID that terminates on your trunk, in full E.164 format.                                         |
| SIP address       | The hostname of your SIP server, for example `sip:pbx.example.com`.                                  |
| SIP IP address    | The IP that hostname resolves to. Your carrier may need the Atlas IPs allowlisted on their side too. |
| Outbound username | Digest authentication username for outbound calls.                                                   |
| Outbound password | Digest authentication password for outbound calls.                                                   |

A complete set looks like this:

```
Number:    +17785550123
SIP:       sip:pbx.example.com -> 203.0.113.10
Username:  dd943127ae
Password:  a7fcb7b2f6k7c187
```

> **Warning**
>
> IP-based authentication only works reliably when your carrier gives you a
> dedicated termination URI or SIP server. On a shared endpoint, supply outbound
> authentication credentials instead.

## Connect your trunk

#### Open the phone number step

Go to the **Integrations** step of the campaign wizard, or the **Integrations**
step during onboarding, and start adding a phone number.

#### Choose SIP Trunking as the provider

In the phone number modal, pick **SIP Trunking** from the provider list instead
of Twilio.

#### Enter your trunk details

Fill in the fields below and save. Atlas registers the number against your trunk
and links it to the campaign.

### Field reference

| Field                      | Required | Description                                                                                                               |
| -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Phone number**           | Yes      | The DID that terminates on your trunk, in E.164 format (for example `+14155550123`).                                      |
| **Termination SIP URI**    | Yes      | The gateway address Atlas sends signalling to — the hostname or IP your carrier gave you (for example `sip.example.com`). |
| **Outbound auth username** | No       | Digest authentication username for outbound calls. Leave blank only if your carrier authenticates by IP.                  |
| **Outbound auth password** | No       | Digest authentication password for outbound calls. Leave blank only if your carrier authenticates by IP.                  |

Once saved, the number appears wherever your other numbers do, labelled
**SIP Trunking**. Twilio-only features — A2P 10DLC registration and TrustHub
verification badges — don't apply to SIP numbers and are hidden for them.

## Call transfers over SIP

Campaigns on a SIP trunk use a different transfer form than
[Twilio call forwarding](call-forwarding): destinations are SIP URIs rather than
dialed numbers, so the agent hands the call back onto your trunk instead of
placing a new outbound call.

Each transfer destination is one row:

| Field                | Required | Description                                                                                                                |
| -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Who**              | Yes      | The label the agent uses for this destination, such as `Sales` or `Billing`.                                               |
| **SIP URI**          | Yes      | Destination in `sip:user@host` form, for example `sip:sales@pbx.example.com`. Each URI can only be used once per campaign. |
| **Phone number**     | No       | Carried alongside the URI for your own records.                                                                            |
| **Transfer message** | No       | Played to the caller during the transfer. Falls back to the campaign's shared forwarding message.                          |
| **SIP headers**      | No       | Custom headers sent with the transfer. See below.                                                                          |

Add a row per destination with **Add another transfer**, then save. You can also
import destinations from another campaign — only rows that already have a SIP
URI are brought over.

> **Warning**
>
> Saving replaces every transfer destination on the campaign: the existing rows
> are deleted and the ones on screen are re-created. Don't save a partially
> filled form expecting your old rows to survive.

### SIP headers

SIP headers are free-form key/value pairs attached to the transfer, useful for
passing context to your PBX or carrier — a queue name, an account reference, a
routing hint. Add as many as your destination expects; Atlas sends them exactly
as written, so match the header names your PBX routes on.

## Troubleshooting

| Symptom                                            | Likely cause                                                                                                                                                |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The SIP Trunking option isn't in the provider list | The feature isn't enabled on your account — contact support.                                                                                                |
| Calls don't reach the agent                        | Your carrier isn't routing the DID to the Atlas gateway, the termination SIP URI is wrong, or the Atlas SIP IPs aren't allowlisted.                         |
| Calls are rejected at setup                        | Authentication mismatch — your carrier expects digest credentials but the fields were left blank, or the source IP isn't allow-listed on a shared endpoint. |
| A transfer destination won't save                  | The SIP URI isn't in `sip:user@host` form, or it duplicates another row on the campaign.                                                                    |
| Transfers connect but land in the wrong place      | The destination URI or its SIP headers don't match what your PBX routes on.                                                                                 |