Skip to contentSkip to navigationSkip to topbar
On this page
Looking for more inspiration?Visit the
(information)
You're in the right place! Segment documentation is now part of Twilio Docs. The content you are used to is still here—just in a new home with a refreshed look.

Intercom Web (Actions) Destination


Destination Info
  • Accepts Page, Alias, Group, Identify and Track calls.
  • Refer to it as Intercom Web (Actions) in the Integrations object
  • This destination is not compatible with Destination Insert Functions.
(information)

Additional versions of this destination are available

This page is about the Intercom Web (Actions) Destination. See below for information about other versions of the Intercom destination:

Intercom is a customer communications platform that shows you who is using your product. Intercom allows you to personally communicate with your users with targeted content, behavior-driven messages, and conversational support.

When you use the Intercom Web (Actions) destination, Segment loads the Intercom JavaScript library(link takes you to an external page) for you. The Intercom library enables you to track your user's events on your website and interact with the Intercom messenger window.


Benefits of Intercom Web Mode (Actions) vs Intercom Classic

benefits-of-intercom-web-mode-actions-vs-intercom-classic page anchor

Intercom Web (Actions) provides the following benefits over the classic Intercom destination:

  • Fewer settings. Data mapping for actions-based destinations happens during configuration, which eliminates the need for most settings.
  • Clearer mapping of data. Actions-based destinations enable you to define the mapping between the data Segment receives from your source, and the data Segment sends to the destination.
  • Granular control over data sent. You can customize the conditions under which the events are sent to Intercom.
  • Selectively shows the Intercom chat widget.

Intercom's chat widget

intercoms-chat-widget page anchor

The Intercom Cloud Mode (Actions) destination doesn't have access to Intercom's chat widget. Only the Intercom Web (Actions) destination has access to this.

If you're using the Analytics.js source, use the Intercom Web Mode (Actions) destination which sends data directly to Intercom from the client-side by loading the Intercom SDK directly onto your website.

However, Intercom Cloud Mode (Actions) sends data to Segment, after which Segment forwards the data to Intercom. This allows Segment users to send data to Intercom from sources that are incompatible with their SDK.

When you configure the Segment Intercom destination in device-mode, you'll have access to Intercom's chat widget without loading Intercom separately outside of Segment.

To access the Intercom Messaging Box, you'll need to configure and connect the Intercom Web (Actions) destination to your Analytics.js source.

(success)

Success!

Visit the Destination Overview docs to learn the difference between cloud and device modes.


  1. From the Segment web app, navigate to Connections > Catalog.
  2. Search for Intercom Web (Actions) in the Destinations Catalog, and select the destination.
  3. Click Configure Intercom Web (Actions).
  4. Select the web source that will send data to Intercom Web (Actions) and follow the steps to name your destination. The web source chosen must use Analytics.js 2.0.
  5. On the Settings tab, input your Intercom App ID and other destination settings.
  6. Follow the steps in the Destinations Actions documentation on Customizing mappings.
  7. Enable the destination and configured mappings.
(information)

Regional Data Hosting in the EU and Australia

For Regional Data Hosting in the EU and Australia, you'll need an Intercom plan that supports regional data hosting(link takes you to an external page).

(information)

Info

Segment doesn't support the creation of Leads for Intercom Web. Segment recommends using Intercom Cloud Mode to support leads creation.


Property nameTypeRequiredDescription
Custom Inbox Button Selectorstring

Optional

By default, Intercom will inject their own inbox button onto the page, but you can choose to use your own custom button instead by providing a CSS selector, e.g. #my-button. You must have the "Show the Intercom Inbox" setting enabled for this to work. The default value is #IntercomDefaultWidget.


Regional Data Hostingselect

Optional

The regional API to use for processing the data


App IDstring
required

The app_id of your Intercom app which will indicate where to store any data.


Rich Link Propertiesarray

Optional

A list of rich link property keys.


Intercom Web (Actions) has the following presets

Preset NameTriggerDefault Action
Identify UserEvent type = "identify", Event type = "page"Identify User
Identify CompanyEvent type = "group"Identify Company
Track EventEvent type = "track"Track Event

Build your own Mappings. Combine supported triggers with the following Intercom Web-supported actions:

(information)

Mapping limits per destination

Individual destination instances have support a maximum of 50 mappings.

Submit an event to Intercom.

