Export your message data as a CSV file to analyze your message performance. With this data, you can:
Combine Intercom message data with your user data to better understand the impact of your messages.
Understand how your messages and series perform over time.
There are three ways you can export message data in Intercom. Here's how:
Export data for a specific date range
To export all of your message data for a specific date range, go to All reports > Customer engagement overview.
Then, click ‘Export CSV':
You can choose from two reports and define a date range:
Detailed Stats report - Take a deep dive into how individual users are responding to your messages with this CSV report, which provides a detailed breakdown of all the users that received your messages.
Overview Stats report - See an overview of how all messages are performing with this CSV report, which provides an overall aggregate stats view of your outbound messages along with auditing data.
Important:
You can only export data for messages your team have sent. If you'd like export conversations initiated by customers, read this article on exporting conversation data.
The date range selected here will filter the report to show messages which have sent in that period, but individual stats for those messages (like click rate etc) will show the results for all time.
The link that is sent out to download the CSV is only valid for 2 days, and will then expire.
Note: If you choose a date range that might contain a high volume of data, it’s best to open the CSV file using a text editor.
Lastly, click ‘Export’. You’ll now receive the CSV file to your email address:
Note: Exporting your message data can take up to a few hours. You'll receive a ZIP file containing a number of CSV’s for different interactions such as ‘receipt’ of a message, ‘completion’ of a Series, ‘screen views’ of a mobile carousel etc.
Files are exported separately because for a single delivery of a piece of content, a user may have many different occurrences of the same stat.
For example, if you receive an email and click multiple links, or receive a tour and view multiple steps – we'd record a new "click" or "viewed step" stat every time.
With that in mind, it's not possible for us to fit everything into a single row.
Detailed Stats report
Here is a list of exportable statistics and the different content types that they relate to. Each event is exported in its own file, where you can see the details of when it occurred. Click on an event to learn more about it.
Event | Content type/s |
Series | |
Mobile Carousel | |
Post, Banner, Chat, Email | |
Chat | |
Custom Bot, Product Tour, Mobile Carousel | |
Mobile Carousel | |
Post, Banner, Product Tour, Push, Control Group, Mobile Carousel, Chat, Email, Series, Custom Bot, Series Edge Split, SMS | |
SMS | |
Post, Push, Chat, Email, | |
Mobile Carousel | |
Post, Banner | |
ALL | |
Post, Chat, Email, Custom Bot | |
Mobile Carousel | |
Series | |
Series | |
Series | |
SMS | |
Product Tour | |
Product Tour | |
Email, SMS |
Each stat is exported in its own file. Below is a full list of the different stats, the attributes provided in the export and their descriptions.
Tip: Use the 'receipt' CSV file for basic analysis, such as aggregating and calculating click rates for messages between specific dates without having to manually aggregate multiple files together. Use the other detailed event files such as 'click_TIMESTAMP.csv' when you need greater granularity, e.g. how many times a customer clicked a specific message or which links they clicked most often.
Checkpoint
A Checkpoint is created for each block in a Series when visited by a user-company grouping. They tell us what should be processed and when/where that processing should happen.
Attribute | Description |
user_id | Intercom ID for the user, lead or visitor. |
company_id | Intercom ID for the company. |
ruleset_id | The ID of the message within the Intercom system. This is the same ID as seen in the URL for the content, e.g. |
status_code |
|
status_name | Description for the status_code. Possible values:
|
created_at | Timestamp of when the checkpoint was created. |
last_processed_at | The time we last checked if the user matched the rules of the node, or if they should receive the content of the node. |
expires_at | The time at which we will send the user down any "did not match" paths from the node, or remove them from the path entirely if there are no alternative paths. |
times_processed | The number of times we have checked if the user matches the node |
*What are Primary, Alternate and Split edges?
Primary edge — The customer matched the rules, received the message (or tag), or passed a wait block.
Alternate edge — The customer did not match the rules, or did not come online to receive a message.
Split edge — The customer took one path from a split test.
Button tap
A button tap is recorded when a user taps a button in a Mobile Carousel.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
button_action_tapped_at | Timestamp for when the button was tapped. |
Click
A click is recorded whenever a user, lead or visitor clicks a link in a piece of content. Here a link could be a regular text link, a button or an image that links somewhere.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
clicked_at | Timestamp for when the link, image or button was clicked. |
Collected email
A collected email stat is recorded whenever a visitor receives a Chat asking for their email address and they submit it.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
email_collected_at | Timestamp for when the email was collected. |
The email address that was collected. |
Completion
A completion is recorded whenever a user, lead or visitor completes a Mobile Carousel or Product Tour. There is a separate "Series Completion" stat for Series.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
completed_at | Timestamp for when the carousel or tour was completed. |
Dismissal
A dismissal is recorded whenever a user dismisses a Mobile Carousel.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
dismissed_at | Timestamp for when the Mobile Carousel was dismissed. |
Goal success
A goal success is recorded whenever a user, lead or visitor hits the goal for a message.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
goal_hit_at | Timestamp for when the goal was hit. |
Hard bounce
A hard bounce is recorded whenever an email is permanently rejected by a recipient’s email client. For example, when:
The email address does not exist on a server.
The domain name doesn’t exist.
Or the recipient has blocked delivery.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
hard_bounced_at | Timestamp for when the message hard bounced. |
Keyword reply
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
replied_at | Timestamp for when the reply was sent. |
reply | Post, Chat, Email, Custom Bot |
keyword_type | DEFAULT (e.g. unrecognized reply) |
Open
An open is recorded the first time someone opens a Push, Post, Chat or Email message.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
opened_at | Timestamp for when the message was opened. |
Permission grant
A permission grant is recorded whenever you request a permission with a Mobile Carousel, and the user grants it at the time. It is not recorded if the permission has already been granted, or is granted from the settings at a later time.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
granted_at | Timestamp for when the permission was granted. |
permission_type | The permission type that the user granted. For example:
|
Reaction
A reaction is recorded whenever a user, lead, or visitor reacts with an emoji to a Post or Banner message.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
reacted_at | Timestamp for when the reaction happened. |
reaction | The reaction that the user, lead or visitor chose. |
Receipt
A receipt is recorded whenever a user, lead or visitor is sent one of your messages. It is recorded even if the message cannot be successfully received, like with a bounce. The receipt_id can be used to link other events related to this message.
Attribute | Description |
user_id | Intercom ID for the user, lead or visitor. |
user_external_id | Your ID for the user, lead or visitor. |
company_id | The company ID that the user belongs to |
The users email address | |
name | The users full name |
ruleset_id | The ID of the message that was delivered to the user |
content_id | The ID of the message variant that was delivered to the user (A/B tests will have the same ruleset_id but different content_id’s). |
content_type | The type of message that was delivered e.g. ‘email’, ‘tour’ |
content_title | The title of the message |
created_via | Why the message was delivered |
ruleset_version_id | As you edit content we record new versions. This ID can help you determine which version of a piece of content that was received. |
receipt_id | ID for this receipt. Will be included with any related stats. |
received_at | Timestamp for when the receipt was recorded. |
series_id | The id of the series that this content is part of. |
series_title | The title of the series that this content is part of. |
node_id | The id of the series node that this ruleset is associated with. Each block in a series has a corresponding node_id. |
first_people_reached_receipt | The timestamp of the attribute name. |
first_checklist_step_receipt | The timestamp of the attribute name. |
first_checklist_step_open | The timestamp of the attribute name. |
first_checklist_step_click | The timestamp of the attribute name. |
first_checklist_step_completion | The timestamp of the attribute name. |
first_reply | The timestamp of the first time the user replies to the receipt of this message.
(Will only show a value for content types that support replies, will be blank if the user has not replied to the receipt) |
first_completion | The timestamp of the first time the user completes this receipt (e.g. for tours messages, when the user first completes that product tour).
(Will only show a value for content types that support completions, will be blank if the user has not completed the message). |
first_series_completion | The timestamp of the first time the user completes this series.
(Will only show a value for receipt content types that support series completions, will be blank if the user has not completed the series). |
first_series_disengagement | “ |
first_series_exit | “ |
first_goal_success | “ |
first_tour_step_failure | “ |
first_tour_step_view | “ |
first_reaction | “ |
first_open | “ |
first_click | “ |
first_dismissal | “ |
first_collected_email | “ |
first_unsubscribe | “ |
first_hard_bounce | “ |
first_soft_bounce | “ |
first_spam_complaint | “ |
first_permission_grant | “ |
first_button_tap | “ |
first_screen_view | “ |
first_webhook_failure | “ |
first_sms_failure | “ |
first_push_failure | “ |
first_answer | “ |
Reply
A reply is recorded whenever a person replies to a Post, Chat, Custom Bot or Email.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
replied_at | Timestamp for when the reply was sent. |
Screen view
A screen view is recorded for each screen in a Mobile Carousel that a user views.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
viewed_at | Timestamp for when the screen was viewed. |
Series completion
A series completion is recorded when a user or lead finishes a series.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
completed_at | Timestamp for when the series was completed. |
completion_node_ruleset_id | The ID of the Ruleset where the user or lead completed the Series. |
Series disengagement
A series disengagement is recorded when a user or lead disengages with a series. This occurs when they reach the end of the specified waiting period on a message or rule block. If they haven’t received the message or matched the rules, they’ll be marked as disengaged.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
disengaged_at | Timestamp for when the user or lead disengaged from the series. |
disengaged_node_ruleset_id | The ID of the Ruleset where the user or lead disengaged from the series. |
Series exit
A series exit is recorded whenever a user or lead matches the exit rules for a series.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
exited_at | Timestamp for when the user or lead exited the series. |
SMS Failure
Attribute | Description |
receipt_ID | ID of the receipt linked to this stat. |
failed_at | Timestamp for when the tour step failed. |
message_status | Failed or Undelivered |
error_code |
Soft bounce
A soft bounce is recorded when an email cannot be delivered to a user or lead for a temporary reason, like a full mailbox.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
soft_bounced_at | Timestamp for when the message soft bounced. |
Spam complaint
A spam complaint is recorded if a user or lead marks one of your messages as spam in their email client.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
complained_at | Timestamp for when the spam complaint happened. |
Tour step failure
A tour step failure is recorded whenever a Product tour step fails to display for a user, lead or visitor.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
step_id | ID of the tour step that failed. |
failed_selector | The CSS selector that failed. |
failure_url | The URL the user, lead or visitor was on when the failure occurred. |
failed_at | Timestamp for when the tour step failed. |
Tour step view
A tour step view is recorded whenever a Product tour step is presented to a user, lead or visitor.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
step_id | ID of the tour step that was viewed. |
viewed_at | Timestamp for when the tour step was viewed. |
Unsubscribe
An unsubscribe is recorded if someone unsubscribes from one of your email messages.
Attribute | Description |
receipt_id | ID of the receipt linked to this stat. |
unsubscribed_at | Timestamp for when the user or lead unsubscribed. |
Overview Stats report
Overview stats is a CSV report that gives detailed stats for a workspace’s messages aggregated at a message level rather than at the user receipt level.
Note: The date filter functionality works differently to the Detailed Stats report. For the Overview Stats report, all messages that were live at any point during the filtered date range will be exported.
When you export this data, it will email you a single CSV file containing the overview of your messages.
Alongside the message details and auditing related columns such as ‘last edited by’, there are columns for each stat in the message stats system. Each of these stats will only show values for message/content types that support those stats.
Each stat is broken into 3 values:
The Total count of that stat - e.g. ‘open_total’ - will show the total number of times the message was opened regardless of users.
The Unique count of that stat - e.g. ‘click_unique’ - will show the count of unique users that clicked at least once in that message
The Rate of that stat based on total receipts - e.g. ‘reply_rate’ - will show the percentage of total sends that replied to that message.
All columns explained
Column Name | Description |
ruleset_id | The ID of the message |
created_at | When the message was created |
content_title | The title of the content you see in your Intercom workspace. |
content_id | The ID of the specific message content/variant - In an A/B test each version has its own Content ID. |
content_type | The type of the message e.g. Email, Chat, Post |
series_id | The id of the series that this content is part of. |
series_title | The title of the series that this content is part of. |
state | The current state of the message e.g. Live, Paused, Draft |
last_state_change_by | The email address of the teammate to update the messages state. |
last_state_change_at | The timestamp of when the last state change took place. |
last_edited_by | The email address of the last teammate to edit the message. |
last_edited_at | The timestamp of when the last message edit took place |
url | The URL to view/edit the message inside of Intercom |
receipt_total | Explained above |
receipt_unique | Explained above |
reply_total | Explained above |
reply_unique | Explained above |
reply_rate | Explained above |
completion_total | Explained above |
completion_unique | Explained above |
completion_rate | Explained above |
goal_success_total | Explained above |
goal_success_unique | Explained above |
goal_success_rate | Explained above |
tour_step_failure_total | Explained above |
tour_step_failure_unique | Explained above |
tour_step_failure_rate | Explained above |
tour_step_view_total | Explained above |
tour_step_view_unique | Explained above |
reaction_total | Explained above |
reaction_unique | Explained above |
reaction_rate | Explained above |
open_total | Explained above |
open_unique | Explained above |
open_rate | Explained above |
click_total | Explained above |
click_unique | Explained above |
click_rate | Explained above |
dismissal_total | Explained above |
dismissal_unique | Explained above |
dismissal_rate | Explained above |
collected_email_total | Explained above |
collected_email_unique | Explained above |
collected_email_rate | Explained above |
unsubscribe_total | Explained above |
unsubscribe_unique | Explained above |
unsubscribe_rate | Explained above |
hard_bounce_total | Explained above |
hard_bounce_unique | Explained above |
hard_bounce_rate | Explained above |
soft_bounce_total | Explained above |
soft_bounce_unique | Explained above |
soft_bounce_rate | Explained above |
spam_complaint_total | Explained above |
spam_complaint_unique | Explained above |
spam_complaint_rate | Explained above |
permission_grant_total | Explained above |
permission_grant_unique | Explained above |
permission_grant_rate | Explained above |
button_tap_total | Explained above |
button_tap_unique | Explained above |
button_tap_rate | Explained above |
screen_view_total | Explained above |
screen_view_unique | Explained above |
screen_view_rate | Explained above |
webhook_failure_total | Explained above |
webhook_failure_unique | Explained above |
webhook_failure_rate | Explained above |
sms_failure_total | Explained above |
sms_failure_unique | Explained above |
sms_failure_rate | Explained above |
push_failure_total | Explained above |
push_failure_unique | Explained above |
push_failure_rate | Explained above |
answer_total | Explained above |
answer_unique | Explained above |
email_failure_total | Explained above |
email_failure_unique | Explained above |
email_failure_rate | Explained above |
Export data from a message or tour
If you’d like to look at a message or tour’s performance in more detail, go to the message you’d like to export, click on ‘More’ and select ‘Export CSV’:
Note: Data exported from Mobile push messages and Product tours will be in multiple files, based on separate message events like "Receipt", "Open" or "Completion (for tours only)".
Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts