# How to track lead source in Intercom

Track lead source in Intercom with a one-click OAuth connection. Every chat that captures an email gets full marketing attribution, UTMs, and the visitor's pre-chat journey.

Source: https://sourceloop.ai/help/track-lead-source-in-intercom/
Updated: 2026-05-29

---

Intercom is one of the few chat tools where every meaningful conversation passes through the Inbox. The piece that's usually missing is **which marketing channel earned each conversation**, the source data your reps need before they hit reply.

SourceLoop closes that gap with a one-click OAuth connection. Every chat that captures an email lands in the SourceLoop Contacts Hub with first-touch and last-touch source, UTMs, landing page, and the full pre-chat journey.

Two steps, about three minutes. Works on every Intercom plan.

## What SourceLoop captures from Intercom

For every Intercom conversation that surfaces an email or phone number, SourceLoop attaches:

- **First-touch source** (e.g., `google / cpc`, `linkedin / organic`)
- **Last-touch source** of the converting session
- **UTM parameters** from the landing URL (source, medium, campaign, content, term)
- **First-touch landing page** plus the referrer chain
- **Pages browsed** before the chat started
- **Time on site** and **return-visit count**
- **Contact details** from the Intercom contact record (email, name, phone)
- **Device, country, browser** of the converting session

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- A **SourceLoop tracker installed** on every page where the Intercom Messenger appears
- An **Intercom workspace** with the Messenger embedded on your site
- **Admin** access on the Intercom workspace (required to approve the OAuth consent screen)
- **Admin** or **Owner** role in SourceLoop

## Step 1: Connect Intercom via OAuth

1. Sign in to [SourceLoop](https://app.sourceloop.ai/).
2. Open **Setup -> Chat** in the left sidebar.
3. Find the **Intercom** card under **OAuth chat integrations** and click **Connect**.

![SourceLoop Setup Chat page showing the OAuth chat integrations section with HubSpot and Intercom cards, both with Connect buttons](/help/screenshots/connect-hubspot-intercom.png)

4. You'll be redirected to Intercom's OAuth consent screen. Sign in with an admin user, pick the workspace, and click **Authorize access**.

![Intercom OAuth consent screen titled SourceLoop wants to access your workspace, listing People, Companies, Conversations, Teams and teammates, Tags, and Data attributes scopes, with an Authorize access button](/help/screenshots/intercom-auth.png)

5. Intercom redirects you back to SourceLoop. The card flips to **Connected** with the workspace name displayed.

What SourceLoop does in the background, automatically:

- Stores the OAuth access token, encrypted at rest
- Creates a custom attribute on your Intercom contact model called **sourceloop_id**, marked as Messenger-writable so the tracker can populate it without code changes on your site
- Subscribes to the Intercom webhook topics that fire when a visitor identifies (adds email) or starts / replies to a conversation

No further configuration needed. The tracker on your site automatically pushes the visitor's marketing attribution onto their Intercom contact every time the Messenger loads.

> **Why does SourceLoop need to create a custom attribute?**
> Intercom silently drops attribute updates from the Messenger unless the attribute is defined on the contact model AND marked Messenger-writable. The sourceloop_id attribute is what lets the tracker tag each visitor's contact with their SourceLoop identity so the webhook can match the chat to their pre-chat journey. The field stays out of the way and you don't need to surface it in any view.

## Step 2: Verify it's working

Open your site in an **incognito window**, append `?utm_source=test&utm_medium=verify&utm_campaign=intercom-check` to the URL, click the Intercom Messenger, and start a real conversation, sharing an email you can access.

Within seconds of the email landing, the lead appears at the top of the **Contacts Hub** in SourceLoop with the three test UTM values, the converting landing page, and the full pre-chat session timeline.

> **Not seeing the conversation in SourceLoop?**
> Open the page with `?sl_debug=1` appended to surface SourceLoop's event log in the browser console. If pageviews are being captured but the conversation isn't appearing, confirm the connection card on **Setup -> Chat** is showing **Connected** (not **Pending** or **Error**), and check that the Messenger is loading on the same domain the tracker is installed on.

## Where to see Intercom conversations in SourceLoop

### Contacts Hub

Every Intercom conversation that captures an email or phone becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Open a contact for the visitor's complete pre-chat journey, every page they viewed, every ad they clicked, every session they had, useful context if you ever need to reopen the conversation.

![SourceLoop Contacts Hub showing an Intercom conversation lead with the visitor's full pre-chat journey timeline](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

For the channel-level rollup, [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups Intercom conversations by source, medium, and campaign so you can compare which channels actually open meaningful dialogue.

![SourceLoop attribution dashboard with Intercom conversations grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

Build a funnel at [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/) ending in "Intercom conversation". Slice by source, landing page, or device to find the highest-converting paths from first visit to chat opened.

![SourceLoop funnel report ending in an Intercom conversation conversion step](/help/screenshots/sourceloop-funnel.png)

For paid acquisition feeding the chat queue, forward Intercom conversations back to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms train on real qualified conversations rather than vanity clicks. [Connect your Google Ads account](/help/connect-google-ads/) covers the wiring.

Need to revoke access later? See [How to disconnect Intercom from SourceLoop](/help/disconnect-intercom-from-sourceloop/) for the full flow, including what's retained, what to clean up manually in Intercom, and how to request GDPR data removal.

## Frequently Asked Questions

### Do I need a paid Intercom plan?

No. The OAuth connection works on every Intercom plan, including Essential, Advanced, Expert, and the Starter tier. Nothing in the setup requires a paid feature.

### What permissions does SourceLoop need on Intercom?

Read access to contacts and conversations so SourceLoop can pull the conversation thread and the contact's email when a chat fires its webhook, plus the one-time data-attribute write that creates the sourceloop_id field on your contact model. Intercom's OAuth screen shows the full list before you approve.

### How does SourceLoop know which conversation belongs to which visitor?

When a visitor opens the Messenger on a SourceLoop-tracked page, the tracker pushes an attribute called sourceloop_id onto their Intercom contact record. When the visitor submits an email and Intercom sends the webhook, SourceLoop reads sourceloop_id off the contact and stitches the conversation to the visitor's full pre-chat journey. No code changes required on your site beyond installing the tracker.

### Why does SourceLoop create a sourceloop_id custom attribute on my Intercom contact model?

Because Intercom drops attribute updates from the Messenger SDK unless the attribute is defined on the contact model first and marked as Messenger-writable. SourceLoop creates the attribute once during the OAuth connect step and flips the Messenger-writable flag on. No further setup needed; the field stays out of the way and your team doesn't need to touch it.

### What about conversations started via a shared Intercom link, email reply, or off-site DM?

SourceLoop still captures them via the Intercom webhook, but without a pre-chat browsing journey they show up tagged as Direct since there's no UTM trail. The contact details (email, name) still land in the SourceLoop Contacts Hub.

### How fresh is the data?

Conversations appear in SourceLoop within seconds of the visitor submitting an email. The OAuth webhook is processed live as Intercom delivers it, no batch jobs.

### Will my existing Intercom workflows (Series, Custom Bots, Salesforce sync) still fire?

Yes. SourceLoop's OAuth app subscribes to its own webhook events and only reads contact and conversation data. Every other Intercom workflow you have configured continues to fire unchanged.

### How do I disconnect Intercom?

Open Setup -> Chat in SourceLoop, click Disconnect on the Intercom card. The OAuth token is revoked immediately, no further webhooks are processed, and previously captured leads stay in your Contacts Hub. You can reconnect any time with the same OAuth click.
