Skip to content
Product
PlatformPricingDimensionsIntegrationsSecurityCompare
Solutions · by use case
Customer, guest and fan experienceProduct feedback and prioritizationRevenue, churn and retentionAgenciesContact center performanceAI agent and chatbot analyticsMulti-location performanceReviews and competitive benchmarking
Solutions · by industry
Hotels and hospitalityRestaurants and food serviceFitness and leisureRetail and e-commerceSports and live entertainmentInsuranceBanking and financial servicesSoftware and SaaSAutomotiveConsumer products and CPGContact centers and BPOsPublic sector and nonprofitReal estateGaming and betting
Learn
Artifacts GalleryCustomer storiesResearchBlogThought leadershipLessons Log in Start now
Blog

How to Export Intercom Conversations and Find Top Contact Reasons

Intercom's Dataset export CSV leaves out what customers wrote. Here is which export to use, how to tag contact reasons consistently, and how to rank them by cost as well as volume.

To find the top contact reasons in Intercom, export the conversations with their text (the Conversations API, the bulk export in the Inbox, or a connected tool), give every conversation one primary reason from a fixed list, and count. The CSV in Reports > Dataset export is useful for the fields around each conversation, but Intercom says it does not include the message content, so on its own it cannot tell you why customers wrote in.

The rest of this post covers which export to use, which fields to keep, how to tag reasons so the counts mean the same thing every month, and what to join them to once you have them.

Step 1: pick the export that has what you need

Intercom documents several ways to get conversations out, and they split into two kinds: exports of reporting fields (who, when, which channel, which tags, what rating) and exports of the conversation itself. You need both, joined on the conversation ID.

From Intercom's help center

Only some Intercom exports include what the customer wrote

The export methods Intercom documents for conversations, and what each one gives you.

MethodMessage text?Limits Intercom states
Dataset export (CSV)
Reports > Dataset export
No. Reporting metadata onlyInstant up to 10,000 rows, larger files emailed; can be scheduled; data for up to two years
Saved View export (CSV)
Inbox > Views
No. The View's visible columns, with a link to each conversationInstant up to 25,000 cells; refused above 100,000 rows; manual only
Bulk export (PDF or text)
Inbox, bulk actions
Yes, full transcript without internal notes200 to 300 conversations per operation
Conversations API
API
Yes, full content by conversation IDExport API: 90 days per request, no volume limit
Amazon S3 export (JSON)
Settings > Data > Imports & exports
The article says both yes and no; check a fileHistorical up to two years, or hourly or daily
Source: Intercom, Export your conversations data, read 2026-10-26.

Two details from that article matter for this job. The Dataset export needs two permissions, "Can access Chart drill-in" and "Can export CSV", so check them before you start. And the S3 section contradicts itself: one note says S3 data "will not contain a transcript", another says the JSON files provide "detailed message content and attachments". Open one file before you build anything on it.

For a one-off look at a few hundred recent conversations, the bulk export from the Inbox is enough. For a monthly count you will rerun, use the API, a scheduled pull or a connected tool, so next month's file has the same shape as this month's.

Step 2: keep the fields that let you rank and join

Intercom groups its reporting fields into datasets, including Conversations (ID, state, channel, assignee), Conversation Rating (the rating, the remark and whether a teammate, Fin or a chatbot was rated), Conversation actions (assignments, closures, replies) and Teammate handling (how long teammates spent on each conversation). For contact reasons, keep these:

  • Conversation ID and created time. The ID joins the metadata to the transcript; the time lets you trend reasons by week.

  • Who started it. Intercom's Conversations dataset has "First contacted by" (customer, teammate, Fin AI Agent or workflow) and "Has user reply". Drop outbound messages the customer never answered, or they will inflate whatever reason your outbound campaign was about.

  • Channel, tags and rating. Existing tags are a useful check on your new labels, but they were added by many people over many months, so do not count them as the reason.

  • Whether Fin or a person handled it, and for how long. This is what turns a volume ranking into a cost ranking.

  • A customer or company ID that matches your other systems. Your own external user ID or a company ID that matches the CRM. Do not join on email address; people write in from several.

Step 3: tag every conversation from a fixed list

A common reason contact-reason counts drift is that the list is not written down. One person files "can't log in after upgrading" under billing, another under login, and next quarter the login number jumps for no real reason. Fix the list first:

  1. Read 100 to 200 conversations before writing any reasons. Write down what each customer wanted in a few words, then group the notes. Aim for 10 to 25 reasons.

  2. Give each reason a definition, an example and a "not this one when" line. The last part settles the borderline cases before they come up.

  3. Tag one primary reason per conversation, plus secondary reasons if needed. The primary reason is what the customer first asked for. Counting only the primary keeps the shares adding to 100%.

  4. Keep an Other bucket and watch its size. If it grows past about one conversation in twenty, read it and add a reason.

  5. Test the list before the full run. Have two people tag the same 50 conversations without talking. Where they disagree, the definition is unclear; fix it and repeat.

A starting list

Write the reasons down with a definition and an example before anyone tags

A contact-reason list for a subscription business. Rename and replace to fit yours.

