Webhook tool

Intercom AI voice agents that log calls in your support history

The agent answers the phone and writes each call back to the Intercom contact, so support sees one history across chat and calls.

Support phone agent

Answers calls and keeps the contact record current.

Instructions

Find the contact by phone. If not found, ask for their name and email and create one. Answer export, report and account questions from your help content. Before the call ends, add a note to the contact with what they asked. If the caller asks for a person, add the note first, then transfer to the support line.

Handoff
Support team

Connected tools

  • Search contactsWebhook
  • Create contactWebhook
  • Add noteWebhook
  • Transfer to supportTransfer

What a Intercom AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

The agent finds the contact by phone number and adds a note about the call to it before the call ends.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Search contacts

Finds a contact by phone.

Show the JSON definition
search_contacts
{
  "type": "webhook",
  "name": "search_contacts",
  "description": "Finds an Intercom contact by phone number.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.intercom.io/contacts/search",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "query": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "constant_value": "phone"
            },
            "operator": {
              "type": "string",
              "constant_value": "="
            },
            "value": {
              "type": "string",
              "dynamic_variable": "system__caller_id"
            }
          }
        }
      },
      "required": []
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_INTERCOM_ACCESS_TOKEN"
      }
    },
    "request_headers": {
      "Intercom-Version": "2.11"
    }
  }
}

Webhook

Create contact

Creates a contact for a new caller.

Show the JSON definition
create_contact
{
  "type": "webhook",
  "name": "create_contact",
  "description": "Creates a contact for a caller we do not know.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.intercom.io/contacts",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string",
          "constant_value": "lead"
        },
        "name": {
          "type": "string",
          "description": "Caller's name."
        },
        "email": {
          "type": "string",
          "description": "Caller's email address."
        },
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        }
      },
      "required": [
        "name",
        "email"
      ]
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_INTERCOM_ACCESS_TOKEN"
      }
    },
    "request_headers": {
      "Intercom-Version": "2.11"
    }
  }
}

Webhook

Add note

Adds a note about the call to the contact.

Show the JSON definition
add_note
{
  "type": "webhook",
  "name": "add_note",
  "description": "Adds a note about this call to the caller's Intercom contact. Use it once, before the call ends or before a transfer.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.intercom.io/contacts/{contact_id}/notes",
    "method": "POST",
    "path_params_schema": {
      "contact_id": {
        "type": "string",
        "description": "The contact id from search_contacts or create_contact."
      }
    },
    "request_body_schema": {
      "type": "object",
      "properties": {
        "body": {
          "type": "string",
          "description": "What the caller asked about and what you told them, in two or three sentences."
        }
      },
      "required": [
        "body"
      ]
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_INTERCOM_ACCESS_TOKEN"
      }
    },
    "request_headers": {
      "Intercom-Version": "2.11"
    }
  }
}

Transfer

Transfer to support

Cold transfer to the support line.

Show the JSON definition
transfer_to_support
{
  "config": {
    "system_tools": {
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550112"
            },
            "condition": "The caller asks for a person."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. The webhook tools call the Intercom REST API with an access token you store as a secret, pinned to version 2.11. Vendor details read in October 2026.

  1. Create an access token

    In Intercom's Developer Hub, create an app and copy its access token. Give it Read and list users and companies and Write users and companies.

  2. Add the tools

    Store the token as a bearer secret.

  3. Check the note

    add_note takes the contact id from search_contacts or create_contact as its path parameter, so it runs after one of them.

  4. Test

    Call as a known and unknown contact.

Before you build

Search filters are nested

The search tool fixes field and operator with constants, so the model fills only what it should.

Pin the API version

The tools send Intercom-Version 2.11 on every request. Intercom says the header version overrides the version selected in your app's settings.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Intercom AI voice agent FAQs

Does Intercom Fin answer phone calls?

Yes. Intercom's Fin Voice answers calls on a number set up in Intercom or on your own telephony, such as Five9, Aircall or Amazon Connect, through call forwarding or SIP. The Cartesia agent on this page writes each call to the Intercom contact through the REST API.

Should I use Fin Voice or a Cartesia agent with Intercom?

Fin Voice keeps answers and reporting inside Intercom. A Cartesia agent fits when you want to choose the voice and LLM, pay by the minute, or call tools in other systems on the same call. It searches the contact, creates one if needed, and adds a note about the call.

How do I connect Intercom to an AI voice agent?

Create an app in Intercom's developer hub and copy its access token. Give it Read and list users and companies and Write users and companies. Store the token as a bearer secret, and pin Intercom-Version 2.11 on each tool.

Can the agent hand a caller to an Intercom teammate?

Yes, by a cold transfer to your support line. The agent adds the note first, so the teammate finds the call on the contact. Per Cartesia's docs, transfers need a Twilio or SIP trunk number.

What does an Intercom voice agent on Cartesia cost?

Cartesia bills the agent at $0.03/min, plus LLM usage and telephony, per minute rather than per resolution. Phone minutes depend on the number. Cartesia-provisioned numbers are US only and carry Cartesia's telephony fee. Numbers from your Twilio account or a SIP trunk pay your carrier's rates instead.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia