What is a SIP trunk? A SIP trunk is a connection between your telephony provider and Zeeg, that routes calls to and from your AI agent. By bringing your own number via SIP trunk, you can use an existing phone number you already own — rather than buying a new one through Zeeg — and benefit from fully automated AI call handling.
This guide covers both directions:
Inbound calls — people calling your number are answered by your Zeeg AI agent.
Outbound calls — your agent places calls from your number as the caller ID.
You can enable just inbound, just outbound, or both. Outbound configuration is required to save the number; inbound is optional.
The AI Phone Bot and SIP trunk import are available from the Professional plan onwards.
How inbound and outbound work together
The source document has a clear two-line summary of how each direction actually works technically:
Inbound — your provider routes incoming calls to Zeeg's SIP endpoint (the Origination URI Zeeg gives you).
Outbound — Zeeg sends your agent's outbound calls to your provider's SIP trunk (the Address you enter in Zeeg). Your provider then delivers the call to the PSTN with your number as the caller ID.
Before you start
What you need
A phone number from a provider that supports static SIP trunks.
Admin access to your provider's console.
Admin access to your Zeeg workspace.
Compatibility: static vs. registration-based trunks
Zeeg only works with static SIP trunks. A static trunk accepts traffic at a fixed hostname or IP without requiring the far end to register first.
✅ Supported (static SIP trunks):
Twilio (Elastic SIP Trunking)
Telnyx, 3CX (hosted)
Starface
Easybell (with the SIP Trunk FQDN add-on)
Zadarma
and most carrier-grade providers
❌ Not supported (registration-based trunks): Any provider where a SIP device or PBX must first send a REGISTER to receive calls. Most consumer VoIP, softphone, and residential lines fall into this category.
❌ Confirmed not supported today: Sipgate, Placetel, Peoplefone, NFON, and FRITZ!Box. The workaround is to buy a number from Zeeg and forward calls from your provider to that number.
Not sure which type you have? Ask your provider whether they offer a "SIP trunk with IP authentication" or a "static trunk endpoint." If the answer involves a SIP phone that must register with a username and password, it's a registration-based trunk and won't work with Zeeg.
How to set up your SIP trunk
Step 1 — Open the import modal in Zeeg
You can reach the SIP import modal from two places:
From the AI Agents list page — click Phone numbers at the top of the page to open the Phone Numbers manager, then choose Import SIP. From here you can also see, edit, reassign, release, or delete any number across your workspace.
From an agent — open the agent's Main Settings → Phone Numbers and click Import SIP.
In the modal, enter your Phone Number in E.164 format (e.g. +493012345678). The number must be authorised by your SIP provider. This number will appear as the caller ID on outbound calls placed by your agent.
Step 2 — Configure the outbound trunk (required)
This tells Zeeg where to send calls your agent places. Fill in the Outbound Trunk Configuration section of the modal:
Field | What to enter | Example |
Address | Hostname or IP of your provider's SIP trunk. Hostname/IP only — no sip: prefix, no port, no path. Zeeg will reject anything containing : / ; @. | sip.telnyx.com |
Username | Optional. SIP digest username from your provider. | acme_trunk |
Password | Optional. Required if you provide a username. | — |
Transport | TLS, TCP, or UDP. Defaults to TLS — match what your provider supports. | TLS |
Media encryption | Required (SRTP), Allowed, or Disabled. Defaults to Required. Use Required with TLS. | Required |
Custom SIP headers | Optional name/value pairs your provider needs for routing. Click Add header to add as many as needed. | — |
Where to find the address and credentials per provider
Provider | Where to look |
Twilio | Elastic SIP Trunk → Termination tab → Termination SIP URI (e.g. yourname.pstn.twilio.com). Strip sip: and any port. Set Authentication to Credentials. |
Telnyx | SIP Trunking → Your Trunk → Outbound Voice Profile → use sip.telnyx.eu as the address (EU PoP). Set Authentication to Credentials. |
3CX | Trunks & Chat → +Trunk → "Generic SIP Trunk (IP Based)" (hosted 3CX only). Use the trunk's Registrar/Server/Gateway Hostname, set transport to TCP. |
Starface | Administration → Leitungen → Provider → set Registrar/Server/Proxy to the trunk hostname. Enable CLIP No Screening on the number. |
Easybell | Request the SIP Trunk FQDN add-on via support@easybell.de first (~€10/month). Then configure the trunk hostname in the portal → SIP Trunk FQDN settings. |
Zadarma | Use pbx.zadarma.com as the address. Username = your internal PBX number from my.zadarma.com/mypbx, password = the generated password for that internal PBX. |
IP-based authentication If your provider authenticates by IP instead of digest credentials, leave Username and Password empty. Contact Zeeg support to get the current egress IPs to allowlist on your provider's side.
Step 3 — Configure the inbound trunk (optional)
This is the configuration your provider needs to forward incoming calls to Zeeg. In the Inbound Trunk Configuration section, Zeeg displays its SIP server URIs for you to copy and paste into your provider's settings:
Transport | Zeeg SIP URI |
TLS (recommended) | sip:sip.rtc.eu.residency.elevenlabs.io:5061;transport=tls |
TCP | sip:sip.rtc.eu.residency.elevenlabs.io:5060;transport=tcp |
Click the copy icon next to either URI, then paste it into your provider's Origination URL or SIP URI field. TLS is the recommended option as it encrypts signalling end-to-end. Both endpoints resolve inside the EU residency region.
Below the SIP server URIs, fill in the optional inbound fields:
Field | What to enter |
Origination URL | Optional. A SIP URI Zeeg should use when forwarding inbound calls to a destination of yours (most setups leave this empty). |
Username / Password | Optional. Set if you want your provider to authenticate to Zeeg with digest auth. |
Transport | Must match the URI variant you copied above (TLS or TCP). |
Media encryption | Required (SRTP), Allowed, or Disabled. Defaults to Required. |
Custom SIP headers | Optional name/value pairs. |
Where to paste the Origination URI per provider
Provider | Where to paste it |
Twilio | Elastic SIP Trunking → Your Trunk → Origination → Origination URI. Also enable SIP REFER and PSTN Transfer on the trunk. |
Telnyx | SIP Trunking → Your Trunk → set the FQDN entry to sip.rtc.eu.residency.elevenlabs.io, entry type SRV, transport TCP or TLS, region Europe. Set inbound number format to E.164 with leading +. |
3CX | Trunks & Chat → +Trunk → "Generic SIP Trunk (IP Based)" → paste the hostname into Registrar/Server/Gateway Hostname. Authentication mode: IP-based (no registration). Add an outbound rule routing the desired prefix/number to this trunk. |
Starface | Administration → Leitungen → Provider → paste the hostname into Registrar/Server/Proxy, transport TCP. Disable registration. The line will show "not registered" — this is expected. |
Easybell | SIP Trunk FQDN settings → Ziel-Server / Target server → paste the full URI Zeeg provided. Set incoming number format to E.164 with leading +. |
Zadarma | My PBX → Internal Numbers → Call Forwarding and Voicemail → Configure → condition Always → destination External Server (SIP URI) → paste <+yourNumber>@sip.rtc.eu.residency.elevenlabs.io with your Zadarma virtual number in E.164. |
After saving, point the phone number itself at this trunk on the provider side (usually, a "Number → Route to trunk" setting).
Step 4 — Assign the number to an agent
At the bottom of the modal, use the Assign to agent dropdown to choose which AI agent should handle calls on this number. You can pick an agent now, or choose None and assign it later from the Phone Numbers manager.
Once saved, place a test call in each direction you've enabled to confirm everything is working.
Editing or removing a number
Open the Phone numbers manager from the AI Agents list page and choose the Agent
Here you can reassign your phone number
However, instead of clicking on "Phone numbers", if you click on the Agent you want to edit, then you'll be able to:
Reassign a number to a different agent, or unassign it
Edit an imported SIP number — the modal re-opens pre-filled. Note that updating credentials replaces the existing trunk configuration.
Release a paid number (e.g. a Twilio number with a monthly fee) to stop being charged for it.
Delete a SIP number you no longer need.
Troubleshooting
Inbound calls don't reach the agent
Check that the Origination URI on your provider exactly matches the value Zeeg displays — including ;transport=tls or ;transport=tcp. UDP fallbacks won't work for inbound.
Check your provider's SIP debug log. A 403 Forbidden response usually means digest credentials don't match or your provider's IP isn't allowlisted.
Confirm the number is actually routed to this trunk on the provider side, not to a fallback voicemail.
Outbound calls fail
The Address field must be hostname-only — no sip:, no port, no path. Zeeg will reject anything containing : / ; @. For example, sip.telnyx.com is valid; sip:sip.telnyx.com:5060 is not.
Re-enter the password — most providers display it only once at creation, so a stale value may have been saved.
Confirm your caller ID number is authorised on the provider side; many providers require allowed "from" numbers to be pre-registered.
Registration errors in your provider's logs
Your provider is trying to send a SIP REGISTER. Zeeg does not accept registrations. Switch the trunk to static or IP-based mode in your provider's settings.
One-way audio
This usually indicates mismatched media settings between your provider and Zeeg. Try setting Media encryption to Allowed on both sides to confirm signalling works first, then move both back to Required.
Quick reference
Setting | Value |
Inbound URI (TLS) | sip:sip.rtc.eu.residency.elevenlabs.io:5061;transport=tls |
Inbound URI (TCP) | sip:sip.rtc.eu.residency.elevenlabs.io:5060;transport=tcp |
Default transport | TLS |
Default media encryption | Required (SRTP) |
Ports | 5061 (TLS) / 5060 (TCP) |
Data residency | EU (workspace-level) |
Phone number format | E.164 — + followed by 1–15 digits |
Required outbound field | Address (hostname only — no sip:, no port, no : / ; @) |
Optional outbound fields | Username + Password (digest), Transport, Media encryption, Custom SIP headers |
Optional inbound fields | Origination URL, Username + Password (digest), Transport, Media encryption, Custom SIP headers |
Entry points | AI Agents list → Phone numbers → Import SIP, or Agent → Main Settings → Phone Numbers → Import SIP |
Frequently asked questions
Can I use the same number for both inbound and outbound calls? Yes. You can enable both directions when setting up the trunk. The same number acts as the caller ID for outbound calls and receives inbound calls through the Zeeg SIP endpoint.
My provider isn't on the supported list. Can I still try? If your provider offers a static SIP trunk with IP authentication or digest credentials, it will likely work. The key requirement is that your provider must not require Zeeg to send a SIP REGISTER. Check with your provider before setting it up.
What happens if I update the trunk credentials? Editing an imported SIP number and saving new credentials replaces the existing trunk configuration. The number stays assigned to the same agent unless you change it.
Is call data stored outside the EU? No. Both Zeeg SIP endpoints resolve within the EU residency region, so signalling and media remain in Europe. Zeeg's broader data residency is also EU-based, hosted on Deutsche Telekom's Open Telekom Cloud in Germany.
How many SIP numbers can I import? There is no fixed limit on the number of SIP numbers you can import. Each number can be assigned to one AI agent at a time. Contact your account manager if you have large-scale deployment needs.





