Inbound Agent with multiple phone numbers triggers 3 end-of-call webhooks per 1 call (event: call_analyzed)

I have one Inbound Agent assigned to 3 phone numbers. When a call comes into any one of these numbers, I’m getting 3 End-of-Call reports instead of 1.

Looking at the records:

  • 2 reports have no transcript (these correspond to the numbers that were not called)
  • 1 report has a full transcript (this is the number that was actually called)

So it looks like the webhook is firing once per phone number assigned to the agent, rather than once for the actual call received.

Setup:

  • 1 Inbound Agent
  • 3 phone numbers assigned to it
  • Webhook/end-of-call report captured via n8n → Airtable

Question: Is this expected behavior when multiple numbers share one agent, or is this a bug? Is there a way to prevent the duplicate empty-transcript reports from firing for the numbers not involved in the call?

Any guidance would be appreciated — this is currently blocking production use of shared inbound agents across multiple numbers.

Hey @salah.eddin.an

Could you please share your Org ID, Agent ID, and any relevant Call IDs? This will help us review the issue and investigate it with the team.

Best Regards.

Sure, these are the 3 Call IDs:
call_93f67ee181c3838340360474d14
call_2d61f7e1d735b6c547e3f1ee44f
call_6f22b52b83141971ea05b1e2f64

And this the Org ID: org_uD2IiCVPq2EDSHq7

Best,

Salah Eddin

Hello @salah.eddin.an

I have escalated your issue to the relevant team.

Best Regards.

Hey @salah.eddin.an

This is expected behavior — those aren’t duplicate webhooks for one call, they’re three separate inbound calls. Looking at the records:

  • call_6f22… → to +34919933208, ~30s, full transcript (the real conversation).
  • call_93f6… → to +34919931916, call_status: not_connected, duration_ms: 0.
  • call_2d61… → to +34919935135, call_status: not_connected, duration_ms: 0, caller left before connect.

All three came from the same caller (+34678566004) within about 10 seconds, each dialing a different one of your 3 DIDs.

Each inbound INVITE creates its own call record, and call_analyzed fires once per call record — so 3 records = 3 webhooks.

The two with no transcript weren’t phantom fires for the “other” DIDs; they were real (very short) attempts that never got past connect.

Best Regards.

Hi @mark1,

Thanks for the breakdown — that explains the webhook count. But it raises the real question: why does dialing one DID (+34919931916 or +34919935135) also generate attempts on the other two numbers? The caller only dialed one number, and I’m not forwarding or sim-ringing across the 3 DIDs intentionally.

Could this be a number/agent configuration issue on my end (grouping, SIP trunk, forwarding rule), or is it happening upstream at the carrier level before it reaches Retell?

Goal: 1 inbound agent servicing 3 numbers, but each call only touches the number actually dialed — 1 call record, 1 call_analyzed webhook per real call, no phantom not_connected entries on the unused numbers.

Thanks.

Best,
Salah Eddin

Hello @salah.eddin.an

This isn’t the webhook firing three times for one call — those are three separate inbound calls from the same caller (+34678566004) hitting three different DIDs assigned to your agent:

call_6f22b52b… → answered, 30s, full transcript

call_93f67ee1… and call_2d61f7e1… → 0-second duration, caller disconnected before the agent picked up (that’s why the transcripts are empty)

Retell fires one call_analyzed webhook per call, not per number-assignment. The reason you’re seeing three is that three inbound legs actually reached us — most commonly this happens when the caller’s PBX/hunt group rings all your DIDs at once (or in quick sequence) and drops the losing legs as soon as one answers. Check with the calling party or your call-forwarding / hunt-group setup on their side.

Best Regards.