Reference · Tools
Intercom
Manage users, leads, and companies in the Intercom customer messaging platform.
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.
- Node type
- Action
- Parameters
- 44
- Outputs
- Output, Error
- Credentials
- Intercom API
Intercom
Manage users, leads, and companies in Intercom.
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.
Category: Communication
Tool Name: intercom
Version: 1
Appearance: Icon: si-intercom | Color: #1F8DED
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Intercom API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Company | company |
| Lead | lead |
| User | user |
Operations
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a new lead (Lead resource) |
| Delete | delete | Delete a lead (Lead resource) |
| Get | get | Get data of a lead (Lead resource) |
| Get Many | getAll | Get data of many leads (Lead resource) |
| Update | update | Update a lead (Lead resource) |
| Create | create | Create a new user (User resource) |
| Delete | delete | Delete a user (User resource) |
| Get | get | Get data of a user (User resource) |
| Get Many | getAll | Get data of many users (User resource) |
| Update | update | Update a user (User resource) |
| Create | create | Create a new company (Company resource) |
| Get | get | Get data of a company (Company resource) |
| Get Many | getAll | Get data of many companies (Company resource) |
| Update | update | Update a company (Company resource) |
| Users | users | List company’s users (Company resource) |
Parameters
Lead: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
string | Yes | — | The email of the lead. Supports expressions like {{ $json.email }}. | |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Optional lead attributes. Add only the ones you need. |
| — Avatar | string | No | — | An avatar image URL. The image URL needs to be https. |
| — Companies | string | No | — | Comma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource. |
| — Name | string | No | — | Name of the lead. |
| — Phone | string | No | — | The phone number of the lead. |
| — Unsubscribed From Emails | boolean | No | false | Whether the Lead is unsubscribed from emails. |
| — Update Last Request At | boolean | No | false | Whether to update the last_request_at value to the current API service time. |
| — UTM Campaign | string | No | — | Identifies a specific product promotion or strategic campaign. |
| — UTM Content | string | No | — | Identifies what specifically was clicked to bring the user to the site. |
| — UTM Medium | string | No | — | Identifies what type of link was used. |
| — UTM Source | string | No | — | Identifies the advertiser, site, publication, etc. that sent traffic. |
| — UTM Term | string | No | — | Identifies search terms. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the lead. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
Lead: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Select By | options | No | id | The property to select the lead by. |
Options: email, id (the Intercom-defined ID), userId (your own identifier for the lead), phone | ||||
Value (value) | string | Yes | — | The identifier value for the lead. Supports expressions. |
Lead: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the result set. Add only the filters you need. |
string | No | — | The email address of the lead. | |
| — Phone | string | No | — | The phone number of the lead. |
Lead: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Update By | options | No | id | The property via which to query the lead. |
Options: userId (your own identifier for the lead), id (the Intercom-defined ID) | ||||
Value (value) | string | Yes | — | The identifier value for the lead. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Fields to change on the lead. Add only the ones you need. |
| — Avatar | string | No | — | An avatar image URL. The image URL needs to be https. |
| — Companies | string | No | — | Comma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource. |
string | No | — | The email of the lead. | |
| — Name | string | No | — | Name of the lead. |
| — Phone | string | No | — | The phone number of the lead. |
| — Unsubscribed From Emails | boolean | No | false | Whether the Lead is unsubscribed from emails. |
| — Update Last Request At | boolean | No | false | Whether to update the last_request_at value to the current API service time. |
| — UTM Campaign | string | No | — | Identifies a specific product promotion or strategic campaign. |
| — UTM Content | string | No | — | Identifies what specifically was clicked to bring the user to the site. |
| — UTM Medium | string | No | — | Identifies what type of link was used. |
| — UTM Source | string | No | — | Identifies the advertiser, site, publication, etc. that sent traffic. |
| — UTM Term | string | No | — | Identifies search terms. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the lead. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
Lead: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Delete By | options | No | id | How to identify the lead to delete. |
Options: id (the Intercom-defined ID), userId (your own identifier for the lead) | ||||
Value (value) | string | Yes | — | The identifier value for the lead. Supports expressions. |
User: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Identifier Type | options | No | email | How to identify the new user. |
Options: email (required if a user ID is not supplied), userId (required if an email is not supplied) | ||||
Value (idValue) | string | Yes | — | The email or user ID value for the new user. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Optional user attributes. Add only the ones you need. |
| — Avatar | string | No | — | An avatar image URL. The image URL needs to be https. |
| — Companies | string | No | — | Comma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource. |
| — Name | string | No | — | Name of the user. |
| — Phone | string | No | — | The phone number of the user. |
| — Session Count | number | No | 0 | How many sessions the user has recorded. |
| — Unsubscribed From Emails | boolean | No | false | Whether the user is unsubscribed from emails. |
| — Update Last Request At | boolean | No | false | Whether to update the last_request_at value to the current API service time. |
| — UTM Campaign | string | No | — | Identifies a specific product promotion or strategic campaign. |
| — UTM Content | string | No | — | Identifies what specifically was clicked to bring the user to the site. |
| — UTM Medium | string | No | — | Identifies what type of link was used. |
| — UTM Source | string | No | — | Identifies the advertiser, site, publication, etc. that sent traffic. |
| — UTM Term | string | No | — | Identifies search terms. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the user. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the user. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
User: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Select By | options | No | id | The property to select the user by. |
Options: id (the Intercom-defined ID), userId (your own identifier for the user) | ||||
Value (value) | string | Yes | — | The identifier value for the user. Supports expressions. |
User: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the result set. Add only the filters you need. |
— Company ID (company_id) | string | No | — | Company ID representing the user. |
string | No | — | The email address of the user. | |
— Segment ID (segment_id) | string | No | — | Segment representing the user. |
— Tag ID (tag_id) | string | No | — | Tag representing the user. |
User: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Update By | options | No | id | The property via which to query the user. |
Options: id (the Intercom-defined ID), email, userId (your own identifier for the user) | ||||
Value (value) | string | Yes | — | The identifier value for the user. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Fields to change on the user. Add only the ones you need. |
| — Avatar | string | No | — | An avatar image URL. The image URL needs to be https. |
| — Companies | string | No | — | Comma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource. |
string | No | — | Email of the user. (hidden when Update By is email) | |
| — Name | string | No | — | Name of the user. |
| — Phone | string | No | — | The phone number of the user. |
| — Session Count | number | No | 0 | How many sessions the user has recorded. |
— User ID (userId) | string | No | — | User ID of the user. (hidden when Update By is email, userId) |
| — Unsubscribed From Emails | boolean | No | false | Whether the user is unsubscribed from emails. |
| — Update Last Request At | boolean | No | false | Whether to update the last_request_at value to the current API service time. |
| — UTM Campaign | string | No | — | Identifies a specific product promotion or strategic campaign. |
| — UTM Content | string | No | — | Identifies what specifically was clicked to bring the user to the site. |
| — UTM Medium | string | No | — | Identifies what type of link was used. |
| — UTM Source | string | No | — | Identifies the advertiser, site, publication, etc. that sent traffic. |
| — UTM Term | string | No | — | Identifies search terms. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the user. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the user. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
User: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| ID | string | Yes | — | The Intercom defined ID representing the user. Supports expressions. |
Company: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Company ID | string | Yes | — | The company ID you have defined for the company. Intercom upserts based on this value. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Optional company attributes. Add only the ones you need. |
| — Industry | string | No | — | The industry that this company operates in. |
| — Monthly Spend | number | No | 0 | The monthly spend amount for this company. |
| — Name | string | No | — | Name of the company. |
| — Plan | string | No | — | The name of the plan associated with the company. |
| — Size | number | No | 0 | The number of employees in this company. |
| — Website | string | No | — | The URL for this company’s website. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the company. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
Company: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Select By | options | No | id | What property to use to query the company. |
Options: companyId (the company_id you gave the company), id (the Intercom-defined ID), name | ||||
Value (value) | string | Yes | — | The identifier value for the company. Supports expressions. |
Company: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the result set. Add only the filters you need. |
— Segment ID (segment_id) | string | No | — | Segment representing the company. |
— Tag ID (tag_id) | string | No | — | Tag representing the company. |
Company: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Company ID | string | Yes | — | The company ID you have defined for the company. Intercom upserts based on this value. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | Fields to change on the company. Add only the ones you need. |
| — Industry | string | No | — | The industry that this company operates in. |
| — Monthly Spend | number | No | 0 | The monthly spend amount for this company. |
| — Name | string | No | — | Name of the company. |
| — Plan | string | No | — | The name of the plan associated with the company. |
| — Size | number | No | 0 | The number of employees in this company. |
| — Website | string | No | — | The URL for this company’s website. |
Custom Attributes (customAttributesJson) | json | No | — | A JSON object of key/value pairs to represent custom data you want to attribute to the company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the company. (shown when JSON Parameters is false) |
| — Name | string | No | — | The custom attribute’s name. |
| — Value | string | No | — | The custom attribute’s value. |
Company: Users
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| List By | options | No | id | How to identify the company whose users to list. |
Options: id (the Intercom-defined ID), companyId (the company_id you gave the company) | ||||
Value (value) | string | Yes | — | The identifier value for the company. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum 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.
| Operation | Output items |
|---|---|
lead / create, update, delete | One item — the contact record Intercom returns for the action. |
lead / get | One 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 / getAll | Fans out — one output item per lead. Return All pages through every match; otherwise up to Limit. |
user / create, update, delete | One item — the contact record. |
user / get | One item, with the same “not found merges nothing” behavior as leads. |
user / getAll | Fans out — one output item per user. |
company / create, update | One item — the company record. |
company / get | One item — the company record. |
company / getAll | Fans out — one output item per company. |
company / users | Fans 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.
Usage Examples
- 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
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
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage users, leads, and companies in Intercom for customer messaging and support.
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) andcustomAttributesUi(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 foundwhen nothing matches. - Attaching companies is a second call. The
companiesfield 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 the Intercom node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Intercom API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.