Case Study · Customer Engagement

Turning a broken Intercom rollout into two root causes and a fix list.

Revenue Institute needed Intercom live across its sales platform — user creation, segmentation, live chat, and product demos — but chat and demos weren't working and the team didn't know why. I audited the Segment-to-Intercom pipeline against all four acceptance criteria and traced the failures to their source.

Role Led the Intercom integration audit — traced identify-call, identity-verification, and chat/demo failures across the Segment-to-Intercom pipeline

2013-2016 Intercom Engagement Platform Segment Cloud + Web destinations 4 acceptance criteria audited Mixpanel cross-checked

Sales needs to know who signed up — and start talking to them

Revenue Institute sells sales products to sales professionals, and managers wanted Intercom to surface new signups, segment them, and open live chat and product demo conversations automatically.

IDENTIFY

Every signup should land in Intercom

New users on Revenue Institute needed an Intercom record the moment they signed up, so sales had a single source of truth on who to engage.

No Intercom record on signup = sales has no lead to act on
SEGMENT

Managers need to slice users by behavior

Sales managers wanted to segment users on event or property criteria so they could start the right sales conversation at the right moment.

No usable segments = can't target the right conversation
ENGAGE

Live chat and demos drive conversion

Logged-in users were expected to see a working live chat widget and product demo tour as core conversion touchpoints.

Chat widget not rendering = a conversion touchpoint goes unused

What the audit found broken underneath

Three separate failures — partial user sync, a rejected API call, and missing company data — were all blocking the same downstream features.

IDENTIFY CALLS

Users only synced on first signup

Intercom user creation worked on the signup journey, but broke on page refresh and on subsequent logins — identify calls weren't firing consistently.

Refresh and login don't sync = most sessions invisible to Intercom
403 ERROR

Identity verification was blocking events

Intercom's identity verification was enabled but the user_hash wasn't being passed correctly, and the domain wasn't allowlisted — producing 403 Forbidden errors on event calls.

Identity verification misconfigured = every event call gets rejected
COMPANY_ID

Chat and product tour need company data

Live chat and the product tour both required company and company_id from identify calls post-login — without them, Intercom rejected events with "company_id cannot be blank."

No company data passed = chat and product tour can't render

Diagnosing the pipeline from signup to chat widget

Each fix traced one acceptance criterion back to its Segment configuration, isolating exactly where the data dropped.

1
Audit user creation across the lifecycle signup → refresh → login

Tested identify calls across signup, page refresh, and login, confirming signup worked but refresh and login did not yet create or update Intercom users.Intercom · Identify calls

2
Enable and verify segmentation events

Reviewed Segment's Intercom mappings — Auth, Identify, Account Email Verified, Auth Login — and confirmed all event types were enabled so managers could segment users on event or property criteria.Segment · Mappings

3
Trace the chat widget's 403 and company_id errors

Identified that the chat widget needed page and identify calls with a valid user_hash, an allowlisted domain, and non-blank company/company_id fields to render and stay enabled.Identity verification · company_id

4
Reconcile destinations and cross-check user counts

Confirmed one Segment destination (cloud or web) is sufficient per event, and that unique email counts in Mixpanel and Intercom should match once the system stabilizes in production.Segment destinations · Mixpanel

Audit turned four open questions into a fix list

4
Acceptance criteria audited
Identify, segment, chat, demo
1/3
User-sync flows working
Signup only — refresh & login open
4
Mappings enabled
All event types live in Segment
2
Root causes isolated
403 user_hash & blank company_id

From four open questions to two root causes and a fix list

⚡

A reusable Intercom diagnostics playbook

The same checklist — identify calls on every lifecycle event, user_hash on identity verification, domain allowlisting, and company_id population — applies to any future Segment-to-Intercom rollout.

↻

Identify calls as the foundation

Consistent identify calls on signup, refresh, and login are the prerequisite for user sync, segmentation, chat, and product tours alike.

⊕

One destination is enough

Cloud or web mappings alone are sufficient to forward events — running both isn't required for event setup.

Let's talk

Tackling something like this?

Tell me your biggest data or AI bottleneck and I'll send you how I'd approach it — the same way I worked this problem. No résumé dump, no pitch. Just a useful conversation.

Start the conversation →