Intercom integration summary

Stitch’s Intercom integration replicates data using the Intercom API (V2.0). Refer to the Schema section for a list of objects available for replication.

Intercom feature snapshot

A high-level look at Stitch's Intercom (v1) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Deprecated on December 13, 2022

Supported by

Stitch

Stitch plan

Standard

API availability

Not available

Singer GitHub repository

singer-io/tap-intercom

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

Table-level reset

Unsupported

Configurable Replication Methods

Unsupported

DATA SELECTION
Table selection

Supported

Column selection

Supported

Select all

Supported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting Intercom

Step 1: Add Intercom as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Intercom icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch Intercom” would create a schema called stitch_intercom in the destination. Note: Schema names cannot be changed after you save the integration.

Step 2: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Intercom integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Intercom’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 3: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Intercom integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 4: Authorize Stitch to access Intercom

Lastly, you’ll be directed to Intercom’s website to complete the setup.

List of permissions requested by Stitch to access Intercom

  1. If you aren’t already logged into Intercom, you’ll be prompted to do so.
  2. Next, a screen requesting access to Intercom will display. Note: Stitch will only ever read your data.
  3. Click Connect.
  4. After the authorization process successfully completes, you’ll be redirected back to Stitch.
  5. Click All Done.

Step 5: Set objects to replicate

The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For Intercom integrations, you can select:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

Initial and historical replication jobs

After you finish setting up Intercom, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Intercom table reference

admins

The admins table lists info about the admins in your Intercom account. An admin is a user, or teammate, in your Intercom account.

Replication Method

Full Table

Primary Key

id

Useful links

Intercom documentation

admins schema on GitHub

Intercom API method

Join admins with on
company_attributes
admins.id = company_attributes.admin_id
contact_attributes
admins.id = contact_attributes.admin_id
contacts
admins.id = contacts.owner_id
conversation_parts
admins.id = conversation_parts.assigned_to
conversations
admins.id = conversations.conversation_rating.teammate.id
admins.id = conversations.tags.applied_by.id
admins.id = conversations.teammates.admins.id
teams
admins.id = teams.admin_ids
admins.team_ids = teams.id

admin_ids

ARRAY

avatar

OBJECT

image_url

STRING

away_mode_enabled

BOOLEAN

away_mode_reassign

BOOLEAN

email

STRING

has_inbox_seat

BOOLEAN

id

STRING

job_title

STRING

name

STRING

team_ids

ARRAY

type

STRING

companies

The companies table contains info about companies that use your Intercom product.

Custom attributes

If applicable, Stitch will replicate custom fields related to companies in Intercom.

Limitations

Intercom’s API limits the number of simultaneous requests a single Intercom app, or connection, can make to the endpoint. Stitch uses this endpoint to replicate company data. Currently, only one request can occur at a time.

If multiple connections exist and they attempt to use this endpoint at the same time, only the connection who made the request first will succeed.

This means that if Stitch attempts to extract data when another connection is using the endpoint, Extraction will fail and an error will surface in the Extraction Logs.

To prevent or minimize this issue, we recommend limiting the number of connections a single workspace has or scheduling extraction jobs in Stitch around your other connections’ usage.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

companies schema on GitHub

Intercom API method

Join companies with on
contacts
companies.id = contacts.companies.data.id
companies.tags.id = contacts.tags.data.id
segments
companies.segments.id = segments.id
conversations
companies.tags.id = conversations.tags.id
tags
companies.tags.id = tags.id

company_id

STRING

created_at

DATE-TIME

custom_attributes

OBJECT

id

STRING

industry

STRING

monthly_spend

NUMBER

name

STRING

plan

OBJECT

id

STRING

name

STRING

type

STRING

remote_created_at

DATE-TIME

segments

ARRAY

session_count

INTEGER

size

INTEGER

tags

ARRAY

type

STRING

updated_at

DATE-TIME

user_count

INTEGER

website

STRING

company_attributes

The company_attributes lists data attributes for a specified company in your Intercom account.

Replication Method

Full Table

Primary Key

name

Useful links

Intercom documentation

company_attributes schema on GitHub

