Search all guides

Reference · Tools

Intercom integration

Manage customer and prospect profiles, including their associated organizations, within the Intercom messaging platform.

Action Communication v1

The Intercom node manages users, leads and companies, letting you select records by email, Intercom ID or your own user ID. A typical build is keeping Intercom in step with your product database, upserting the company and attaching each new user to it as they sign up.

Works as
Action
Tool name
intercom
Operations
15 — Create , Delete , Get , Get Many , Update and 10 more
Parameters
44
Outputs
Output, Error
Credentials
Intercom API
Official docs
Intercom docs developers.intercom.com

What you can build with Intercom

  • Create a new user in Intercom with email.
  • Update lead information in Intercom.
  • List all companies in Intercom.
  • Get user details from Intercom by ID.
  • Delete a lead from Intercom.
  • List users belonging to a specific company.

Overview

Intercom is a customer messaging platform. This tool provides CRUD operations for Users (the primary way of interacting with contacts), Leads (logged-out users/prospects), and Companies (commercial organizations). It supports flexible identifier lookups, custom attributes, UTM tracking parameters, company associations, and paginated listing with filters.

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Intercom API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Companycompany
Leadlead
Useruser

Operations

OperationValueDescription
CreatecreateCreate a new lead (Lead resource)
DeletedeleteDelete a lead (Lead resource)
GetgetGet data of a lead (Lead resource)
Get ManygetAllGet data of many leads (Lead resource)
UpdateupdateUpdate a lead (Lead resource)
CreatecreateCreate a new user (User resource)
DeletedeleteDelete a user (User resource)
GetgetGet data of a user (User resource)
Get ManygetAllGet data of many users (User resource)
UpdateupdateUpdate a user (User resource)
CreatecreateCreate a new company (Company resource)
GetgetGet data of a company (Company resource)
Get ManygetAllGet data of many companies (Company resource)
UpdateupdateUpdate a company (Company resource)
UsersusersList company’s users (Company resource)

Parameters

Company: Create

ParameterTypeRequiredDefaultDescription
Company IDstringYes—The company ID you have defined for the company. Intercom upserts based on this value.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— IndustrystringNo—The industry that this company operates in.
— Monthly SpendnumberNo0The monthly spend amount for this company.
— NamestringNo—Name of the company.
— PlanstringNo—The name of the plan associated with the company.
— SizenumberNo0The number of employees in this company.
— WebsitestringNo—The URL for this company’s website.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

Company: Get

ParameterTypeRequiredDefaultDescription
Select By (companySelectBy)optionsNoidThe property to look the company up by. Use the Intercom ID or your own company ID; lookup by name is no longer supported by Intercom.
Options: companyId (the company_id you have given to the company), id (the Intercom defined ID representing the company), name (the name of the company)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).

Company: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}
— Segment IDstringNo—Segment representing the company.
— Tag IDstringNo—Tag representing the company.

Company: Update

ParameterTypeRequiredDefaultDescription
Company IDstringYes—The company ID you have defined for the company. Intercom upserts based on this value.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— IndustrystringNo—The industry that this company operates in.
— Monthly SpendnumberNo0The monthly spend amount for this company.
— NamestringNo—Name of the company.
— PlanstringNo—The name of the plan associated with the company.
— SizenumberNo0The number of employees in this company.
— WebsitestringNo—The URL for this company’s website.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

Company: Users

ParameterTypeRequiredDefaultDescription
List ByoptionsNoidHow to identify the company whose users to list.
Options: id (the Intercom defined ID representing the company), companyId (the company_id you have given to the company)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Lead: Create

ParameterTypeRequiredDefaultDescription
EmailstringYes—The email of the lead.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— AvatarstringNo—An avatar image URL. The image URL needs to be https.
— CompaniesstringNo—Comma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNo—The email of the lead (for update operations). (shown when /operation is update)
— NamestringNo—Name of the lead.
— PhonestringNo—The phone number of the lead.
— Unsubscribed From EmailsbooleanNofalseWhether the Lead is unsubscribed from emails.
— Update Last Request AtbooleanNofalseWhether to update the last_request_at value to the current API service time.
— UTM CampaignstringNo—Identifies a specific product promotion or strategic campaign.
— UTM ContentstringNo—Identifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNo—Identifies what type of link was used.
— UTM SourcestringNo—Identifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNo—Identifies search terms.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

Lead: Delete

ParameterTypeRequiredDefaultDescription
Delete ByoptionsNoidHow to identify the lead to delete.
Options: id (the Intercom defined ID representing the Lead), userId (automatically generated identifier for the Lead)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).

