Private preview Grafana Cloud

Live Call Routing integration for Grafana IRM

Note

Live Call Routing is currently in private preview. Grafana Labs offers support on a best-effort basis, and breaking changes might occur prior to the feature being made generally available.

Live Call Routing lets you provision a phone number that routes inbound callers to your on-call responders. When a caller dials the number, Grafana IRM rings the responders in your escalation chain one step at a time. If a responder picks up, IRM connects the call. If nobody answers, IRM invites the caller to leave a voicemail, transcribes it, and creates an alert group.

Use Live Call Routing when:

  • An internal teammate, customer, partner, or vendor needs a fast way to reach the on-call responder without knowing who’s on call or needing their personal number.
  • You want every inbound contact attempt recorded in IRM alongside your other alert sources.

How Live Call Routing works

Once configured, you have a dedicated phone number that anyone can dial to reach whoever is on call. IRM handles the greeting, the ring, the connection, and the voicemail, and records every call as an alert group so no contact attempt is lost.

Caller’s perspective

  1. The caller dials your team’s Grafana IRM number.
  2. A short greeting plays — for example, “You’ve reached the Payments on-call. Please hold while we connect you.”
  3. IRM rings the first step of your escalation chain.
  4. If nobody picks up, IRM tries the next step, and so on.
  5. If a responder accepts, IRM connects the call. If the chain is exhausted, IRM invites the caller to leave a voicemail.

Responder’s perspective

When your phone rings, you hear a short message before the call connects:

“Incoming Grafana IRM call for Payments. Press 1 to accept, any other key to decline.”

  • Pressing 1 connects the caller. IRM creates an alert group in the acknowledged state and assigns it to you.
  • Pressing any other key, letting voicemail answer, or not responding within approximately 10 seconds passes the call to the next escalation step.

Before you begin

Make sure you have the following in place before you set up the integration:

  • Permissions to create integrations and provision phone numbers in IRM.
  • An escalation chain to assign to the integration. The chain determines who IRM rings when a call comes in.
  • Responders with a verified phone number in their IRM user profile. Escalation steps without a resolvable phone number are skipped during the live ring.

Keep the following limits in mind:

  • Self-service phone number provisioning is available for US numbers only. For numbers in other countries, contact Grafana support.
  • You can provision a maximum of three Live Call Routing integrations per organization.
  • Provisioned numbers are billed to your organization until you release them.

Set up the integration

Setting up Live Call Routing has three parts: provision a phone number, assign an escalation chain, and configure the greeting and mode.

Provision a phone number

  1. Navigate to IRM > Integrations.
  2. Click + New integration and select Live Call Routing.
  3. After the integration is created, click Provision a phone number on the integration page.
  4. In the Phone number provisioning drawer:
    • Select United States as the country.
    • Optionally enter a US area code to filter results, for example, 415. Leave blank to search all areas.
    • Click Search numbers.
    • Review the available numbers, then click Provision this number next to your choice and confirm.
  5. The provisioned number appears on the integration detail page and is ready to receive calls immediately.

To request a number in another country, select that country in the drawer and follow the Contact support instructions shown.

Assign an escalation chain

Live Call Routing uses your integration’s default route during the live ring. Assign an escalation chain to the default route to control who IRM rings when a call comes in.

Only the following step types run while a caller is on the line:

  • Notify users
  • Notify on-call from schedule
  • Notify users from on-call queue

When you assign a chain that contains step types that don’t apply to a synchronous phone call — such as Wait, Trigger webhook, Declare incident, and Send Slack message — an informational callout appears next to the chain picker so you know what to expect. For details, refer to Escalation chain step behavior.

Configure the greeting and mode

Open the integration detail page and click Live Call Routing settings to configure the basic call behavior:

  • Mode:
    • Direct connect (default): Ring the escalation chain. If a responder answers, IRM connects the call. If nobody answers, IRM sends the caller to voicemail.
    • Voicemail only: Skip ringing entirely and send every caller straight to voicemail.
  • Greeting: What the caller hears when the call connects. Default: “You’ve reached the on-call team. Please hold while we connect you.”
  • Voicemail prompt: What the caller hears before recording. Default: “No one is available right now. Please leave a message after the tone.”

For advanced settings such as ring duration and transcription behavior, refer to Advanced call and voicemail settings.

Verify the connection

After you provision a number and assign an escalation chain, place a test call to confirm the full path works:

  1. From a separate phone, dial your provisioned number.
  2. Confirm you hear the greeting and that the on-call responder’s phone rings.
  3. On the responder’s phone, press 1 to accept and confirm the call connects.
  4. In IRM > Alert groups, confirm a new alert group appears in the acknowledged state, assigned to the responder who answered.
  5. To test the voicemail path, call again and let the call go unanswered. Leave a short message, then confirm a triggered alert group appears with the transcript in its payload.