Intercom API method

Join company_attributes with on
admins
company_attributes.admin_id = admins.id
contact_attributes
company_attributes.admin_id = contact_attributes.admin_id
contacts
company_attributes.admin_id = contacts.owner_id
conversation_parts
company_attributes.admin_id = conversation_parts.assigned_to
conversations
company_attributes.admin_id = conversations.conversation_rating.teammate.id
company_attributes.admin_id = conversations.tags.applied_by.id
company_attributes.admin_id = conversations.teammates.admins.id
teams
company_attributes.admin_id = teams.admin_ids

admin_id

STRING

api_writable

BOOLEAN

archived

BOOLEAN

created_at

DATE-TIME

custom

BOOLEAN

data_type

STRING

description

STRING

full_name

STRING

label

STRING

model

STRING

name

STRING

options

ARRAY

type

STRING

ui_writable

BOOLEAN

updated_at

DATE-TIME

company_segments

The company_segments table contains information about company segments in your Intercom account.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

company_segments schema on GitHub

Intercom API method

count

INTEGER

created_at

DATE-TIME

id

STRING

name

STRING

type

STRING

updated_at

DATE-TIME

contact_attributes

The contact_attributes table contains information about contact attributes in your Intercom account.

Replication Method

Full Table

Primary Key

name

Useful links

Intercom documentation

contact_attributes schema on GitHub

Intercom API method

Join contact_attributes with on
admins
contact_attributes.admin_id = admins.id
company_attributes
contact_attributes.admin_id = company_attributes.admin_id
contacts
contact_attributes.admin_id = contacts.owner_id
conversation_parts
contact_attributes.admin_id = conversation_parts.assigned_to
conversations
contact_attributes.admin_id = conversations.conversation_rating.teammate.id
contact_attributes.admin_id = conversations.tags.applied_by.id
contact_attributes.admin_id = conversations.teammates.admins.id
teams
contact_attributes.admin_id = teams.admin_ids

admin_id

STRING

api_writable

BOOLEAN

archived

BOOLEAN

created_at

DATE-TIME

custom

BOOLEAN

data_type

STRING

description

STRING

full_name

STRING

label

STRING

model

STRING

name

STRING

options

ARRAY

type

STRING

ui_writable

BOOLEAN

updated_at

DATE-TIME

contacts

The contacts table contains info about users and leads in your Intercom account.

Custom attributes

If applicable, Stitch will replicate custom fields related to contacts in Intercom.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

contacts schema on GitHub

Intercom API method

Join contacts with on
admins
contacts.owner_id = admins.id
company_attributes
contacts.owner_id = company_attributes.admin_id
contact_attributes
contacts.owner_id = contact_attributes.admin_id
conversation_parts
contacts.owner_id = conversation_parts.assigned_to
conversations
contacts.owner_id = conversations.conversation_rating.teammate.id
contacts.owner_id = conversations.tags.applied_by.id
contacts.owner_id = conversations.teammates.admins.id
contacts.id = conversations.conversation_rating.customer.id
contacts.id = conversations.customers.id
contacts.id = conversations.contacts.id
contacts.tags.data.id = conversations.tags.id
teams
contacts.owner_id = teams.admin_ids
companies
contacts.companies.data.id = companies.id
contacts.tags.data.id = companies.tags.id
tags
contacts.tags.data.id = tags.id

android_app_name

STRING

android_app_version

STRING

android_device

STRING

android_last_seen_at

DATE-TIME

android_os_version

STRING

android_sdk_version

STRING

avatar

STRING

browser

STRING

browser_language

STRING

browser_version

STRING

companies

OBJECT

data

ARRAY

id

STRING

type

STRING

url

STRING

has_more

BOOLEAN

total_count

INTEGER

type

STRING

url

STRING

created_at

DATE-TIME

custom_attributes

OBJECT

email

STRING

external_id

STRING

has_hard_bounced

BOOLEAN

id

STRING

ios_app_name

STRING

ios_app_version

STRING

ios_device

STRING

ios_last_seen_at

DATE-TIME

ios_os_version

STRING

ios_sdk_version

STRING

language_override

STRING

