Intercom

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

Why route Intercom through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Intercom even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • One consent decision governs every destination. Intercom is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

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 (Developer Hub > your app > Authentication). Sent as Authorization: Bearer <token>.
api_hoststringYesYour region’s API host: api.intercom.io (US), api.eu.intercom.io (EU) or api.au.intercom.io (AU).
intercom_versionstringYesThe Intercom-Version header, for example 2.14.
app_idstringNoOnly for loading the Intercom Messenger in the browser; server-side events do not use it.

Signal Setup

  1. Navigate to Integrations in the sidebar and open the Integration Library tab.
  2. Find Intercom, click Install and fill in the fields above.
  3. Choose a preset (Default, SaaS or E-commerce) and click Install Integration.

Event Mapping

Signal sends custom events to the Data Events API (POST https://{api_host}/events). Each event goes to the contact matched by user_id or email; Intercom answers 404 for a contact it does not know (the event is not retried). Events with neither identifier are dropped.

Signal eventIntercom event_nameMetadataPresets
sign_upsigned_upsignup_method, planall
loginlogged_inlogin_methodall
generate_leadleadlead_type, priceall
purchaseplaced_orderorder_number, priceDefault, E-commerce
refundrefunded_orderorder_number, priceE-commerce
trial_startedtrial_startedplanSaaS
subscription_startedsubscription_startedplan, priceSaaS
subscription_cancelledsubscription_cancelledplanSaaS

price uses Intercom’s monetary type: {"amount": <minor units>, "currency": "gbp"}. created_at is the event time in UNIX seconds. Intercom keeps at most 10 metadata keys per event.

{
  "event_name": "placed_order",
  "created_at": 1758500000,
  "user_id": "crm-user-7",
  "email": "jane@example.com",
  "metadata": { "order_number": "ORD-001", "price": { "amount": 12999, "currency": "gbp" } }
}

Identity

FieldSourceNotes
user_iduser_id from datafly.identify()Your stable customer ID.
emailidentify trait email (else properties.email)Trimmed and lower-cased. Sent in clear: Intercom matches contacts by email and accepts no hash.

No phone, name or address is sent. Contacts are created and updated by the Intercom Messenger or your own Contacts API integration; this destination only records events.

Intercom events are usually sent under the functional consent category (support and product messaging). Use marketing if you use them for marketing campaigns.

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.
401 with a valid token on an integration created before 0.6.0Older delivery sent Bearer Bearer <token>Fixed in the delivery spec; no action needed after upgrading Signal.
404 for every event, or wrong regionThe contact is unknown, or api_host does not match your workspace regionCheck the workspace URL (app.eu.intercom.com is EU) and set api_host to match.
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