Lead: Get

ParameterTypeRequiredDefaultDescription
Select By (leadSelectBy)optionsNoidThe property to look the lead up by. A lead can be fetched by email, Intercom ID, user ID or phone.
Options: email (email representing the Lead), id (the Intercom defined ID representing the Lead), userId (automatically generated identifier for the Lead), phone (phone representing the Lead)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).

Lead: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}
— EmailstringNo—The email address of the lead.
— PhonestringNo—The phone number of the lead.

Lead: Update

ParameterTypeRequiredDefaultDescription
Update By (leadUpdateBy)optionsNoidThe property by which to find the lead to update. A lead can be matched by user ID or Intercom ID.
Options: userId (automatically generated identifier for the Lead), id (the Intercom defined ID representing the Lead)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— AvatarstringNo—An avatar image URL. The image URL needs to be https.
— CompaniesstringNo—Comma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNo—The email of the lead (for update operations). (shown when /operation is update)
— NamestringNo—Name of the lead.
— PhonestringNo—The phone number of the lead.
— Unsubscribed From EmailsbooleanNofalseWhether the Lead is unsubscribed from emails.
— Update Last Request AtbooleanNofalseWhether to update the last_request_at value to the current API service time.
— UTM CampaignstringNo—Identifies a specific product promotion or strategic campaign.
— UTM ContentstringNo—Identifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNo—Identifies what type of link was used.
— UTM SourcestringNo—Identifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNo—Identifies search terms.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

User: Create

ParameterTypeRequiredDefaultDescription
Identifier TypeoptionsNoemailHow to identify the new user.
Options: email (the user’s email address. Required if user_id is not supplied), userId (a unique string identifier for the user. Required if email is not supplied)
Value (idValue)stringYes—The email or user ID value for the new user.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— AvatarstringNo—An avatar image URL. The image URL needs to be https.
— CompaniesstringNo—Comma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNo—Email of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy is email)
— NamestringNo—Name of the user.
— PhonestringNo—The phone number of the user.
— Session CountnumberNo0How many sessions the user has recorded.
— User IDstringNo—User ID of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy is email, userId)
— Unsubscribed From EmailsbooleanNofalseWhether the user is unsubscribed from emails.
— Update Last Request AtbooleanNofalseWhether to update the last_request_at value to the current API service time.
— UTM CampaignstringNo—Identifies a specific product promotion or strategic campaign.
— UTM ContentstringNo—Identifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNo—Identifies what type of link was used.
— UTM SourcestringNo—Identifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNo—Identifies search terms.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

User: Delete

ParameterTypeRequiredDefaultDescription
IDstringYes—The Intercom defined ID representing the user.

User: Get

ParameterTypeRequiredDefaultDescription
Select By (userSelectBy)optionsNoidThe property to look the user up by. A user can be fetched by Intercom ID or user ID.
Options: id (the Intercom defined ID representing the user), userId (automatically generated identifier for the user)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).

User: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}
— Company IDstringNo—Company ID representing the user.
— EmailstringNo—The email address of the user.
— Segment IDstringNo—Segment representing the user.
— Tag IDstringNo—Tag representing the user.

User: Update

ParameterTypeRequiredDefaultDescription
Update By (userUpdateBy)optionsNoidThe property by which to find the user to update. A user can be matched by Intercom ID, email or user ID.
Options: id (the Intercom defined ID representing the user), email (the email address of the user), userId (automatically generated identifier for the user)
Value (value)stringYes—The identifier value for the lead, user or company (for company.users, the company whose users to list).
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}
— AvatarstringNo—An avatar image URL. The image URL needs to be https.
— CompaniesstringNo—Comma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNo—Email of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy is email)
— NamestringNo—Name of the user.
— PhonestringNo—The phone number of the user.
— Session CountnumberNo0How many sessions the user has recorded.
— User IDstringNo—User ID of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy is email, userId)
— Unsubscribed From EmailsbooleanNofalseWhether the user is unsubscribed from emails.
— Update Last Request AtbooleanNofalseWhether to update the last_request_at value to the current API service time.
— UTM CampaignstringNo—Identifies a specific product promotion or strategic campaign.
— UTM ContentstringNo—Identifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNo—Identifies what type of link was used.
— UTM SourcestringNo—Identifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNo—Identifies search terms.
Custom Attributes (customAttributesJson)jsonNo—A JSON object of key/value pairs of custom data for the lead, user or company. (shown when JSON Parameters is true)
Custom Attributes (customAttributesUi)fixedCollectionNo{}Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false)
— NamestringNo—
— ValuestringNo—

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Intercom record is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

