Skip to main content
Audact
See the offer

Inbound call forwarding & caller ID

Audact DIDs can be used as the destination of call forwarding: a subscriber configures their existing phone number (mobile or fixed line) to forward incoming calls to an Audact number, so that calls placed to the subscriber's number are answered by the agent assigned to the Audact DID. This section documents how the caller ID of a forwarded call is presented on the inbound leg, and how the platform normalises and surfaces it — behaviour that matters whenever an integration needs to correlate an inbound call with the number that originated it (for example, to confirm that forwarding is correctly configured).

What arrives on a forwarded call

A forwarded call reaches the Audact DID as an ordinary inbound call. Two numbers are conceptually involved:

  • the original caller — the party who dialled the subscriber's number, and
  • the forwarding number — the subscriber's number that diverted the call.

Which of these appears, and in what SIP header, is determined by the subscriber's carrier and is not controlled by Audact. Observed behaviour across carriers falls into a few patterns:

  • Original caller preserved (common). The inbound From and P-Asserted-Identity carry the original caller's number. The forwarding number is not conveyed. This is the typical behaviour for mobile unconditional-forwarding on the networks tested.
  • Caller ID replaced. Some carriers replace the caller ID with the forwarding number, so the inbound From is the subscriber's own number.
  • Diverting number signalled separately. When present, a Diversion (RFC 5806) or History-Info (RFC 7044) header carries the forwarding number alongside the original caller in From. Many carriers — particularly for unsigned calls — omit this entirely.

Two further points hold regardless of pattern:

  • Format is national, not E.164. The caller number is very commonly presented in the destination country's national format rather than E.164 — for example a call from +441313670450 arrives as 01313670450 (the +44 country code replaced by the national 0 trunk prefix). A naïve exact-string comparison against the E.164 form therefore fails.
  • Attestation may be downgraded. STIR/SHAKEN verification status (verstat) is frequently lost on the forwarded leg, since the forwarding carrier re-originates the call.

How Audact normalises and surfaces it

To make the caller ID usable for correlation, the platform normalises the inbound caller number to E.164 using the country of the dialled DID as the region hint (the forwarded leg always terminates on a DID whose country is known, and that is the country whose national dialling rules the carrier applied). Continuing the example, a caller of 01313670450 arriving on a GB DID is normalised to +441313670450.

The normalised caller number is delivered to the tenant through the pre-connect admission hook: if the tenant has configured an admission_url, the platform POSTs a JSON body to it before the call is connected, including:

  • caller_number — the E.164-normalised original caller ID,
  • called_did — the Audact DID that was dialled,
  • agent_id, call_id, and trunk_id.

The admission endpoint may accept or reject the call, and its response can contribute per-call dynamic variables and metadata. This is the supported integration point for reacting to inbound (including forwarded) calls on the basis of the caller ID.

Correlating a forwarded call by caller ID

To reliably match an inbound forwarded call against a known originating number:

  1. Normalise both sides to E.164 before comparing — never compare raw carrier-supplied strings. The platform already normalises caller_number; compare it against the E.164 form of the number you expect.
  2. Compare against both candidate numbers when applicable — the original caller and the forwarding number — since carriers differ in which one they present in From.
  3. Do not depend on a Diversion/History-Info header being present — treat it as an optional enrichment, not a guaranteed field.
  4. Allow for the possibility that a caller withholds their number (anonymous / Privacy: id), in which case no caller ID is available to match on.

Source updated: October 19, 2026