Why Can't Intercom's Reporting Filter or Group Conversation Data by Company?
It's not that Intercom has no way to do this. It's that the report you probably tried first, the built-in SLA report, is one of the few report types that genuinely can't filter or group by company, while the feature that can (Custom Reports) is gated to a higher plan, and even there "company" is attached, by default, to the contact who sent the message rather than to the conversation itself. That mismatch is why a support lead can stare at a filter labeled "Company" and still not get the account-level breakdown they're picturing.
A thread on Intercom's own community forum lays out the first half of the problem exactly: someone asked whether SLA performance could be broken down by company, and got back: "Turns out a 'Company' filter doesn't work in any of the SLA reports..." No workaround inside the SLA report itself. That's a canned report, one of the pre-built templates Intercom ships, and canned reports carry whatever filter set Intercom built into them, full stop.
The two reports that behave differently
Intercom's reporting isn't one system with one set of filters. There's a set of pre-built reports (SLA, CSAT, response time) that come with a fixed filter list, and there's Custom Reports, a separate builder where you choose your own metrics and breakdowns. Per Intercom's guide to creating a custom report, Custom Reports do support company as both a filter and a grouping dimension, and there are two versions of it:
- Company, which reflects the contact's company at the time the conversation started
- Company (conversation), a single company set directly on the conversation via the inbox side panel or the API
Both support filtering and breakdown. So if the goal is "show me tagged conversations grouped by company," Custom Reports can technically build that chart. The SLA report you tried first just isn't the tool for it, and nothing in the SLA interface tells you a different report type exists that would work.
The catch is plan tier. Per Intercom's tickets reporting article, custom reports and their ticket-level attributes are available on the Advanced or Expert plan only. A team on a lower plan doesn't have a company-filter option hiding somewhere in settings. It isn't available to them yet, not until they upgrade.
Why "company" doesn't mean what you'd expect
Say a team clears the plan hurdle and builds the custom report. The next surprise is what Intercom's own reporting FAQ admits directly: "Company objects are separate from User objects, so it's not possible to exclude conversations from a report directly by Company name... reports may still show conversations linked to multiple companies, because those company relationships are tied to the users themselves."
In practice, that means a conversation's company in a report is only as reliable as whichever contact happens to be attached to it. Two people from the same account who each open their own conversation about the same issue show up as two separate company-linked rows unless a teammate has manually set "Company (conversation)" on both. Nothing in Intercom stitches them together on its own. The filter works exactly as documented; it just isn't the account rollup most people are picturing when they read the word "company" on a report screen.
What this looks like on an actual account
Halbrook Systems, one of the accounts behind the figure above, had two contacts open separate conversations about the same data-sync bug, three days apart. Neither conversation was tagged as a duplicate of the other. In the weekly support review, the question was simple:
Support lead: Is Halbrook having a bad month, or am I just noticing two tickets that landed close together? Can we pull SLA response time filtered to their account?
The SLA report had no company filter at all, matching the exact gap the community thread flagged. Custom Reports did have one, since the team's plan was Advanced, so the next step was building a first-response-time report with a Company filter set to Halbrook Systems.
The report ran, but it only picked up one of the two conversations. The other contact's profile had never had a company attribute set, so that conversation wasn't linked to Halbrook at all inside Intercom's data, even though the company name was right there in the person's email signature. Answering the actual question, whether one account was having a bad month, needed a manual cross-check against inbox search first.
The limit built into a per-contact company field
None of this is a bug. A per-contact company field, paired with a report builder gated by plan tier, will always produce correct filters applied to data that's only as complete as whoever remembered to fill in the company attribute on every contact. That's a fine tradeoff for a team asking this question once during a quarterly review, and a much worse one for a team that wants SLA and tag counts broken down by account as a running view, kept current without a teammate manually setting "Company (conversation)" on every incoming message from a new contact.
Past that point, Modem resolves the company at ingestion instead of leaving it to whoever tags the contact. Modem's Intercom integration reads conversations, replies, and CSAT the same way the native app does, but it matches every message to a company from the sender's domain the moment it arrives, so two contacts from the same account land as one account's activity without anyone touching a company field by hand. Response-time and tag counts stay broken down by account continuously, instead of as a one-off report someone has to remember to rebuild.
The wider mechanism, tying conversations to a stable company record instead of a per-message attribute, is the same idea covered in what a customer context graph is. Modem is what we build here, which is worth naming plainly: a team whose actual volume is three conversations a month needing this kind of breakdown, not three hundred, can live with checking inbox search by hand and skip adding a tool for it.
Set up the Custom Reports fix now, not after the next miss
If a company breakdown matters and the plan already includes Custom Reports, build one today filtered on "Company (conversation)" rather than the contact-level "Company" field, and make setting that field part of how the team replies to any conversation from a named account. It won't fix a retroactive question about last month, but it stops the next one from depending on whether a contact's profile happened to have a company attribute filled in. For teams still tagging feature requests as part of this workflow, how to track feature requests in Intercom covers the tagging half of the same reporting gap.