last_contacted_at

DATE-TIME

last_email_clicked_at

DATE-TIME

last_email_opened_at

DATE-TIME

last_replied_at

DATE-TIME

last_seen_at

DATE-TIME

location

OBJECT

city

STRING

country

STRING

region

STRING

type

STRING

marked_email_as_spam

BOOLEAN

name

STRING

notes

OBJECT

data

ARRAY

id

STRING

type

STRING

url

STRING

has_more

BOOLEAN

total_count

INTEGER

type

STRING

url

STRING

os

STRING

owner_id

INTEGER

phone

STRING

role

STRING

signed_up_at

DATE-TIME

social_profiles

OBJECT

data

ARRAY

name

STRING

type

STRING

url

STRING

type

STRING

tags

OBJECT

data

ARRAY

id

STRING

type

STRING

url

STRING

has_more

BOOLEAN

total_count

INTEGER

type

STRING

url

STRING

type

STRING

unsubscribed_from_emails

BOOLEAN

updated_at

DATE-TIME

workspace_id

STRING

conversation_parts

The conversation_parts table lists the individual parts of conversations in your Intercom account.

Note: When this table is replicated, all conversation parts associated with an updated conversation will be replicated.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

conversation_parts schema on GitHub

Intercom API method

Join conversation_parts with on
admins
conversation_parts.assigned_to = admins.id
company_attributes
conversation_parts.assigned_to = company_attributes.admin_id
contact_attributes
conversation_parts.assigned_to = contact_attributes.admin_id
contacts
conversation_parts.assigned_to = contacts.owner_id
conversations
conversation_parts.assigned_to = conversations.conversation_rating.teammate.id
conversation_parts.assigned_to = conversations.tags.applied_by.id
conversation_parts.assigned_to = conversations.teammates.admins.id
conversation_parts.conversation_id = conversations.id
teams
conversation_parts.assigned_to = teams.admin_ids

assigned_to

STRING

attachments

ARRAY

content_type

STRING

filesize

INTEGER

height

INTEGER

name

STRING

type

STRING

url

STRING

width

INTEGER

author

OBJECT

email

STRING

id

STRING

name

STRING

type

STRING

body

STRING

conversation_created_at

DATE-TIME

conversation_id

STRING

conversation_total_parts

INTEGER

conversation_updated_at

DATE-TIME

created_at

DATE-TIME

external_id

STRING

id

STRING

notified_at

DATE-TIME

part_type

STRING

type

STRING

updated_at

DATE-TIME

conversations

The conversations table contains info about user conversations in your Intercom account.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

conversations schema on GitHub

Intercom API method

Join conversations with on
admins
conversations.conversation_rating.teammate.id = admins.id
conversations.tags.applied_by.id = admins.id
conversations.teammates.admins.id = admins.id
company_attributes
conversations.conversation_rating.teammate.id = company_attributes.admin_id
conversations.tags.applied_by.id = company_attributes.admin_id
conversations.teammates.admins.id = company_attributes.admin_id
contact_attributes
conversations.conversation_rating.teammate.id = contact_attributes.admin_id
conversations.tags.applied_by.id = contact_attributes.admin_id
conversations.teammates.admins.id = contact_attributes.admin_id
contacts
conversations.conversation_rating.teammate.id = contacts.owner_id
conversations.tags.applied_by.id = contacts.owner_id
conversations.teammates.admins.id = contacts.owner_id
conversations.conversation_rating.customer.id = contacts.id
conversations.customers.id = contacts.id
conversations.contacts.id = contacts.id
conversations.tags.id = contacts.tags.data.id
conversation_parts
conversations.conversation_rating.teammate.id = conversation_parts.assigned_to
conversations.tags.applied_by.id = conversation_parts.assigned_to
conversations.teammates.admins.id = conversation_parts.assigned_to
conversations.id = conversation_parts.conversation_id
teams
conversations.conversation_rating.teammate.id = teams.admin_ids
conversations.tags.applied_by.id = teams.admin_ids
conversations.teammates.admins.id = teams.admin_ids
companies
conversations.tags.id = companies.tags.id
tags
conversations.tags.id = tags.id

