Integrations
SIP trunks
Connect SIVO with your phone carrier. Certified templates for Zadarma, Twilio, Bandwidth and a custom template for any SIP carrier.
Updated:
siptrunksintegrationscarriers
A SIP trunk is the connection between SIVO and your phone carrier. SIVO is not a carrier — you contract your provider and SIVO talks SIP to them.
Certified carriers
| Carrier | Coverage | Status |
|---|---|---|
| Zadarma | EU, LATAM, USA | Production tested |
| Twilio | Global | Production tested |
| Bandwidth | USA (with E911), Canada | Production tested |
| Custom | Any SIP carrier | Generic template |
Step-by-step configuration
Zadarma
- Settings → SIP trunks → + New → Zadarma.
- Fill in:
- Name: e.g.
zadarma-prod. - SIP user: provided by Zadarma (format
1XXXXX). - SIP password: same.
- Allowed CIDRs:
185.45.152.0/24(full range, not just individual IPs).
- Name: e.g.
- Save. Status turns
REGEDwithin ~30s if credentials are correct.
Twilio Elastic SIP Trunking
- In Twilio Console → Elastic SIP Trunking → Trunks → + Create.
- Create the trunk with a name, note the Termination URI (
<trunk>.pstn.twilio.com). - In SIVO: Settings → SIP trunks → + New → Twilio.
- Fill in:
- Termination URI: the one you copied.
- Auth: IP (recommended) or credentials.
- Allowed CIDRs: Twilio’s public IPs (see their docs by region).
- In Twilio, add the IP Access Control List with SIVO’s public IP (we give it to you after creating the trunk).
Bandwidth
- Settings → SIP trunks → + New → Bandwidth.
- Fill in the data provided by Bandwidth during your onboarding.
- For US calls with E911 compliance, configure E911 location per DID at
Settings → DIDs → your number → E911.
Custom
For any non-certified carrier:
- Settings → SIP trunks → + New → Custom.
- You need:
- Registrar host (where SIVO sends REGISTER).
- User + password.
- Transport: UDP, TCP or TLS.
- Codecs: preference order (PCMU, PCMA, Opus, G.722).
- Allowed CIDRs for the carrier’s source IP range.
- Save and verify status.
Trunk states
| State | Meaning |
|---|---|
REGED | Registered correctly. Ready to receive/send calls. |
TRYING | Attempting registration. Wait 30 seconds. |
FAIL | Authentication or network failure. |
NOREG | No registration attempt (trunk created but disabled). |
EXPIRED | Registration expired without renewal. Usually network. |
Allowed CIDRs — why it matters
SIVO validates inbound SIP calls come from the IPs declared in Allowed CIDRs. This:
- Blocks SIP bots that scan the internet (hundreds a day) before touching the DB.
- Prevents fraud if your credentials leak.
- Reduces noise in logs and metrics.
Trunk failover
Define a primary trunk and one or more failover trunks for resilience:
- Settings → SIP trunks → your primary trunk → Failover policy.
- Select alternative trunks in priority order.
- If the primary doesn’t respond in 5 seconds (no 18x, no 200), SIVO retries via the next.
Useful for:
- Geographic resilience (EU primary, US backup).
- Combining carriers (one cheap for local, one premium for international).
- Gradual migrations (carrier swap without big-bang).
Outbound routing
When an agent makes an outbound call, SIVO picks the trunk based on:
- Origin DID (caller ID) — if tied to a specific trunk.
- Destination prefix — you can define rules like “everything starting with +34 goes via Zadarma”.
- Tenant default trunk — fallback.
Rules are configured at Settings → Outbound routing.
Outbound caller ID
For the called party to see one of your numbers (not the trunk’s):
- Settings → DIDs → your number → Outbound → tick “Allow as outbound caller ID”.
- Settings → Users → your agent → Authorized DIDs → add the DID.
- The agent sees a selector in their softphone to pick which caller ID per call.
Verification
After configuring:
- Call from your mobile to the assigned DID → should enter the IVR.
- From the softphone, dial a PSTN number → should go out.
- In Calls → History, both calls should appear with
status=answeredandtrunk=<your-trunk>. - If something fails → see Troubleshooting.