Intercom

Intercom is a customer messaging platform combining live chat, helpdesk, product tours, and lifecycle email for support and engagement.

⚠️

This integration is currently in alpha. Configuration and behaviour may change.

Prerequisites

Complete these steps in Intercom before configuring Signal.

Access your Intercom workspace

Log in to app.intercom.com.

Create an access token

Navigate to Settings > Developers > Developer Hub, then click New app. Once created:

  1. Open the app’s Authentication tab.
  2. Copy the Access Token — this is a personal/test token that does not expire.
  3. For production, complete the Authorisation flow and use the OAuth access token (also long-lived).

Confirm your region

Workspace URLRegionAPI Base
app.intercom.comUShttps://api.intercom.io
app.eu.intercom.comEUhttps://api.eu.intercom.io
app.au.intercom.comAUhttps://api.au.intercom.io

Configuration

FieldTypeRequiredDescription
access_tokensecretYesIntercom access token. Found in your developer app’s Authentication tab.
regionselectYesIntercom data region (us, eu, or au).

Signal Setup

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find Intercom under the Marketing Automation category.
  4. Click Install, and fill in the required fields.
  5. Click Install Integration.

API Setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/intercom/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Intercom",
    "variant": "default",
    "config": {
      "access_token": "dG9rOmxxxxxxxxxxxxxxxxxxxxxx",
      "region": "us"
    },
    "delivery_mode": "server_side"
  }'

Event Mapping

Datafly EventIntercom ConceptNotes
pageEvent via Events APISent as page_viewed event on the contact’s timeline.
Product ViewedEventForwarded with product properties.
Order CompletedEvent with revenue metadataMapped to an Intercom event with value, currency metadata.
identifyContact create/updateSent via POST /contacts or PUT /contacts/{id}.

The Intercom API version header is set to 2.11 by Signal.

Identity

Intercom contacts can be either users (role: user) or leads (role: lead). Signal forwards:

FieldSourceNotes
external_iduser_id from datafly.identify()Your stable customer ID. Becomes Intercom’s external_id for user contacts.
emailtraits.emailPrimary identifier for unauthenticated leads.
phonetraits.phoneE.164 format.
nametraits.name or first+lastDisplay name in the inbox.

Call datafly.identify() once the user is authenticated:

datafly.identify("user-123", {
  email: "jane@example.com",
  name: "Jane Doe"
});

Intercom events should be sent under the functional consent category by default (Intercom is typically used for support, not pure marketing). For marketing-style outbound campaigns, use the marketing category.

Verify it’s working

  1. Trigger a test event from your website.
  2. In Intercom, navigate to Contacts and search for the test contact by email or external ID.
  3. Click the contact and check the Events section for Signal-delivered custom events.
  4. In Signal, check Live Events to confirm delivery with a 200 response status.

Troubleshooting

SymptomPossible CauseResolution
401 UnauthorizedInvalid access tokenRegenerate the token in Developer Hub > your app > Authentication.
400 missing external_id or emailNo identifier on eventIntercom requires external_id (for users) or email (for leads). Ensure at least one is set.
Wrong regionUS/EU/AU mismatchCheck your workspace URL and ensure the region config matches.
Event quota exceededPlan limitIntercom enforces per-plan event limits. Reduce volume or upgrade the plan.

Visit Intercom API documentation for full reference.

See also

  • HubSpot — CRM with messaging
  • Customer.io — behavioural messaging alternative
  • Slack — internal team notifications