trunking lets you route calls through your own telephony provider. Configure trunks from Settings → SIP.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.
Provider Compatibility
Before you configure anything in OpenCX, ask your carrier or PBX team for these exact details:- Confirm they can provide a standard for the call flow you want to support.
- Confirm whether inbound and outbound calling are provisioned separately on their side. Many carriers require separate setup for each direction.
- Ask for the , , and they expect you to use for each direction.
- For inbound calls to OpenCX, confirm your carrier can send digest credentials. Self-serve OpenCX inbound trunks issue a generated username and password.
- For outbound calls from OpenCX, ask whether your carrier authenticates by (username/password) or by .
- Confirm which you are allowed to present on outbound calls.
- If they require , allowlist the OpenCX SIP IP ranges below.
- Confirm the carrier supports at least one of the transports and codecs listed below.
If your inbound carrier only supports source IP allowlisting and cannot send SIP digest credentials, contact OpenCX before rollout. That setup is not self-serve from the dashboard today.
OpenCX SIP IP Ranges
Find the current static SIP IP ranges in Settings → SIP. Add all listed ranges to your carrier allowlist when the carrier authenticates outbound calls from OpenCX by source IP.Supported Transports And Codecs
For carrier setup, use:- Transports: UDP, TCP, or TLS.
- Codecs: G.711 μ-law (PCMU), G.711 A-law (PCMA), or G.722.
Provider Guides
Some provider-owned guides that are useful when configuring a provider to route calls to an external SIP endpoint:- Twilio Elastic SIP Trunking origination settings
- Telnyx SIP URI Calling
- Plivo SIP Trunking with Vapi
- Sinch Elastic SIP Trunking SIP endpoints
- Wavix SIP Trunking setup guides
Inbound SIP Trunks
Route calls from your carrier to OpenCX agents.Prerequisites
Before you start the inbound setup, make sure you have:- One or more verified BYOC phone numbers in OpenCX. These should match the DIDs your carrier sends in the SIP INVITE.
- Access to your carrier or admin settings.
- A decision on how calls should route: by the dialed number or by the header.
- The OpenCX inbound SIP region you want to use: US, EU, Global, or APAC (India).
Configure The Inbound Trunk
Open The Inbound Trunk Page
Go to Settings → SIP and open the inbound trunk configuration.
Choose The SIP Endpoint Region
Select a region from the dropdown: Global (auto-route), US, EU, or APAC (India). The endpoint address updates automatically based on your selection.
Copy The Credentials
Copy the generated , , and . These three values are what your carrier or PBX needs to send calls to OpenCX.
Verify The DID Numbers
OpenCX syncs the inbound trunk to your verified BYOC phone numbers. Before testing, make sure the numbers under Settings → Phone Numbers match the exact DIDs your carrier sends in the .
Configure Your Carrier Or PBX
In your carrier or admin, create a trunk pointing to the OpenCX SIP endpoint and enter the username and password you copied. Make sure the INVITE’s called number matches one of your verified DIDs. For carrier-specific setup guides, see your provider’s SIP trunk documentation.
Assign Numbers To An Agent
In Channels → Phone → Agents, open the agent and assign the inbound numbers under . Each number can only be assigned to one agent.
Test The Route
Place a test call through your carrier and confirm the call reaches the correct agent. Check the inbox for the transcript to verify the call was recorded.
Outbound SIP Trunks
Make outbound calls through your carrier.Prerequisites
Before you start the outbound setup, make sure you have:- An AI phone agent already created in OpenCX.
- The carrier’s outbound SIP host, port, and transport.
- The caller ID number the carrier has approved for outbound presentation.
- The carrier’s outbound authentication method: digest username/password or source IP allowlisting.
- The OpenCX SIP IP ranges above if your carrier uses source IP allowlisting.
Ask your carrier for one complete outbound profile before you begin: SIP host, port, transport, caller ID, and authentication method. Having all five up front avoids most failed first-call attempts.
Configure The Outbound Trunk
Open The Outbound Trunk Form
Go to Settings → SIP and click Add Outbound Trunk.
Name The Trunk
Enter a descriptive Name so your team can identify this trunk later (e.g. the carrier name or region).
Enter SIP Host And Port
Fill in the and your carrier provided. Enter the host only, for example
sip.provider.com, not a full sip: URI. The port is usually 5060 for UDP/TCP or a dedicated port such as 5061 for TLS.Set Digest Authentication
If your carrier gave you a SIP and , leave the toggle enabled and enter them. If the carrier authenticates by instead, disable the toggle.
Most carriers use digest authentication. If your carrier requires IP allowlisting, add both OpenCX SIP IP ranges to the carrier-side rule.
Set The Caller ID Number
Enter the your carrier has approved for outbound presentation. This is the number the recipient will see when the call arrives.
Choose The Transport
Select the protocol. Use UDP (the default) when the carrier documents standard SIP over UDP. Use TCP when the carrier requires or recommends TCP signaling. Use TLS when the carrier requires encrypted SIP signaling.
Create And Assign
Click Create Trunk, then open Channels → Phone → Agents and assign the new trunk under for the agent that should use it. To start making calls, see Outbound Calls.
SIP Transfer Destinations
Route call transfers through SIP instead of the public phone network. Transfer destinations are managed at the organization level and then assigned to agents.- Phone destinations transfer to an E.164 phone number.
- SIP destinations transfer to a SIP URI such as
sip:[email protected]. Optional (username/password) is supported for SIP endpoints. - Hangup destinations end the call and are useful when workflows handle pre-transfer or post-transfer behavior.
Advanced: Dynamic Agent Routing
For advanced setups, use the SIP header to route inbound calls to a specific agent dynamically. Include the agent’s ID (shown on the agent settings page) in the header when sending calls to the OpenCX SIP endpoint. This is useful when:- Multiple agents share the same trunk
- Your or carrier decides which agent should answer based on logic or caller data
Supported SIP Headers
OpenCX forwards SIPX-* headers from inbound calls. These headers have first-class behavior:
X-OPENCX-AGENT-ID: route the call to a specific phone agent.X-OPENCX-CONTACT-ID: attach the call to an existing OpenCX contact in the same organization. If the contact is missing or belongs to another organization, OpenCX falls back to phone-number matching.X-OPENCX-CONTACT-CUSTOM-DATA: JSON object merged into the contact. Values must be strings, numbers, or booleans.X-OPENCX-SESSION-CUSTOM-DATA: JSON object merged into the call session. Values must be strings, numbers, or booleans.X-OPENCX-AGENT-LANGUAGE: override the agent language for this call. Use one ISO code or a comma-separated list supported by the phone agent language settings.X-OPENCX-INCLUDE-INSTRUCTION-IDS: comma-separated instruction IDs to include for this call.
X-* SIP headers are stored on the session with the leading X- prefix removed.
API Availability
Public API endpoints for provisioning SIP trunks and transfer destinations are not currently exposed. Use Settings → SIP for SIP trunk setup, then use the Phone API for phone-agent creation and outbound calls.Related Documentation
Create Phone Agent
Set up an agent to receive SIP-routed calls.
Agent Configuration
Assign trunks and numbers under Telephony & Routing.
Outbound Calls
Launch calls from the dashboard, API, or workflows.
Troubleshooting
Audio issues, failed transfers, and SIP debugging.