DEV Community

Cover image for How I Got Caller ID Working in Canada Using RingCentral, Twilio, and ElevenLabs
Colby Garland
Colby Garland

Posted on

How I Got Caller ID Working in Canada Using RingCentral, Twilio, and ElevenLabs

Background

ElevenLabs is “the most realistic voice AI platform” (their words), and it really is fantastic. I have been using it to automatically call people, leave messages, and run outbound phone workflows. Since the business already had a Twilio number, I used ElevenLabs' Twilio starter kit for outbound calling.

The app worked beautifully, except for one big problem.

The Problem

Caller ID simply did not work.

Even though the Twilio number had a name set, calls were coming through as just the phone number. And let’s be honest, nobody answers mystery numbers these days 😅.

This was killing our answer rate because the agent was leaving tons of voicemails since people did not know who was calling.

Why Caller ID in Canada Is Weird

In the United States, caller ID is driven by the CNAM database.

Canada does not have this.

Instead, Canadian carriers such as Telus, Bell, and Rogers control caller name lookup themselves. That means:

  • CNAM registration in Twilio does nothing
  • Caller ID must originate from a number registered with a Canadian carrier
  • Twilio's Branded Calling pilot is mostly focused on the US (I applied and was rejected because our account was too small)

So the Canadian telecom monopoly strikes again 😔.

Exploring Solutions (and Hitting Dead Ends)

1. Twilio Fix Attempts

I tried everything:

  • Setting CNAM fields
  • Testing different API configurations
  • Applying for Branded Calling
  • Double checking every setting in the Twilio console

Nothing worked.

2. SIP Trunking: Initial Hope

I started digging into SIP trunking.

SIP trunking is an internet based replacement for traditional phone lines (PSTN or ISDN). It lets businesses make and receive calls over IP instead of physical lines.

ElevenLabs supports SIP trunking, so this seemed promising.

However, caller ID would still depend on having a Canadian registered number on the SIP provider. That meant SIP alone was not a solution.

3. RingCentral Plus Telus: Another Possible Path

We did have a Telus registered number through RingCentral. Telus Business Connect is essentially RingCentral under the hood.

RingCentral also has a great API and supports SIP trunking.

I set up:

  • SIP trunking in ElevenLabs
  • A SIP enabled extension in RingCentral

Then I hit another blocker.

RingCentral only allows SIP connections through their internal network. They do not allow external services like ElevenLabs to connect.

Another dead end.

The Shower Thought

While washing my hair, I suddenly thought:

What if I place the call using RingCentral, which gives proper caller ID, and then transfer or bridge the call to Twilio or ElevenLabs afterward?

I tried it.

I could place the call through RingCentral and the caller ID worked.

But the audio routing did not cooperate.

  • RingCentral greetings still played
  • The ElevenLabs audio did not come through
  • Conference or bridge attempts did not solve it

Close, but still not usable.

The Actual Solution

The answer turned out to be much simpler than expected.

Let RingCentral call Twilio directly.

Here is the flow:

  1. Set the RingCentral (Telus) number to forward all calls to a Twilio number.

    Caller ID stays intact because RingCentral is the origin of the call.

  2. Configure the Twilio number to trigger a webhook on inbound calls.

    The webhook points to your app with the ElevenLabs agent.

  3. Handle the call in your app like any normal inbound Twilio call.

    ElevenLabs takes over from there.

Why This Works

  • The call originates from a Canadian carrier, which preserves caller ID
  • Twilio only handles the call after it is already ringing, so CNAM is not needed
  • The ElevenLabs agent behaves exactly like a normal inbound Twilio call
  • No SIP trunking or bridging complexity is required

The first time I answered my phone and saw the company name and heard the ElevenLabs voice agent start speaking, I was stunned. It finally worked.

The Results

You can see in this screenshot people are picking up more calls because of the caller ID!

TL;DR

  1. Forward your RingCentral (Telus) number to your Twilio number
  2. Configure Twilio to fire a webhook on inbound calls
  3. Handle the call in your app using your ElevenLabs logic

Top comments (0)