ReasonUse it when the customerNot this one when
Billing and refundsquestions a charge, asks for a refund or reports a failed paymentthey want to change plan (use Plan change or cancel)
Plan change or cancelwants to upgrade, downgrade, pause or cancelthe trigger is a wrong charge (use Billing and refunds as primary)
Password and logincannot sign in, reset a password or pass two-factorthey are signed in and something fails (use Bug or error)
Bug or errorreports something that should work and does notthey do not know how to do it (use How-to question)
How-to questionasks how to do something the product already doesthe feature does not exist (use Feature request)
Order statusasks where an order, shipment or delivery isthe order arrived wrong (use Wrong or damaged order)
Otherfits none of the above; write a few words on whymore than about 5% of conversations land here, which means the list needs a new reason
Illustrative list written for this post. The "not this one when" column is what keeps two people, or a model, tagging the same way.

A language model can do the tagging at full volume, which is how we do it, as long as it gets the same list, definitions and examples every time and is only allowed to answer with a reason from the list. Then check it the same way you checked the people: compare its labels with a hand-tagged sample. Our post on analyzing Zendesk tickets with AI shows a fixed schema and the checks we run on it; the method is the same for Intercom.

Step 4: count, then rank more than one way

With a reason on every conversation, the count is a group-by. The useful part is ranking it more than one way, because the reason customers raise most is often not the one that costs the most. In the illustrative example below, password and login is the largest reason by volume, at 24.8% of conversations, but bugs and billing each take about a quarter of the team's handling hours.

Illustrative example

Password and login is the largest reason by volume; bugs and billing take the most hours

Six contact reasons from 5,000 made-up conversations, ranked two ways. Left: share of conversations. Right: share of teammate handling hours.

By share of conversationsBy share of handling hoursPassword and login24.8% of conversationsHow-to question21.2%Order status19.2%Billing and refunds16.4%Bug or error10.8%Plan change or cancel7.6%Bug or error25.1% of hoursBilling and refunds24.2%How-to question15.7%Plan change or cancel14.4%Password and login10.5%Order status10.1%By share ofconversationsBy share ofhandling hoursPassword andlogin24.8% ofconversationsHow-to question21.2%Order status19.2%Billing andrefunds16.4%Bug or error10.8%Plan change orcancel7.6%Bug or error25.1% of hoursBilling andrefunds24.2%How-to question15.7%Plan change orcancel14.4%Password andlogin10.5%Order status10.1%
Illustrative numbers, not customer data: hours are conversations times a handling time per reason, from 4 minutes for password and login to 22 for a bug.

Rank each reason on at least three things:

  • Volume and trend. Share of conversations this month, and the change from last month. A small reason that doubles is often a release or a policy change.

  • Cost. Conversations times handling time, from the Teammate handling dataset. This is the list to automate from.

  • Outcome. The share of each reason that was reopened, rated badly, or passed from Fin to a person. This is the list to fix first. For the conversations Fin closed, check that they were resolved before you trust the count; we explain how in how to check whether your AI agent really resolved conversations.

Product loop

Ask for the ranking in plain English

The agent writes the query, runs it on the tagged conversations and answers with a chart.

ask
Dimension Labs, recorded in the product.

Step 5: join reasons to what the business tracks

Contact reasons become more useful once they sit next to account data. Join on the customer or company ID and you can answer questions the inbox cannot:

  • Plan, tier and revenue from the CRM or billing system. Do your largest accounts write in for different reasons than everyone else? Our Intercom connector brings customer custom attributes such as plan or tier across, so a question like "compare top contact reasons for VIP and non-VIP customers" works without another export.

  • Renewals and cancellations. Which reasons show up in the months before an account leaves? Our churn risk report walks through that join.

  • Orders, refunds and product usage. A spike in "order status" contacts that lines up with one carrier, or "how-to" contacts that cluster after a feature launch, points to the team that can fix it.

Product loop

Conversations joined to revenue

Tagged conversations blended with business records, so each reason can be read against revenue and retention.

blend
Dimension Labs, recorded in the product.

FAQ

Can I get contact reasons from Intercom's CSV export alone?

Only if your team tags every conversation reliably, because Intercom says the Dataset export CSV contains reporting metadata and not the message content. To read why customers wrote in, you need the transcripts from the API, the bulk export or a connected tool.

How many contact reasons should I have?

Enough that Other stays small and few enough that people can remember them; 10 to 25 is a workable range. Fewer than that and the categories are too broad to act on; many more and tagging stops being consistent.

How far back can I export?

Intercom's article says data is available for up to two years for both CSV and JSON exports.

Dimension Labs connects to Intercom in one click (it is listed in Intercom's App Store), reads every conversation, tags it with your contact reasons and other business-specific Dimensions, and joins the results to your CRM, billing and product data so each reason can be ranked by what it costs and what it does to retention. The agent then builds the reports, dashboards and alerts on a schedule. See the Intercom integration and customer intelligence, or start with one file. Plans start at $299 a month, with no demo or sales call needed.

Dimension Labs/Start with one file From $299 a month

Stop reporting. Start understanding.

Start with one file. Ask why a number moved. Plans from $299 a month, no demo and no contract on monthly plans.