Skip to main content

Reporting metrics for REST API and CSV exports

Reporting metrics that can be calculated using our REST API and CSV exports.

Written by Jacob Cox

This article covers reporting metrics that can be calculated using Intercom's REST API and CSV exports. Use it to build custom reports from raw API data, troubleshoot discrepancies between your workspace dashboard and CSV exports, or understand how metrics map across Intercom's different reporting systems. This article is intended for developers and data analysts who access Intercom conversation data programmatically or via bulk export.

Not all metrics can be calculated via the REST API, as some data is not included in the API endpoints. Check your Intercom plan to confirm that REST API access and CSV exports are available on your subscription.

Important definitions and terms:

  • Visible conversation part = Conversation part that is visible to the customer.

  • Human admin conversation part = Conversation part created by a teammate. Excludes parts created by Simple automations (Intercom's rule-based bot), Facebook and GitHub bots.

  • All durations are in seconds.

  • The durations in the API exclude office hours.

  • The durations in Elasticsearch that exclude office hours have a suffix _ooo.


REST API metrics

The following tables list REST API metrics available on the Intercom conversations endpoint. Use these to build custom reports or query conversation data programmatically.

Timestamps

first_contact_reply_at

Timestamp for the earliest of the following contact events. All other timestamps in this section are measured relative to this value:

  • A text conversation part from a user

  • An attribute collected part

  • A UserMessage (a message initiated by the customer)

first_assignment_at

Timestamp of the first assignment conversation part after first_contact_reply_at

first_admin_reply_at

Timestamp of the first visible human admin conversation part after first_contact_reply_at

first_close_at

Timestamp of the first close conversation part after first_contact_reply_at

last_assignment_at

Timestamp of the last assignment conversation part after first_contact_reply_at

last_assignment_admin_reply_at

Timestamp of the last assignment conversation part after first_contact_reply_at and before first_admin_reply_at

last_contact_reply_at

Timestamp for the latest of the following contact events:

  • A text conversation part from a user

  • An attribute collected part

  • A UserMessage (a message initiated by the customer)

last_admin_reply_at

Timestamp of the last user visible human admin conversation part after first_contact_reply_at

last_close_at

Timestamp of the last close conversation part after first_contact_reply_at

count_reopens

Number of reopens after first_contact_reply_at

count_assignments

Number of assignments after first_contact_reply_at

count_conversation_parts

Total number of conversation parts

The following durations are all expressed in seconds and exclude office hours. These are REST API fields on the conversation object.

Durations

time_to_assignment

time_to_admin_reply

time_to_first_close

time_to_last_close

reply_times

List of reply times for a conversation. A reply time is the time difference between a visible human admin conversation part and the previous visible conversation part if that part was created by the customer.


The following sections list equivalent metrics available in Intercom's Elasticsearch reporting pipelines. Elasticsearch is the data store that powers Intercom's built-in reporting charts. Where a metric is defined as 'Same as [API metric]', the calculation is identical — only the field name differs.

Elasticsearch is the data store that powers Intercom's built-in reporting charts. Intercom maintains two Elasticsearch pipelines — a newer pipeline used by current reporting features and a legacy pipeline used by older charts. The sections below list the equivalent Elasticsearch field names for the REST API metrics defined above. Where a field is defined as 'Same as [API field]', the underlying calculation is identical — only the field name differs.

Elasticsearch - new pipeline

These are Elasticsearch new pipeline timestamp fields. They map directly to the REST API timestamps above and power the current reporting charts in your workspace.

Timestamps

started_at

Same as first_contact_reply_at (REST API) — timestamp for the earliest text conversation part from a user, attribute collected part, or UserMessage.

first_response_at

Same as first_admin_reply_at (REST API) — timestamp of the first visible human admin conversation part after first_contact_reply_at.

last_closed_at

Same as last_close_at (REST API) — timestamp of the last close conversation part after first_contact_reply_at.

last_closed_by_human_at

Timestamp of the last close conversation part by a human after started_at

These are Elasticsearch new pipeline duration fields, expressed in seconds. They correspond to the REST API duration metrics above.

Durations

time_to_last_close

Same as time_to_last_close (REST API) — duration from first_contact_reply_at to last_close_at, in seconds.

time_to_last_close_by_human

first_response_time

Same as time_to_admin_reply (REST API) — duration from first_contact_reply_at to first_admin_reply_at, in seconds.


Elasticsearch - legacy pipeline

New inbound conversations

The 'New inbound conversations' chart in your Intercom Reports shows data for conversations linked to UserMessage messages (conversations initiated by a customer). The selected timeframe is applied to the conversation created_at timestamp, not the message thread created_at.


CSV export

The CSV export downloads data linked to the message threads in the selected timeframe. It includes all conversations across all message types, making it broader than individual reporting charts in your workspace.

For example, the 'New inbound conversations' chart in Intercom Reports shows only conversations linked to a UserMessage message type, whereas the CSV export includes conversations linked to all message types. This is why totals in the CSV export may not match individual chart figures.

Important: Comparing CSV export results with your workspace dashboard charts may not yield the same results since message thread created_at is not the same as the conversation created_at.


Examples

The following scenarios illustrate how reporting metrics are calculated across different conversation timelines. Each scenario shows how timestamps and durations are applied depending on when events occur in a conversation.

Scenario 1: Single open-close cycle

Scenario 1: a timeline example showing how first_contact_reply_at, first_admin_reply_at, and related timestamps are calculated for a straightforward conversation with a single open-close cycle.

Timeline diagram showing how first_contact_reply_at, first_admin_reply_at, first_close_at, and related timestamps are calculated for a conversation with a single open-close cycle.

Scenario 2: Conversation reopened after closing

Scenario 2: a timeline example showing how metrics are calculated when a conversation is reopened after being closed, affecting last_close_at, count_reopens, and time_to_last_close.

Timeline diagram showing how last_close_at, count_reopens, and time_to_last_close are calculated when a conversation is reopened after being closed.

Scenario 3: Multiple assignments and admin replies

Scenario 3: a timeline example showing how metrics are calculated when there are multiple assignments and admin replies before the conversation is closed, affecting time_to_assignment and last_assignment_admin_reply_at.

Timeline diagram showing how time_to_assignment and last_assignment_admin_reply_at are calculated when there are multiple assignments and admin replies before the conversation is closed.

💡Tip

Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts


Did this answer your question?