Reference · Tools

Intercom

Manage users, leads, and companies in the Intercom customer 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.

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

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

Lead: Create

ParameterTypeRequiredDefaultDescription
EmailstringYesThe email of the lead. Supports expressions like {{ $json.email }}.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Optional lead attributes. Add only the ones you need.
— AvatarstringNoAn avatar image URL. The image URL needs to be https.
— CompaniesstringNoComma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— NamestringNoName of the lead.
— PhonestringNoThe 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 CampaignstringNoIdentifies a specific product promotion or strategic campaign.
— UTM ContentstringNoIdentifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNoIdentifies what type of link was used.
— UTM SourcestringNoIdentifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNoIdentifies search terms.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the lead. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

Lead: Get

ParameterTypeRequiredDefaultDescription
Select ByoptionsNoidThe property to select the lead by.
Options: email, id (the Intercom-defined ID), userId (your own identifier for the lead), phone
Value (value)stringYesThe identifier value for the lead. Supports expressions.

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{}Narrow the result set. Add only the filters you need.
— EmailstringNoThe email address of the lead.
— PhonestringNoThe phone number of the lead.

Lead: Update

ParameterTypeRequiredDefaultDescription
Update ByoptionsNoidThe property via which to query the lead.
Options: userId (your own identifier for the lead), id (the Intercom-defined ID)
Value (value)stringYesThe identifier value for the lead. Supports expressions.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Fields to change on the lead. Add only the ones you need.
— AvatarstringNoAn avatar image URL. The image URL needs to be https.
— CompaniesstringNoComma-separated list of company IDs this lead belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNoThe email of the lead.
— NamestringNoName of the lead.
— PhonestringNoThe 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 CampaignstringNoIdentifies a specific product promotion or strategic campaign.
— UTM ContentstringNoIdentifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNoIdentifies what type of link was used.
— UTM SourcestringNoIdentifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNoIdentifies search terms.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the lead. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

Lead: Delete

ParameterTypeRequiredDefaultDescription
Delete ByoptionsNoidHow to identify the lead to delete.
Options: id (the Intercom-defined ID), userId (your own identifier for the lead)
Value (value)stringYesThe identifier value for the lead. Supports expressions.

User: Create

ParameterTypeRequiredDefaultDescription
Identifier TypeoptionsNoemailHow 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)stringYesThe email or user ID value for the new user. Supports expressions.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Optional user attributes. Add only the ones you need.
— AvatarstringNoAn avatar image URL. The image URL needs to be https.
— CompaniesstringNoComma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— NamestringNoName of the user.
— PhonestringNoThe phone number of the user.
— Session CountnumberNo0How many sessions the user has recorded.
— 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 CampaignstringNoIdentifies a specific product promotion or strategic campaign.
— UTM ContentstringNoIdentifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNoIdentifies what type of link was used.
— UTM SourcestringNoIdentifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNoIdentifies search terms.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the user. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

User: Get

ParameterTypeRequiredDefaultDescription
Select ByoptionsNoidThe property to select the user by.
Options: id (the Intercom-defined ID), userId (your own identifier for the user)
Value (value)stringYesThe identifier value for the user. Supports expressions.

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{}Narrow the result set. Add only the filters you need.
— Company ID (company_id)stringNoCompany ID representing the user.
— EmailstringNoThe email address of the user.
— Segment ID (segment_id)stringNoSegment representing the user.
— Tag ID (tag_id)stringNoTag representing the user.

User: Update

ParameterTypeRequiredDefaultDescription
Update ByoptionsNoidThe property via which to query the user.
Options: id (the Intercom-defined ID), email, userId (your own identifier for the user)
Value (value)stringYesThe identifier value for the user. Supports expressions.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Fields to change on the user. Add only the ones you need.
— AvatarstringNoAn avatar image URL. The image URL needs to be https.
— CompaniesstringNoComma-separated list of company IDs this user belongs to. Find company IDs in Intercom dashboard or via the Company resource.
— EmailstringNoEmail of the user. (hidden when Update By is email)
— NamestringNoName of the user.
— PhonestringNoThe phone number of the user.
— Session CountnumberNo0How many sessions the user has recorded.
— User ID (userId)stringNoUser ID of the user. (hidden when Update By 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 CampaignstringNoIdentifies a specific product promotion or strategic campaign.
— UTM ContentstringNoIdentifies what specifically was clicked to bring the user to the site.
— UTM MediumstringNoIdentifies what type of link was used.
— UTM SourcestringNoIdentifies the advertiser, site, publication, etc. that sent traffic.
— UTM TermstringNoIdentifies search terms.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the user. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

User: Delete

ParameterTypeRequiredDefaultDescription
IDstringYesThe Intercom defined ID representing the user. Supports expressions.

Company: Create

ParameterTypeRequiredDefaultDescription
Company IDstringYesThe company ID you have defined for the company. Intercom upserts based on this value. Supports expressions.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Optional company attributes. Add only the ones you need.
— IndustrystringNoThe industry that this company operates in.
— Monthly SpendnumberNo0The monthly spend amount for this company.
— NamestringNoName of the company.
— PlanstringNoThe name of the plan associated with the company.
— SizenumberNo0The number of employees in this company.
— WebsitestringNoThe URL for this company’s website.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the company. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

Company: Get

ParameterTypeRequiredDefaultDescription
Select ByoptionsNoidWhat property to use to query the company.
Options: companyId (the company_id you gave the company), id (the Intercom-defined ID), name
Value (value)stringYesThe identifier value for the company. Supports expressions.

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{}Narrow the result set. Add only the filters you need.
— Segment ID (segment_id)stringNoSegment representing the company.
— Tag ID (tag_id)stringNoTag representing the company.

Company: Update

ParameterTypeRequiredDefaultDescription
Company IDstringYesThe company ID you have defined for the company. Intercom upserts based on this value. Supports expressions.
JSON ParametersbooleanNofalseWhether to provide custom attributes as JSON instead of key-value pairs.
Additional FieldscollectionNo{}Fields to change on the company. Add only the ones you need.
— IndustrystringNoThe industry that this company operates in.
— Monthly SpendnumberNo0The monthly spend amount for this company.
— NamestringNoName of the company.
— PlanstringNoThe name of the plan associated with the company.
— SizenumberNo0The number of employees in this company.
— WebsitestringNoThe URL for this company’s website.
Custom Attributes (customAttributesJson)jsonNoA 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)fixedCollectionNo{}Key/value pairs representing custom data for the company. (shown when JSON Parameters is false)
— NamestringNoThe custom attribute’s name.
— ValuestringNoThe custom attribute’s value.

Company: Users

ParameterTypeRequiredDefaultDescription
List ByoptionsNoidHow to identify the company whose users to list.
Options: id (the Intercom-defined ID), companyId (the company_id you gave the company)
Value (value)stringYesThe identifier value for the company. Supports expressions.
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)

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.

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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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) 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 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 BusyBot

Last updated . Spotted something wrong? Tell us.