Skip to main content

Integrating Fin Voice with CXone using call forwarding

Learn how to connect Fin Voice to CXone using PSTN call forwarding to resolve customer questions instantly with AI.

Written by Dawn
Updated over 2 months ago

This guide helps you connect Fin Voice, Intercom’s AI Agent for phone support, with your CXone account. By following these steps, you can instantly answer customer calls using your Help Center content, while ensuring that complex issues are seamlessly handed off to your human team with a full AI-generated summary and transcript.

Pro tip: This integration uses the Intercom API. We recommend having a technical teammate or developer assist with the script configuration in CXone Studio.


How the integration works

This integration uses Public Switched Telephone Network (PSTN) forwarding to route calls between CXone and Intercom:

  1. CXone → Fin Voice: CXone forwards inbound calls to a dedicated Fin Voice number purchased in Intercom.

  2. Fin Voice resolution: Fin answers instantly, using your Help Center to resolve the issue.

  3. Fin Voice → CXone: If Fin cannot resolve the call, it forwards the caller back to a dedicated CXone escalation number.

  4. Context transfer: CXone Studio uses the Fin Voice API to retrieve the call summary and transcript for your teammates.


Before you start

Ensure you meet the following requirements:

Requirement

Description

Intercom Workspace

Fin Voice enabled and hosted in US, EU, or AU regions.

Admin Access

Required for both Intercom and CXone to manage routing and API tokens.

Knowledge Base

Up-to-date Help Center content for Fin to reference.

CXone Numbers

Active numbers for primary inbound routing to forward calls to Fin and a dedicated escalation line to receive calls from Fin.


1. Test Fin Voice

Before going live, use the Voice Testing tab to simulate calls in your browser.

  1. Click Play and start speaking to hear Fin's responses.

  2. Use Settings (top right) to switch voices or preview greetings and escalation rules.


2. Create a Fin Voice line

To move from testing to a live line, you must purchase a dedicated number within Intercom.

  1. Click + New line.

  2. Select External Provider and click Next.

  3. Name your line, select From a phone number (PSTN), and click Next.

  4. Click Purchase to acquire a US local number.


3. Configure recordings and behavior

Enable Context Tools

To allow teammates to see what happened during the AI portion of the call, enable global settings:

  1. Switch on Enable recordings, Transcripts, and Call transcription summaries.

Customize Fin's Settings

In the Set Fin live tab, you can adjust how Fin behaves:

  • Office hours: Define when Fin should answer (defaults to 24/7).

  • Voice and language: Choose a voice that fits your brand.

  • Support content: Select which Help Center articles Fin should reference.

  • CSAT: Enable keypad ratings (1–5) for resolved calls.


4. Generate Intercom API Access Token

To allow CXone to communicate with Fin, you need a private API token.

  1. In Intercom, create a private Intercom app in your Developer Hub.

  2. Set the API version to Unstable.

  3. Copy the Access Token—you will need this for the scripts in CXone.


5. Set up CXone Campaign and Skills

You need one campaign and three specific skills (queues) to manage the routing logic.

Create the campaign

  1. In CXone, go to ACD > Contact Settings > Campaigns.

  2. Create a new campaign named Fin Voice.

  3. Set the status to On.

Create the skills

Go to ACD > Contact Settings > ACD Skills and create these three skills:

Skills

Media Type

Inbound/Outbound

Campaign

Screen Pops

Forward to Fin Skill

Phone Call

Inbound

Fin Voice

Checked

Call from Fin Skill

Phone Call

Inbound

Fin Voice

Checked

Human agents

Phone Call

Inbound

Fin Voice

Checked

Create the skill Human agents

Assign users to the Human agents skill

Once the "Human agents" skill is created, you must add the teammates who will answer escalated calls.

  1. Click the Users tab within the "Human agents" skill.

  2. Search for the relevant teammates and select them.

  3. Click Add Users.


6. Create the "Forward to Fin" Script

This script registers the call with the Intercom API and transfers the audio to Fin.

  1. Open Studio and create a new script named Forward to Fin Script.

  2. Add a Snippet block connected to Begin. Paste the following code to set up the API headers and body:


    // 1. Setup the Headers
    DYNAMIC authHeader
    authHeader.Authorization = "Bearer {{Intercom API Access Token}}" ASSIGN jsonHeaderString = "{authHeader.asJSON()}"

    // 2. Setup the Parameters
    DYNAMIC queryParams
    params.call_id = ContactId
    params.phone_number = ANI

    // Convert to JSON string
    ASSIGN jsonParamString = "{params.asJSON()}"

  3. Add a Rest Api Action block and configure it:

    • Service address: https://api.intercom.io/fin_voice/register

    • Verb: POST

    • Headers: {jsonHeaderString}

    • Parameters: {jsonParamString}

  4. Add a Transfer block connected to the success branch:

    • Destination: Enter the phone number provisioned in Intercom that Fin answers.

    • Caller ID: {ANI} (This passes the customer's number to Fin).


7. Create the "Call from Fin" Script

This script accepts the returning call from Fin, fetches the conversation summary, and routes it to a teammate.

  1. Create a new script named Call from Fin Script.

  2. Add a Snippet block connected to Begin to setup the auth header:


    // 1. Setup the Headers
    DYNAMIC authHeader
    authHeader.Authorization = "Bearer {{Intercom API Access Token}}" ASSIGN jsonHeaderString = "{authHeader.asJSON()}"

  3. Add a Rest Api Action block to fetch the call data:

    • Service address: https://api.intercom.io/fin_voice/phone_number/{ANI}

    • Verb: GET 27

    • Headers: {jsonHeaderString}

    • Result Set: collectResponse

  4. Add a second Snippet block to extract the summary:


    ASSIGN callSummary = collectResponse.call_summary

  5. Add an Assign block to display the summary to the teammate:

    • Variable: fin_call_summary

    • Value: {callSummary}

    • ScreenPop: On

  6. Add a Reqagent block to route the call:

    • Skill: Human agents

    • Screen Pop Source: Default


8. Assign Points of Contact

Finally, map your phone numbers to the scripts you just created.

Note: You will need two dedicated numbers from your CXone account manager for this step: one to forward calls to Fin and one to receive calls from Fin.

Navigate to ACD > Contact Settings > Points of Contact and configure the two numbers you requested from your account manager.

1. Forward to Fin Number

  • Name: Forward to Fin

  • Skill: Forward to Fin Skill

  • Script: Forward to Fin Script

2. Call from Fin Number

  • Name: Call from Fin

  • Skill: Call from Fin Skill

  • Script: Call from Fin Script

Verification

To test the integration:

  1. Dial the Forward to Fin number.

  2. Fin should answer using your Help Center content.

  3. Request to speak to a teammate. Fin should forward the call to the Call from Fin number.

  4. The call will route to a teammate in the Human agents skill. You can verify the call details in the Contact History report. The Contact History report is found in Prebuilt reports.

  5. The teammate will see the fin_call_summary on their screen.


💡Tip

Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts


Did this answer your question?