Intercom → Attio: support that feeds revenue
Support conversations are the single most honest signal your business generates. The problem is they live in Intercom, and your commercial team operates out of Attio. Without a bridge, your CSM finds out a customer is churning when the ticket finally gets escalated - not when the frustration first appeared. We link every Intercom conversation to the right Person and Company in Attio, carry across the tags and priority, and surface support health as a first-class attribute next to MRR and stage. Now your quarterly review shows you which accounts are trending quiet-angry before they churn.
Direction
Intercom → Attio (conversations, tickets, tags)
Stack
Intercom API, Attio API, n8n, Slack (routing)
The what
What this integration actually does
The how
How we build it
- 1
Model a Tickets object in Attio with the fields that actually matter: priority, status, category, first-response time, resolution time, linked Person, linked Company.
- 2
Register Intercom webhooks on conversation.created, conversation.updated, conversation.tag.added, conversation.closed.
- 3
Run the payload through an n8n workflow that normalizes the data, resolves the Person by email, and upserts the Ticket.
- 4
Add bidirectional tag sync for the tags you care about (e.g. "expansion opportunity" in Intercom → marks the Company as expansion-candidate in Attio).
- 5
Build the reports: tickets by account, tickets per ARR dollar, time-to-first-response by tier - right inside Attio.
Under the hood
What lives inside the pipeline
- Conversation body optionally mirrored into Attio as a note (most clients skip this for privacy).
- Assignee mapping between Intercom teammates and Attio users.
- Priority escalation rules - a P1 on a top-20 account Slacks the CSM, not just the support lead.
- Tagging taxonomy defined once, enforced on both sides.
- Weekly digest into Slack with accounts trending red.
Hard-earned lessons
What we learned the hard way
- Intercom's webhook rate is generous but not unlimited - batch where possible.
- Match Intercom contacts by email, not external_id. Teams consolidate identities over time and external_id becomes unreliable.
- Don't try to mirror every conversation field - pick the ten that drive decisions and ignore the rest.
- Closed conversations can still update (reopens, CSAT arrival). Don't treat conversation.closed as terminal.
Case study
MAAT - gym SaaS
Problem
CSMs didn't know which accounts were generating support load. Renewal conversations were happening without the support context that mattered.
Solution
Two workflows shipped in late March: tickets created in Attio from every Intercom conversation, plus a reporting layer on top. Ticketing reports now drive the QBR deck.
Outcome
Support volume is visible next to MRR. The team spotted two at-risk accounts in the first month that would have otherwise slipped.
FAQ
Questions we get
No - Intercom is still the system of record for support operations. We surface the business-facing signal in Attio so commercial decisions can factor it in.
Fully supported. Fin-handled tickets show up in Attio with a "resolved by AI" flag - useful for separating human-needed volume.
Yes. We namespace the Tickets object so workspace A and workspace B don't collide.
Want this running on your Attio?
Book a free 30-min call. We'll map your use case to what we've already shipped and tell you whether this fits - honestly.
Book a 30-min call