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:
- Open the app’s Authentication tab.
- Copy the Access Token — this is a personal/test token that does not expire.
- For production, complete the Authorisation flow and use the OAuth access token (also long-lived).
Confirm your region
| Workspace URL | Region | API Base |
|---|---|---|
app.intercom.com | US | https://api.intercom.io |
app.eu.intercom.com | EU | https://api.eu.intercom.io |
app.au.intercom.com | AU | https://api.au.intercom.io |
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
access_token | secret | Yes | Intercom access token. Found in your developer app’s Authentication tab. |
region | select | Yes | Intercom data region (us, eu, or au). |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Intercom under the Marketing Automation category.
- Click Install, and fill in the required fields.
- 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 Event | Intercom Concept | Notes |
|---|---|---|
page | Event via Events API | Sent as page_viewed event on the contact’s timeline. |
Product Viewed | Event | Forwarded with product properties. |
Order Completed | Event with revenue metadata | Mapped to an Intercom event with value, currency metadata. |
identify | Contact create/update | Sent 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:
| Field | Source | Notes |
|---|---|---|
external_id | user_id from datafly.identify() | Your stable customer ID. Becomes Intercom’s external_id for user contacts. |
email | traits.email | Primary identifier for unauthenticated leads. |
phone | traits.phone | E.164 format. |
name | traits.name or first+last | Display name in the inbox. |
Call datafly.identify() once the user is authenticated:
datafly.identify("user-123", {
email: "jane@example.com",
name: "Jane Doe"
});Consent
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
- Trigger a test event from your website.
- In Intercom, navigate to Contacts and search for the test contact by email or external ID.
- Click the contact and check the Events section for Signal-delivered custom events.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid access token | Regenerate the token in Developer Hub > your app > Authentication. |
400 missing external_id or email | No identifier on event | Intercom requires external_id (for users) or email (for leads). Ensure at least one is set. |
| Wrong region | US/EU/AU mismatch | Check your workspace URL and ensure the region config matches. |
| Event quota exceeded | Plan limit | Intercom 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