If the responder’s phone doesn’t ring or no alert group appears, refer to Troubleshooting.

Additional configuration

Advanced call and voicemail settings

In the Live Call Routing settings, the following advanced options control timing and transcription:

  • Auto-resolve on hangup (default on): For direct-connect calls that were answered, resolve the resulting alert group when the call ends. Disable this setting if you want answered calls to remain acknowledged.
  • Ring duration per step (default 30s, range 10–60s): How long each escalation step rings before IRM moves to the next.
  • Voicemail max length (default 120s, range 10–300s): Maximum length of a recorded voicemail.
  • Wait for transcription (default on): When a voicemail is recorded, wait for the transcript before creating the alert group. When off, IRM creates the alert immediately and the transcript field is empty.
  • Transcription timeout (default 300s, range 30–900s): How long to wait for the transcript before creating the alert without one (transcription_status is set to unavailable).

Escalation chain step behavior

Live Call Routing uses your integration’s default route during the live ring, but only the following step types run while a caller is on the line:

  • Notify users
  • Notify on-call from schedule
  • Notify users from on-call queue

Steps that don’t apply to a synchronous phone call — such as Wait, Trigger webhook, Declare incident, and Send Slack message — are skipped during the ringing phase.

Skipped steps still run normally once an alert group is created — for example, after a voicemail. The full chain runs from the start at that point, so webhooks, incident declarations, and Slack notifications all behave as configured.

Alert outcomes

Every inbound call creates an alert group, regardless of whether a responder answered. The alert title and the transcription_status value in the payload reflect what happened:

OutcomeAlert titletranscription_statusAlert stateWhen the alert is created
Direct-connect answeredInbound call from …answeredAcknowledged (assigned to the answering user)On hangup
Voicemail left, transcript readyMissed call from …completedTriggeredWhen the transcript arrives
Voicemail left, no speech detectedMissed call from …emptyTriggeredWhen the transcription callback fires
Voicemail left, transcription failed or timed outMissed call from …unavailableTriggeredAfter the transcription timeout
Caller hung up during ring or before recordingAbandoned call from …abandonedTriggeredImmediately when the call ends

Route alerts by outcome

Because transcription_status is part of the alert payload, you can use IRM’s routing rules to send different outcomes through different escalation chains. For example, route abandoned calls to a lower-noise notification policy:

  • Default route: handles voicemails and answered calls.
  • A second route with the filter {{ payload.transcription_status == "abandoned" }}: sends abandoned calls to a chain that, for example, only emails the on-call instead of paging.

Alert payload

JSON
{
  "caller_number": "+15551234567",
  "call_duration_s": 42,
  "transcription_text": "Hi, this is a voicemail. The payments service is returning errors and we need someone to take a look.",
  "transcription_status": "completed",
  "received_at": "2026-05-26T15:42:11Z"
}
  • caller_number: The caller’s E.164 phone number, as reported by the telephony network. Caller ID can be spoofed, so treat this value as untrusted for any routing decision that grants elevated access.
  • call_duration_s: For answered calls, the duration of the bridged call in seconds. For voicemail and abandoned calls, the recording duration, or 0.
  • transcription_text: The transcribed voicemail, or an empty string for answered and abandoned outcomes.
  • transcription_status: One of answered, completed, empty, unavailable, abandoned. Refer to the table above for details.
  • received_at: ISO 8601 timestamp of when the call was received.

Release a phone number

When you no longer need a Live Call Routing integration, release its number so your organization isn’t billed for it:

  1. Open the integration detail page.
  2. Click Phone number in the actions menu to open the provisioning drawer.
  3. Click Release number and confirm.

The number returns to the telephony provider’s pool. The integration itself is preserved, so you can provision a new number later if needed. Deleting the integration also releases the number automatically.

Troubleshooting

If calls don’t route as expected, refer to the following guidance to resolve common problems.

A responder’s phone never rings

If a responder isn’t called during the live ring, check the following:

  • The responder has a verified phone number in their IRM user profile. Steps without a resolvable phone number are skipped during the live ring.
  • Ask the responder to add and verify a phone number, then place a test call.

Every call goes straight to voicemail

If callers never reach a responder, check the following:

  • The integration isn’t in Voicemail only mode. Confirm the Mode setting.
  • At least one escalation step resolves to a responder with a verified phone number.

Some escalation steps don’t run during the call

Only Notify users, Notify on-call from schedule, and Notify users from on-call queue run during the live ring. Other steps run after an alert group is created. Refer to Escalation chain step behavior.

A voicemail alert has no transcript

Check the transcription_status field in the alert payload:

  • empty means no speech was detected.
  • unavailable means transcription failed or timed out. Increase Transcription timeout if voicemails are timing out.

You need a phone number outside the US

Self-service provisioning supports US numbers only. Contact Grafana support to request a number in another country.

Next steps