This integration is powered by Singer's Intercom tap and certified by Stitch. Check out and contribute to the repo on GitHub.
For support, contact Stitch support.
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 plan |
Standard |
API availability |
Not available |
Singer GitHub repository | |||
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
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Intercom icon.
-
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:
-
Advanced Scheduling using Cron (Advanced or Premium plans only)
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.
- If you aren’t already logged into Intercom, you’ll be prompted to do so.
- Next, a screen requesting access to Intercom will display. Note: Stitch will only ever read your data.
- Click Connect.
- After the authorization process successfully completes, you’ll be redirected back to Stitch.
- 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:
-
Individual tables and columns
-
All tables and columns
Click the tabs to view instructions for each selection method.
- In the integration’s Tables to Replicate tab, locate a table you want to replicate.
-
To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.
-
To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.
- Repeat this process for all the tables and columns you want to replicate.
- When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
- Click into the integration from the Stitch Dashboard page.
-
Click the Tables to Replicate tab.
- In the list of tables, click the box next to the Table Names column.
-
In the menu that displays, click Track all Tables and Fields:
- 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.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
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
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
admins
The admins
table lists info about the admins in your Intercom account. An admin is a user, or teammate, in your Intercom account.
Full Table |
|
Primary Key |
id |
Useful links |
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
|
|
away_mode_enabled BOOLEAN |
|
away_mode_reassign BOOLEAN |
|
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.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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
|
|||
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.
Full Table |
|
Primary Key |
name |
Useful links |
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.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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.
Full Table |
|
Primary Key |
name |
Useful links |
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.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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
|
||||||||
created_at DATE-TIME |
||||||||
custom_attributes OBJECT |
||||||||
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
|
||||||||
marked_email_as_spam BOOLEAN |
||||||||
name STRING |
||||||||
notes OBJECT
|
||||||||
os STRING |
||||||||
owner_id INTEGER |
||||||||
phone STRING |
||||||||
role STRING |
||||||||
signed_up_at DATE-TIME |
||||||||
social_profiles OBJECT |
||||||||
tags OBJECT |
||||||||
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.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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
|
|||||||
author OBJECT |
|||||||
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.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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
|
|||||||||||||||||||
contacts ARRAY
|
|||||||||||||||||||
conversation_message OBJECT
|
|||||||||||||||||||
conversation_rating OBJECT
|
|||||||||||||||||||
created_at DATE-TIME |
|||||||||||||||||||
customer_first_reply OBJECT
|
|||||||||||||||||||
customers
ARRAY
|
|||||||||||||||||||
first_contact_reply OBJECT
|
|||||||||||||||||||
id STRING |
|||||||||||||||||||
open BOOLEAN |
|||||||||||||||||||
priority STRING |
|||||||||||||||||||
read BOOLEAN |
|||||||||||||||||||
sent_at DATE-TIME |
|||||||||||||||||||
sla_applied OBJECT
|
|||||||||||||||||||
snoozed_until DATE-TIME |
|||||||||||||||||||
source OBJECT
|
|||||||||||||||||||
state STRING |
|||||||||||||||||||
statistics OBJECT
|
|||||||||||||||||||
tags ARRAY |
|||||||||||||||||||
teammates OBJECT
|
|||||||||||||||||||
type STRING |
|||||||||||||||||||
updated_at DATE-TIME |
|||||||||||||||||||
user OBJECT
|
|||||||||||||||||||
waiting_since DATE-TIME |
segments
The segments
table contains information about segments within your Intercom account.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
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.
Full Table |
|
Primary Key |
id |
Useful links |
teams
The teams
table contains information about teams in your Intercom account.
Full Table |
|
Primary Key |
id |
Useful links |
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 |
Related | Troubleshooting |
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.
data
ARRAY
name
STRING
type
STRING
url
STRING
type
STRING