Track Event is a Web action. The default Trigger is type = "track"

Property nameTypeRequiredDescription
Event NameSTRING
required

The name of the event.


RevenueNUMBER

Optional

The amount associated with a purchase. Segment will multiply by 100 as Intercom requires the amount in cents.


CurrencySTRING

Optional

The currency of the purchase amount. Segment will default to USD if revenue is provided without a currency.


Event MetadataOBJECT

Optional

Optional metadata describing the event.

Create or update a company in Intercom.

Identify Company is a Web action. The default Trigger is type = "group"

Property nameTypeRequiredDescription
CompanyOBJECT
required

The user's company.


Hide Default LauncherBOOLEAN

Optional

Selectively show the chat widget. As per Intercom docs(link takes you to an external page), you want to first hide the Messenger for all users inside the Intercom UI using Messenger settings. Then think about how you want to programmatically decide which users you would like to show the widget to.

Create or update a user in Intercom.

Identify User is a Web action. The default Trigger is type = "identify" or type = "page"

Property nameTypeRequiredDescription
User IDSTRING

Optional

A unique identifier for the user.


Custom AttributesOBJECT

Optional

The user's custom attributes.


NameSTRING

Optional

The user's name.


Phone NumberSTRING

Optional

The user's phone number.


Unsubscribed From EmailsBOOLEAN

Optional

The user's email unsubscribe status.


Language OverrideSTRING

Optional

The user's messenger language (instead of relying on browser language settings).


Email AddressSTRING

Optional

The user's email address.


User Creation TimeDATETIME

Optional

The time the user was created in your system.


AvatarSTRING

Optional

The URL for the user's avatar/profile image.


User HashSTRING

Optional

The user hash used for identity verification. See Intercom docs(link takes you to an external page) for more information on how to set this field.


Intercom User JWTSTRING

Optional

The intercom user JWT is used to secure your messenger for your users. See Intercom docs(link takes you to an external page) for more information on how to set this field.


CompanyOBJECT

Optional

The user's company.


CompaniesOBJECT

Optional

The array of companies the user is associated to.


Hide Default LauncherBOOLEAN

Optional

Selectively show the chat widget. As per Intercom docs(link takes you to an external page), you want to first hide the Messenger for all users inside the Intercom UI using Messenger settings. Then think about how you want to programmatically decide which users you would like to show the widget to.


Requests to Intercom return a 404 response

requests-to-intercom-return-a-404-response page anchor

If you are seeing 404 responses in your browser's network tab, you've likely encountered one of two issues:

  • You set the wrong App ID on the Intercom Actions (Web) destination settings page.
  • You set the wrong Regional Data Hosting value on the Intercom Actions (Web) destination settings page. Intercom gates regional endpoints by plan level, so you may not have access to EU data hosting.

Intercom does not support Reverse ETL event batching

intercom-does-not-support-reverse-etl-event-batching page anchor

The Intercom (Web) Actions destination does not support the bulk contacts endpoint, and therefore is unable to support batching events in Reverse ETL.

Why are my Identify calls not updating or creating Intercom profiles, or not showing users as leads or visitors?

why-are-my-identify-calls-not-updating-or-creating-intercom-profiles-or-not-showing-users-as-leads-or-visitors page anchor

Intercom requires requests to include user data/traits beyond email or user_hash to update or create profiles and change user status from leads/visitors. Without additional user data/traits, Intercom assumes no changes were made to a user's data and does not send a "ping" request.

In the following example, which only includes an email and user_hash, Intercom would not send a "ping" request and update the status of this user:

1
analytics.identify("123");
2
3
analytics.identify("123", { email: "example@domain.com" });
4
5
analytics.identify("123",{email: "example@domain.com"}, {
6
integrations: {
7
Intercom: {
8
user_hash: "81b65b9abea0444437a5d92620f03acc33f04fabbc32da1e047260024f80566a"
9
}
10
}})

However, in the following example that also contains the name trait, Intercom sends a "ping" request and updates the status of this user:

1
analytics.identify("123", {
2
email: "example@domain.com",
3
name: "John Doe"
4
}, {
5
integrations: { Intercom: { user_hash: "hash" } }
6
});

When sending calls to Intercom, always include a trait, likename. If you don't have a trait to send with Identify calls, map Segment's timestamp field to Intercom's last_request_at field.