> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Intercom: Merge Contact

> Merge an Intercom lead into a user contact. Includes SDK V2 guidance, input constraints, response fields, and Deepline credit cost.

Merge an Intercom lead into a user contact.

> [!NOTE]
>
> Tool ID: `intercom_merge_contact`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'intercom_merge_contact',
  {
    "from": "example",
    "into": "example"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute intercom_merge_contact --input '{
  "from": "example",
  "into": "example"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "type": "example",
    "id": "id_123",
    "external_id": "external_123"
  }
}
```

Use `deepline describe intercom_merge_contact --json` for the latest machine-readable contract.

## Input reference

Merge contact data.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.from` | `string` | Yes | — | The unique identifier for the contact to merge away from. Must be a lead. |
| `payload.into` | `string` | Yes | — | The unique identifier for the contact to merge into. Must be a user. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Merge contact data.",
    "properties": {
      "from": {
        "type": "string",
        "description": "The unique identifier for the contact to merge away from. Must be a lead."
      },
      "into": {
        "type": "string",
        "description": "The unique identifier for the contact to merge into. Must be a user."
      }
    },
    "required": [
      "from",
      "into"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Contacts represent your leads and users in Intercom. |
| `result.data.type` | `string` | No | — | The type of object. |
| `result.data.id` | `string` | No | — | The unique identifier for the contact which is given by Intercom. |
| `result.data.external_id` | `string \| null` | No | — | The unique identifier for the contact which is provided by the Client. |
| `result.data.workspace_id` | `string` | No | — | The id of the workspace which the contact belongs to. |
| `result.data.role` | `string` | No | — | The role of the contact. |
| `result.data.email` | `string` | No | — | The contact's email. |
| `result.data.email_domain` | `string` | No | — | The contact's email domain. |
| `result.data.phone` | `string \| null` | No | — | The contacts phone. |
| `result.data.name` | `string \| null` | No | — | The contacts name. |
| `result.data.owner_id` | `integer \| null` | No | — | The id of an admin that has been assigned account ownership of the contact. |
| `result.data.has_hard_bounced` | `boolean` | No | — | Whether the contact has had an email sent to them hard bounce. |
| `result.data.marked_email_as_spam` | `boolean` | No | — | Whether the contact has marked an email sent to them as spam. |
| `result.data.unsubscribed_from_emails` | `boolean` | No | — | Whether the contact is unsubscribed from emails. |
| `result.data.created_at` | `integer` | No | — | (Unix timestamp in seconds) The time when the contact was created. Format: `date-time`. |
| `result.data.updated_at` | `integer` | No | — | (Unix timestamp in seconds) The time when the contact was last updated. Format: `date-time`. |
| `result.data.signed_up_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time specified for when a contact signed up. Format: `date-time`. |
| `result.data.last_seen_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact was last seen (either where the Intercom Messenger was installed or when specified manually). Format: `date-time`. |
| `result.data.last_replied_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact last messaged in. Format: `date-time`. |
| `result.data.last_contacted_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact was last messaged. Format: `date-time`. |
| `result.data.last_email_opened_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact last opened an email. Format: `date-time`. |
| `result.data.last_email_clicked_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact last clicked a link in an email. Format: `date-time`. |
| `result.data.language_override` | `string \| null` | No | — | A preferred language setting for the contact, used by the Intercom Messenger even if their browser settings change. |
| `result.data.browser` | `string \| null` | No | — | The name of the browser which the contact is using. |
| `result.data.browser_version` | `string \| null` | No | — | The version of the browser which the contact is using. |
| `result.data.browser_language` | `string \| null` | No | — | The language set by the browser which the contact is using. |
| `result.data.os` | `string \| null` | No | — | The operating system which the contact is using. |
| `result.data.android_app_name` | `string \| null` | No | — | The name of the Android app which the contact is using. |
| `result.data.android_app_version` | `string \| null` | No | — | The version of the Android app which the contact is using. |
| `result.data.android_device` | `string \| null` | No | — | The Android device which the contact is using. |
| `result.data.android_os_version` | `string \| null` | No | — | The version of the Android OS which the contact is using. |
| `result.data.android_sdk_version` | `string \| null` | No | — | The version of the Android SDK which the contact is using. |
| `result.data.android_last_seen_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The time when the contact was last seen on an Android device. Format: `date-time`. |
| `result.data.ios_app_name` | `string \| null` | No | — | The name of the iOS app which the contact is using. |
| `result.data.ios_app_version` | `string \| null` | No | — | The version of the iOS app which the contact is using. |
| `result.data.ios_device` | `string \| null` | No | — | The iOS device which the contact is using. |
| `result.data.ios_os_version` | `string \| null` | No | — | The version of iOS which the contact is using. |
| `result.data.ios_sdk_version` | `string \| null` | No | — | The version of the iOS SDK which the contact is using. |
| `result.data.ios_last_seen_at` | `integer \| null` | No | — | (Unix timestamp in seconds) The last time the contact used the iOS app. Format: `date-time`. |
| `result.data.custom_attributes` | `record` | No | — | The custom attributes which are set for the contact. |
| `result.data.avatar` | `object \| null` | No | — | — |
| `result.data.avatar.type` | `string` | No | — | The type of object |
| `result.data.avatar.image_url` | `string \| null` | No | — | An image URL containing the avatar of a contact. Format: `uri`. |
| `result.data.tags` | `object \| null` | No | — | An object containing tags meta data about the tags that a contact has. Up to 10 will be displayed here. Use the url to get more. |
| `result.data.tags.data` | `array` | No | — | This object represents the tags attached to a contact. |
| `result.data.tags.data[].type` | `string` | No | — | The addressable object type Format: `uri`. |
| `result.data.tags.data[].id` | `string` | No | — | The id of the addressable object |
| `result.data.tags.data[].url` | `string` | No | — | Url to get more company resources for this contact Format: `uri`. |
| `result.data.tags.url` | `string` | No | — | url to get more tag resources for this contact Format: `uri`. |
| `result.data.tags.total_count` | `integer` | No | — | Int representing the total number of tags attached to this contact |

The table shows the first 50 fields. Expand the raw schema below for every field.

> [!NOTE]
>
> This output schema is too large for an inline display. Read the complete live contract with `deepline describe intercom_merge_contact --json`.

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Intercom provider guide](https://deepline.com/docs/providers/intercom/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.