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

# Phone numbers and routing

> Choose a hosted number or your own carrier, route inbound calls to IVR, AI or teammates, and configure the caller number for outbound calls.

Start in **[Settings → Phone Numbers](https://platform.open.cx/settings/phone-numbers)**. A number's verification, inbound assignment, and outbound route are separate parts of setup. Test each direction you intend to use.

## Choose a number setup

| Setup | What to configure |
| - | - |
| Hosted number | Use a verified hosted number in your workspace; choose its inbound destination and outbound caller use. |
| Your own carrier (BYOC) | Verify your number and configure the required inbound and outbound trunks in **[Settings → SIP](https://platform.open.cx/settings/sip)**. See [SIP setup](/phone/sip-integration). |
| Existing number moving to OpenCX | Contact [support](mailto:support@open.cx) to arrange the move before changing your existing service. Verifying a number does not move its inbound traffic. |

Use international format, for example `+14155551234`. A verified number confirms that you can use it; it does not by itself configure your carrier's routing or permission to place calls to every destination.

## Route incoming calls

1. Create an agent in **[Channels → Phone → Agents](https://platform.open.cx/channels/phone/agents)** if AI should answer.
2. Open the agent's **Telephony & Routing** settings and assign the inbound number. A number can have only one inbound destination: an AI phone agent or a Classical IVR. Unassign its existing destination before switching between those types.
3. Check **Inbound Agent** beside the number in **Settings → Phone Numbers**.
4. Call that number from a real phone and verify who answers.

For recorded keypad menus, enable **Classical IVR** in **Settings → Voice & Telephony**, then assign the number from **Channels → Phone → Classical IVR → Workflows**. **Settings → Phone Numbers → Inbound destination** shows the assigned IVR or agent. See [Classical IVR setup](/phone/call-flows).

For supported inbound routes, an **Unassigned** number rings eligible teammates in the dashboard. Keep a teammate online and **Available for calls** when testing this path. See [Human calling](/phone/human-calling) for eligibility and missed calls.

When Classical IVR is enabled, calls to a number assigned to an IVR run that workflow first. For calls without an active IVR assignment, a valid `X-OPENCX-AGENT-ID` header for your workspace takes precedence. Otherwise, OpenCX looks up the agent assigned to the dialed number. If no agent is resolved for a recognized workspace, the call can enter the human-answering path. Do not rely on an unspecified workspace default AI agent; assign the number or send the header explicitly.

## Configure outbound calls

**AI calls:** open the agent's **Telephony & Routing** settings and select its outbound caller number or outbound SIP trunk. The agent's inbound number assignment alone is not proof that outbound calling works.

**Human calls:** choose a verified caller number in the dashboard dialer. OpenCX resolves an outbound route for that number, using a matching configured number route, an owning agent's route, or the workspace's hosted route where available. External numbers need a valid outbound route. See [Human calling](/phone/human-calling).

Your carrier must accept the caller identity and destination on that route. Test the caller ID on the receiving phone; the same displayed caller number does not prove that an AI call and a human call used the same route.

## Access and verification

Changing phone configuration requires **Voice settings** write access. API callers need `phone:write` to [start an AI outbound call](/api-reference/phone/make_outbound_call).

Before opening the line to customers, verify:

* A real inbound call reaches the intended IVR, AI agent or teammate.
* An AI outbound call connects and displays the intended caller ID.
* A human outbound call works if your team will use the dialer.
* Each transfer destination answers, and the team knows what to do if it cannot.
* The session contains the expected call record and, when enabled, recording.

A browser **Test Call** checks the agent experience. It does not verify a phone number's carrier route. For failed real calls, use [Phone troubleshooting](/phone/troubleshooting).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.