Reference · Tools
Intercom integration
Manage customer and prospect profiles, including their associated organizations, within the Intercom 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.
- Works as
- Action
- Tool name
intercom- 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
| 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
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. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
Company: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Select By (companySelectBy) | options | No | id | The 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) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
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 | {} | |
| — Segment ID | string | No | — | Segment representing the company. |
| — 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. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
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 representing the company), companyId (the company_id you have given to the company) | ||||
Value (value) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
| 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) |
Lead: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
string | Yes | — | The email of the lead. | |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 (for update operations). (shown when /operation is update) | |
| — 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
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 representing the Lead), userId (automatically generated identifier for the Lead) | ||||
Value (value) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
Lead: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Select By (leadSelectBy) | options | No | id | The 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) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
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 | {} | |
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 (leadUpdateBy) | options | No | id | The 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) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 (for update operations). (shown when /operation is update) | |
| — 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
User: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Identifier Type | options | No | email | How 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) | string | Yes | — | The email or user ID value for the new user. |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 (for update operations). (shown when /operation is update) (hidden when /userUpdateBy 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 | string | No | — | User ID of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
User: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| ID | string | Yes | — | The Intercom defined ID representing the user. |
User: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Select By (userSelectBy) | options | No | id | The 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) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
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 | {} | |
| — Company ID | string | No | — | Company ID representing the user. |
string | No | — | The email address of the user. | |
| — Segment ID | string | No | — | Segment representing the user. |
| — Tag ID | string | No | — | Tag representing the user. |
User: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Update By (userUpdateBy) | options | No | id | The 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) | string | Yes | — | The identifier value for the lead, user or company (for company.users, the company whose users to list). |
| JSON Parameters | boolean | No | false | Whether to provide custom attributes as JSON instead of key-value pairs. |
| Additional Fields | collection | No | {} | |
| — 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 (for update operations). (shown when /operation is update) (hidden when /userUpdateBy 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 | string | No | — | User ID of the user (for update operations). (shown when /operation is update) (hidden when /userUpdateBy 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 of custom data for the lead, user or company. (shown when JSON Parameters is true) |
Custom Attributes (customAttributesUi) | fixedCollection | No | {} | Key/value pairs representing custom data for the lead, user or company. (shown when JSON Parameters is false) |
| — Name | string | No | — | |
| — Value | string | No | — |
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.
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
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) 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 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 BusyBotLast reviewed . Spotted something wrong? Tell us.