assignee

OBJECT

email

STRING

id

STRING

name

STRING

type

STRING

contacts

ARRAY

id

STRING

type

STRING

conversation_message

OBJECT

attachments

ARRAY

content_type

STRING

filesize

INTEGER

height

INTEGER

name

STRING

type

STRING

url

STRING

width

INTEGER

author

OBJECT

email

STRING

id

STRING

name

STRING

type

STRING

body

STRING

delivered_as

STRING

id

STRING

subject

STRING

type

STRING

url

STRING

conversation_rating

OBJECT

created_at

DATE-TIME

customer

OBJECT

id

STRING

type

STRING

rating

INTEGER

remark

STRING

teammate

OBJECT

id

INTEGER

type

STRING

created_at

DATE-TIME

customer_first_reply

OBJECT

created_at

DATE-TIME

type

STRING

url

STRING

customers

ARRAY

id

STRING

type

STRING

first_contact_reply

OBJECT

created_at

DATE-TIME

type

STRING

url

STRING

id

STRING

open

BOOLEAN

priority

STRING

read

BOOLEAN

sent_at

DATE-TIME

sla_applied

OBJECT

sla_name

STRING

sla_status

STRING

snoozed_until

DATE-TIME

source

OBJECT

attachments

ARRAY

author

OBJECT

email

STRING

id

STRING

name

STRING

type

STRING

body

STRING

delivered_as

STRING

id

STRING

subject

STRING

type

STRING

url

STRING

state

STRING

statistics

OBJECT

count_assignments

INTEGER

count_conversation_parts

INTEGER

count_reopens

INTEGER

first_admin_reply_at

DATE-TIME

first_assignment_at

DATE-TIME

first_close_at

DATE-TIME

first_contact_reply_at

DATE-TIME

last_admin_reply_at

DATE-TIME

last_assignment_admin_reply_at

DATE-TIME

last_assignment_at

DATE-TIME

last_close_at

DATE-TIME

last_closed_by_id

INTEGER

last_contact_reply_at

DATE-TIME

median_time_to_reply

INTEGER

time_to_admin_reply

INTEGER

time_to_assignment

INTEGER

time_to_first_close

INTEGER

time_to_last_close

INTEGER

type

STRING

tags

ARRAY

applied_at

DATE-TIME

applied_by

OBJECT

id

STRING

type

STRING

id

STRING

name

STRING

type

STRING

teammates

OBJECT

admins

ARRAY

id

STRING

type

STRING

type

STRING

type

STRING

updated_at

DATE-TIME

user

OBJECT

id

STRING

type

STRING

waiting_since

DATE-TIME

segments

The segments table contains information about segments within your Intercom account.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Intercom documentation

segments schema on GitHub

Intercom API method

Join segments with on
companies
segments.id = companies.segments.id

count

INTEGER

created_at

DATE-TIME

id

STRING

name

STRING

type

STRING

updated_at

DATE-TIME

tags

The tags table contains information about tags within your Intercom account.

Replication Method

Full Table

Primary Key

id

Useful links

Intercom documentation

tags schema on GitHub

Intercom API method

Join tags with on
contacts
tags.id = contacts.tags.data.id
conversations
tags.id = conversations.tags.id
companies
tags.id = companies.tags.id

id

STRING

name

STRING

type

STRING

teams

The teams table contains information about teams in your Intercom account.

Replication Method

Full Table

Primary Key

id

Useful links

Intercom documentation

teams schema on GitHub

Intercom API method

Join teams with on
admins
teams.admin_ids = admins.id
teams.id = admins.team_ids
company_attributes
teams.admin_ids = company_attributes.admin_id
contact_attributes
teams.admin_ids = contact_attributes.admin_id
contacts
teams.admin_ids = contacts.owner_id
conversation_parts
teams.admin_ids = conversation_parts.assigned_to
conversations
teams.admin_ids = conversations.conversation_rating.teammate.id
teams.admin_ids = conversations.tags.applied_by.id
teams.admin_ids = conversations.teammates.admins.id

admin_ids

ARRAY

id

STRING

name

STRING

type

STRING


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.