Use this article to build a phone workflow that routes inbound calls — including setting up an IVR (Interactive Voice Response) menu, collecting caller data, verifying caller identity with a one-time passcode (OTP), assigning calls to your team, configuring deflection options like voicemail and callbacks, and setting up hold music for callers waiting in a queue or placed on hold mid-call.
Before you start, make sure you've configured Intercom Phone and at least one phone number. You'll need permission to manage workflows.
If you selected Configure with a workflow when you set up call routing for your phone number, you’ll now need to build the workflow.
Note:
Phone number assignment in your phone settings controls whether inbound calls are routed through a workflow. If your workflow isn't being triggered, check that the phone number is set to Configure with a workflow in Settings > Channels > Phone and that calls are matched to the correct workflow.
Building phone workflows requires access to Intercom Phone. Contact your workspace admin if phone settings aren't visible in your workspace. You'll need Admin access to create and publish workflows.
How to create a phone workflow
Go to Fin AI Agent > Workflows and click New workflow.
Click Create from scratch and select the trigger “When customer calls”.
How to configure your workflow trigger settings
If you want to trigger the Workflow for anyone who dials in, select leads and users as the audience. Or you can create separate Workflows per audience segment.
If you want to route users based on the phone number they called, you can do this by using the "Workspace phone number" attribute in the audience rules.
You can also decide when this Workflow should trigger by enabling Scheduling. For example, you might want to trigger this Workflow during office hours only.
Click Save and close to start building your Workflow. The workflow builder will open with your trigger configured.
The workflow builder will open. Continue by adding the steps that define how your calls are handled — choose from the options in the sections below. When you're ready to go live, click Set live in the top right.
How to collect caller data in phone workflows
You can use the Collect data step in phone workflows to capture caller input and save it to a conversation data attribute (CDA). The value is stored automatically and appears in the conversation attributes panel when the call connects to a teammate.
In your phone workflow, click + Add step and select Collect data.
Select an attribute you want to save the caller's response to. Only supported CDA types are selectable — unsupported types appear greyed out.
Choose your input mode: Fixed-length digits, Variable-length digits, or Speech.
Fixed-length digits — the caller enters an exact number of digits (for example, a 9-digit account number). Use this for structured data where the length is always the same.
Variable-length digits — the caller enters any number of digits and confirms with # or *. Use this when the input length varies.
Speech — the caller speaks a free-form response, which is transcribed and saved as text. Use this for open-ended responses only — not for account numbers, IDs, or other structured data where accuracy is critical
Configure the prompt the caller will hear. Either type a message in the text field (it will be converted to speech) or click the microphone icon to upload a pre-recorded audio file (.mp3).
Click Save and close. The step is added to your workflow and will capture caller input when the workflow runs.
Important: Keep the following limitations in mind when using Collect data in phone workflows:
CDAs only — data can only be saved to conversation data attributes (CDAs). Standard person and company attributes are not supported and will appear greyed out in the attribute selector.
Unsupported attribute types — boolean, list, file, object, and relationship CDA types are not supported and are disabled in the UI.
Speech mode and numeric attributes — speech mode is not available for integer or decimal number attributes. Use fixed-length or variable-length digit modes for numeric data.
Speech transcription accuracy — speech is transcribed by Twilio (Intercom's telephony provider). Accents, background noise, and poor call quality may affect accuracy. For structured data like account numbers or reference codes, digit modes are strongly recommended.
Re-prompting — if a caller provides invalid input, the workflow automatically re-prompts them. This behavior isn't configurable.
How to verify caller identity with a one-time passcode (OTP)
Use the Verify phone with OTP step to confirm who's on the line before sharing sensitive account information.
How it works
The Verify phone with OTP step sends a 6-digit code via SMS (text message) to the caller's phone number. A spoken prompt then asks them to enter the code on their keypad during the live call. The workflow branches based on the outcome:
User verified: The caller entered the correct code. Typically, route them to an agent.
User verification unsuccessful: The caller failed verification. Route them to voicemail, email verification, or a limited self-serve path.
User verification skipped: The caller opted out. Route them to a restricted fallback.
How to set up the Verify phone with OTP step
In your phone workflow, click + Add step and select Verify phone with OTP from the verification steps menu.
Optionally configure the spoken-prompt language. By default, the prompt plays in English.
Configure the three outcome branches:
User verified: Route the caller here if they enter the correct code — typically to an agent.
User verification unsuccessful: Route the caller here if they fail verification — for example, send them to voicemail, offer email verification, or a limited self-serve path.
User verification skipped: Route the caller here if they opt out of verification.
Click Save and close. The step is added to your phone workflow.
Note: This step is only available in phone (voice) workflows. It sits alongside the existing Verify email with OTP action in the verification steps menu.
What callers experience during phone OTP verification
When a caller reaches the Verify phone with OTP step in a phone workflow:
They receive a 6-digit OTP code via SMS.
A spoken prompt asks them to enter the code on their phone’s keypad.
The workflow follows the User verified, User verification unsuccessful, or User verification skipped branch based on what they do.
How phone OTP verification works for landline callers
When the Verify phone with OTP step runs for a caller on a landline, Intercom can't send an SMS (text message) to a landline number. To avoid dead-ending these callers, you can set up email verification for the same live call instead — the caller stays on the line while a one-time passcode is sent to their email address instead.
IVR options and routing
Use the Workflows builder to configure your phone call flow — add messages, IVR (Interactive Voice Response) reply options, branches, and routing actions. Each option is described in the sections below.
If a caller doesn't make a selection, IVR options are automatically repeated approximately 20 seconds after the last audio prompt finishes playing. This interval is fixed and can't be changed.
Tip: You can define and maintain partial IVR workflows in a single place using Phone Reusable Workflows. This allows for improved consistency and easier updates across multiple phone lines. Learn more about Phone Reusable Workflows to enhance your IVR routing options.
Important:
When using phone reusable workflows during live calls, the system follows this sequence:
The original phone workflow pauses
The reusable workflow executes
The original workflow resumes
If the reusable workflow isn’t designed to return control cleanly, or if it duplicates actions from the parent workflow, this can result in:
Accidental call disconnections
Unexpected or repeated steps after the workflow resumes
Design reusable workflows carefully to avoid overlapping routing, hang-up, or voicemail actions.
How to add messages to a phone workflow
In a phone workflow, the Message step converts text you type into speech played to the caller. Text-to-speech prompts are currently only available in English.
Tip: If you're using Fin Voice in the same workflow, be aware that Fin Voice uses a different voice engine to the text-to-speech used here. This means callers may notice a difference in voice between IVR messages and when Fin itself speaks. To keep things consistent, consider uploading a pre-recorded Audio Snippet (.mp3) that matches the tone and style of your configured Fin Voice.
Note: To provide prompts in German, set a language override in the workflow for the customer. This ensures the Messenger and automation language matches the desired language for phone call events.
Alternatively, you can upload an Audio Snippet you’ve recorded by clicking on the microphone icon in the text editor and selecting the audio file from your device.
Note: The audio snippet must be in .mp3 (audio/mpeg) format.
How to route callers with branches
Branches are a great way to route customers down different paths depending on conditions that you set. To add a branch, click + Add step and select Branches from the dropdown.
For example, you can have a different message if a customer calls outside of your office hours.
Tip: To add a text-to-speech message to any branch path, click + Add step in that branch and select Message.
Important: If you have call recordings turned on for your workspace, please ensure you include a text block within your phone workflow telling customers their call will be recorded. We recommend including this as a message before the call is assigned, but its placement is up to you. If you have recording consent enabled on your phone number, callers will hear a consent prompt before the call is routed and must press 1 to accept or 2 to decline. Make sure your consent message — whether custom or the default — explicitly tells callers to press 1 to continue, otherwise callers won't interact with the prompt and your phone workflow will never trigger.
How to trigger branches based on office hours
When you select "Office hours" as the branch condition, you can configure whether this is during or outside of your default or team office hours. This ensures your team's availability aligns perfectly with your operational needs for each branch of the IVR.
How to set up IVR reply options
Use reply options for customer input. To add a reply option, click + Add step and select Reply options from the dropdown.
Enter an introduction message which will be converted to speech, or upload an Audio Snippet you’ve recorded. This message should introduce and match the reply options you give below.
Now enter the reply option for each key, e.g. “For support PRESS 1”.
Important:
Make sure your introduction message matches the reply options, as the introduction message will be what your customer hears on the phone.
A yellow warning ⚠️ will show on the introduction message when the phone workflow is in edit mode, however once the phone workflow is saved, that warning message will be removed.
Click the + Add button for:
Reply option - add another reply option for a different path.
Start over button - add a start over option for customers to go back to the start of the Workflow
Save reply value to attribute - Save the reply option each customer selects as attributes for reporting and downstream visibility — including linking to a list-type conversation data attribute (CDA) so the reply buttons auto-populate from your data.
Link to a conversation data attribute
Link the reply buttons step to a list-type conversation data attribute (CDA). The CDA's options auto-populate as reply buttons — no manual entry needed. When a caller makes their selection, that value is written directly to the conversation, giving downstream steps and teammates full visibility into what the customer chose. This removes the need for longer branching workflows just to capture caller intent.
Language selection mode
Select Language selection as the mode to pre-populate the reply buttons with options from Intercom's 47 supported languages. When the caller makes their selection, their chosen language is written to the conversation's language system-defined attribute using the locale code (e.g., "en"). This opens the door for auto-translation in future workflow steps.
How to assign and route calls
Once a caller makes a selection in a Reply options step, use the action paths in the workflow builder to define what happens next. For example, select Hold and assign call to route the call to your team. The call rings to an available teammate; if they decline, it moves to the next available teammate.
This step must come at the end of a path.
Tip: A call will be part of a conversation you can view on the Help Desk. This means standard conversation actions can also be applied, such as tag conversation, mark as priority, add note, set conversation data, etc.
Click on the Hold and assign call step to select the team.
Selecting the dropdown to 'Assign to' will present a list of Team inboxes rather than individual Teammates.
You can also select when the call is considered 'unanswered' by configuring which conditions must be met. Then click Save and close.
Now decide what happens if the call is unanswered. Unanswered calls can be assigned to another team or you can choose one of the available call deflection options (e.g. send to voicemail or forward call to a secondary team).
Important: You must include a call ending step, such as Send to voicemail, Forward call, or Hang up, to ensure calls are properly concluded within your designed flow. If this is not done, the call duration will have a different length than the call recording, as the call was not properly terminated.
Each possible ending workflow paths from the IVR needs to have one of these three steps, otherwise calls will remain in progress even if the teammate or the user hangs-up. If you notice that the call recording time does not match with the call duration in the conversation thread, this is the most likely cause.
How to configure custom hold music
By default, callers placed on hold hear Intercom's default hold music. You can replace this with your own tracks — set a workspace-wide playlist, override it per workflow step, or both.
Set a workspace-wide hold music playlist
Go to Settings > Phone > Phone Calls > Hold music to upload your music file:
Upload tracks in MP3 format
Drag tracks to reorder them
Toggle shuffle and loop on or off
Name each track
Override hold music per workflow step
The Hold & Assign step includes a hold music section where you can assign different tracks to different queues — for example, a VIP queue and standard support can each play different tracks. This overrides the workspace playlist for that specific step.
Note:
If a track becomes unavailable, the system automatically steps down to the workspace playlist, then to the Intercom default — no manual intervention is needed.
Custom hold music is available on Intercom helpdesk only. It's not available on Fin standalone.
How to configure mid-call hold music
Pressing Hold during a live call plays your workspace's own audio. This applies to mid-call holds placed by a teammate — separate from callers waiting in a queue.
Configure mid-call hold music in Settings > Phone Calls, under In-call hold music. There are two options:
Use the same music as queue hold — on by default. If you've already uploaded queue hold audio, that same playlist plays during mid-call holds automatically.
Separate mid-call playlist — turn off the default setting to upload a dedicated playlist (up to 10 MP3 tracks, with shuffle and loop). Use this if you'd prefer to play an apology message or on-hold message rather than your queue music.
Note:
Queue position announcements never play during a mid-call hold — a mid-call hold is not a queue wait.
Mid-call hold music is available on Intercom helpdesk only. It is not available on Fin standalone.
How to set up queue position announcements
Queue position announcements tell callers their place in the queue while they wait, so they can decide whether to hold on or call back later. The announcement uses the voice and language already configured on your phone number.
Go to Settings > Channels > Phone and scroll to the Queue position announcement section.
Toggle Announce queue position to callers on to enable the feature.
Set the repeat interval using the dropdown — this controls how often the announcement repeats after the first one plays. Available options are 1, 2, 3, 5, and 10 minutes.
Check Only announce during office hours if you want announcements to play only when your team is available.
Click Update to save your settings.
The setting takes effect immediately — new calls entering the queue will hear announcements. Callers already on hold are not affected until the next hold cycle.
How queue position announcements work
Once enabled, queue position announcements behave as follows:
First announcement plays 60 seconds after the caller joins the queue. Callers answered before that never hear one.
Repeat interval is approximate — announcements are inserted at hold-audio boundaries, so the actual gap can be longer than the configured interval if the current hold music track hasn't finished. The announcement plays at the next track boundary after the interval elapses.
Voice and language are inherited from the text-to-speech voice configured on your phone number (set in Settings > Channels > Phone under each number's settings) and can't be changed separately for announcements.
Team queue only — announcements play for callers waiting in a team queue. Calls held for a specific teammate don't receive announcements.
Position, not wait time — callers hear their place in line (e.g. "You are caller number 3 in the queue"), not an estimated wait time.
Note: The following limitations apply to queue position announcements:
English only — announcements are currently spoken in English. If your phone number is set to another language, the announcement will still play in English.
No announcement on indeterminate position — if the system can't determine an honest queue position (for example, when routing by tag matching), the caller hears uninterrupted hold music instead.
How to manually answer calls before they're auto-assigned
You can answer calls in the queue before they get automatically assigned. This feature gives teammates more control over assignment by being able to manually pick up high-priority calls.
In the conversation view you will see an ‘Answer’ button available on call cards
The call starts as soon as you click Answer
Tip: You can answer calls in the queue before they get automatically assigned. In the conversation view, click the Answer button on the call card — the call starts immediately. This gives teammates more control over assignment by allowing them to manually pick up high-priority calls.
How to send calls to voicemail
The Send to voicemail step can be used to deflect calls to voicemail (e.g. when the team is unavailable, or is out of office hours). Click on the Send to voicemail step to customize the voicemail greeting that plays when a customer is transferred to voicemail.
The voicemail greeting is able support multiple languages but will not auto-translate text-to-speech. Content included in this text box should be translated to the respective language selected in the drop down.
Choose to set follow-up actions, or add rules based on information you’ve collected during the Workflow.
How to offer callers a callback
The Request callback step lets you offer callers the option to request a callback rather than waiting on hold. Add it to your phone workflow as a call overflow option — useful when your team is busy, out of office, or the wait queue is too long.
In these scenarios, you can offer your customers an option to request a callback or stay in the queue and wait on hold (or offer other deflection options). If the customer requests a callback, they will keep their place in the call queue and the callback request will be shown to teammates in the inbox.
Add the Request callback step to your Workflow, then inform the customer that a callback will be requested using a pre-recorded audio file or text-to-speech prompt.
In order to make callbacks, you need to have outbound calls enabled for phone numbers you’ll want to make outbound calls from. You can turn this on from your phone number settings.
How callbacks work in Intercom
When a caller reaches the Callback step in your call workflow, the following occurs:
The call ends immediately
A callback request is created using the phone number the caller dialed from
The conversation is assigned to the team you selected in the workflow
There are no voice prompts at this stage. Intercom does not say “we’ll call you back,” ask for a phone number, or explain next steps. The Callback step’s sole purpose is to end the call and queue a callback request.
Once the callback request is created:
Intercom automatically looks for an available agent on the assigned team
An available agent receives a callback request, which they can accept or ignore
If ignored, Intercom will offer the callback to another available agent
When an agent accepts, they see the customer’s phone number and place the outbound call
All routing and assignment is handled automatically — no manual setup is required.
What this means for callers
If a caller reaches the Callback step and the call ends right away, this is expected behavior.
If you want callers to hear a message such as:
“We’ll call you back shortly”
“Your callback has been requested”
Any explanation of next steps
You’ll need to add a Message step before the Callback step in your workflow to play that message.
Note:
Automatic assignment: Callback requests are sent to available agents and the callback is an outbound call from the agent
No agents available: The callback stays queued and Intercom keeps retrying for up to 4 hours
The Use default outbound number for callbacks toggle is workspace-wide. It applies to all callbacks across your workspace and cannot be configured per teammate or per phone number.
By default, callbacks go out from the number the customer originally called. You can change this by enabling Use default outbound number for callbacks in Phone Settings. When enabled, callbacks follow the same cascade as regular outbound calls: the teammate's personal default number first, then the workspace default, and finally the original conversation number.
How to forward calls to an external number
You are able to use the Forward call action if you want to automatically forward the call to an external number, e.g. a live answering service or an external team.
Note: Forwarded calls will be charged as an outbound call to the receiving number.
Click on the Forward call widget to enter the external phone number, choose Caller ID, set follow-up actions after the call is transferred, or add rules based on information you’ve collected during the workflow.
Caller ID for the forwarded call
By default, when a call is forwarded, the person receiving it sees the original caller's phone number. You can now change this per step.
To configure it: open the Forward call step in your workflow and look for the Caller ID for the forwarded call setting.
The caller's number (default): the person you forward to sees the original caller's phone number. Useful when whoever answers wants to know who is calling, or wants to call them back directly.
Your workspace number: the person you forward to sees your Intercom phone number (the number the customer originally called). More reliable for connecting, because some carriers block or filter calls that display a number the sender doesn't own.
Note: Existing Forward call steps keep behaving exactly as they did before this setting existed. Nothing changes unless a teammate edits the step.
Automatic fallbacks
Two automatic fallbacks apply regardless of which option you've chosen. These prevent forwarded calls from failing silently:
Caller's number unavailable: if the caller withheld their number, or the call didn't originate from a phone number, Intercom uses your workspace number instead, even when the step is set to The caller's number. Without this the call couldn't be placed.
Workspace number unavailable: if there's no usable Intercom number on the call, Intercom falls back to the caller's number, even when the step is set to Your workspace number.
Which option to choose
You want the recipient to see who's calling, or to be able to return the call directly → The caller's number.
Calls to the forwarded number are being blocked, going to voicemail, or showing as spam → Your workspace number.
You want a consistent, recognizable number on every forwarded call → Your workspace number.
How to end calls with a hang-up step
Use this action to hang up the call for the customer. For example, you might like to add the Hang up action to a path if a customer calls outside of office hours.
This step must come at the end of a path.
Click on the Hang up widget to set follow-up actions after the call ends (such as close conversation), or add rules based on information you’ve collected during the Workflow.
How to collect post-call ratings
Add the Ask for call rating step to immediately collect customer feedback at the end of a call with your team. This is super useful for gauging call satisfaction and providing valuable insights for continuous improvement.
Tip: Call ratings will be available in the Customer satisfaction report and in Custom reports.
Click on the Ask for call rating step to customize the text-to-speech message that plays when asking for feedback.
The message can support multiple languages.
Notes:
In order for a teammate to be assigned a phone call, they must be a member of the team to which the call is routed.
You can apply SLAs (Service Level Agreements) to phone calls by adding an Apply SLA step to your phone workflow. See Phone SLAs (Speed of Answer) for setup details.
Calls always create a conversation in the Inbox by design. There is no supported way to prevent call conversations from being generated, or to selectively block customer replies in call workflows — this is a channel restriction.
Tip: To automate actions after a call ends — such as triaging abandoned calls, auto-closing answered conversations, or routing outbound no-answers — use the When a phone call ends trigger. This is separate from the When a customer calls trigger and runs post-call. See Automate actions when a phone call ends for setup steps and example workflows.
Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts





































