<!-- BusyBot node reference — https://busybot.net/tools/intercom/ -->

> Node: Intercom (`intercom`) · Action · v1
> Category: Communication · Credentials: Intercom API (`intercomApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/intercom-api/) 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 |
|-----------|------|----------|---------|-------------|
| Email | `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. |
| — Email | `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. |
| — Email | `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. |
| — Email | `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. |
| — Email | `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:

```json
{
  "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:

```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:

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

List users, filtered by segment and tag:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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) 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.