OperationOutput items
lead / create, update, deleteOne item — the contact record Intercom returns for the action.
lead / getOne item. A lookup that matches nothing merges nothing, so the item comes through carrying only its original fields — test for the Intercom id before treating it as found.
lead / getAllFans out — one output item per lead. Return All pages through every match; otherwise up to Limit.
user / create, update, deleteOne item — the contact record.
user / getOne item, with the same “not found merges nothing” behavior as leads.
user / getAllFans out — one output item per user.
company / create, updateOne item — the company record.
company / getOne item — the company record.
company / getAllFans out — one output item per company.
company / usersFans out — one output item per user in the company.

Leads and users are both contacts in Intercom and share the same record shape; the resource you pick sets the contact role and the identifier rules, not the fields you get back.

Example Configuration

Create a user identified by email, with custom attributes entered as key/value pairs:

{
  "type": "intercom",
  "parameters": {
    "resource": "user",
    "operation": "create",
    "identifierType": "email",
    "idValue": "{{ $json.email }}",
    "jsonParameters": false,
    "additionalFields": {
      "name": "Ada Lovelace",
      "phone": "+15550000123",
      "utmSource": "newsletter"
    },
    "customAttributesUi": {
      "customAttributesValues": [
        { "name": "plan_tier", "value": "pro" }
      ]
    }
  }
}

Update a lead found by its Intercom ID, supplying custom attributes as JSON:

{
  "type": "intercom",
  "parameters": {
    "resource": "lead",
    "operation": "update",
    "updateBy": "id",
    "value": "{{ $json.leadId }}",
    "jsonParameters": true,
    "additionalFields": {
      "name": "Grace Hopper"
    },
    "customAttributesJson": "{\"signup_source\":\"webinar\"}"
  }
}

Look up a user by your own identifier:

{
  "type": "intercom",
  "parameters": {
    "resource": "user",
    "operation": "get",
    "selectBy": "userId",
    "value": "custom_user_123"
  }
}

List users, filtered by segment and tag:

{
  "type": "intercom",
  "parameters": {
    "resource": "user",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "segment_id": "active_users",
      "tag_id": "vip_customer"
    }
  }
}

Create or upsert a company:

{
  "type": "intercom",
  "parameters": {
    "resource": "company",
    "operation": "create",
    "companyId": "acme-corp",
    "additionalFields": {
      "name": "Acme Corp",
      "industry": "Manufacturing",
      "size": 250,
      "website": "https://acme.example.com"
    }
  }
}

List every user attached to a company:

{
  "type": "intercom",
  "parameters": {
    "resource": "company",
    "operation": "users",
    "listBy": "companyId",
    "value": "acme-corp",
    "returnAll": true
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages users, leads, and companies within the Intercom customer messaging platform. It is ideal for creating, updating, deleting, and retrieving user and lead information, and for creating, updating, and reading company data. The tool produces updated Intercom records, new entries, or detailed information about requested users, leads, or companies.

Identifier Patterns

  • By email: "selectBy": "email", "value": "user@domain.com"
  • By ID: "selectBy": "id", "value": "12345"
  • By user ID: "selectBy": "userId", "value": "custom_user_123"

Notes

  • Custom attributes come in two shapes. JSON Parameters switches between customAttributesJson (a JSON object) and customAttributesUi (name/value rows). Only the one matching the toggle is sent.
  • Company: Create is an upsert. Intercom matches on the Company ID you supply, so re-running the node updates the existing company rather than creating a duplicate.
  • Updating by anything other than the Intercom ID costs an extra lookup. The node resolves email or user ID to the internal contact ID first, and raises Contact not found when nothing matches.
  • Attaching companies is a second call. The companies field takes a comma-separated list of company IDs and is applied after the contact itself is written.

Frequently asked questions

How do I identify a record?

Through Select By plus a value: `email` with an address, `id` with the Intercom ID, or `userId` with your own identifier — for example `custom_user_123`. Pick whichever identifier your upstream data actually holds.

Why are my custom attributes not arriving?

They come in two shapes and only the one matching the JSON Parameters toggle is sent. With it on the node uses the JSON object form; with it off it uses the name/value rows. Filling in the wrong one leaves the values behind.

Does creating a company duplicate it?

No — Company: Create is an upsert. Intercom matches on the Company ID you supply, so repeated runs update the existing record rather than creating another.

Which credential does it need?

An Intercom API credential covering users, leads and companies.

Build with Intercom

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Intercom API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.