← Back

Intercom User Importer

Onboarding tool for importing existing user base

The way Intercom tracks user data is simple - just install a code snippet into your product and Intercom’s user data will be updated as soon as they login to the product. This has been the way how Intercom worked in the first 2 years.

However, there’s a flaw in this system - it relies on the users to login for them to start appearing in the Intercom record. Customers who just started using Intercom but has an existing user-base will need to wait for their users to login. This limits the use case of customers wanting to re-engage existing inactive users.

Collaborating with the Growth team (Who owns the sign up, purchase, and onboarding flows), we’ve committed to a two weeks sprint to tackle this problem. The main idea is simple - we’d develop a feature for customers to import their existing user base into Intercom, so that they can start messaging them without waiting for them to login.


Ben McRedmond - Product manager
Stephen O'Brien - Product engineer


June 2014 (~2 weeks)

Desk research

To get to the root of the problem, I wanted to get myself familiar with how users are usually exported from other tools, how are the data are formatted, and how data import are done with other tools.

User lists are typically exported in CSV format that contains a big data table. Each row would represent a user, and each column would contain data about that user.

The import process of other tools typically involve uploading the CSV, followed by a manual “mapping” process for users to specify which column of user data maps to the data that is stored within the product. For some tools, this process could get pretty complex to use.

First round design solution

Within the given timeline, we weren’t aiming to reinvent the wheel. The general process of importing user information remains the same - upload CSV, map user data, and begin import. However, in terms of execution, I’d like to design this process as seamless as possible.

The first design proposal aims to make the process simpler by trying to match the user’s mental model of the CSV structure. It shows a preview of the uploaded CSV, so that they could easily recognise the data and pick the correct attribute to map a data column to.

However, after a quick run through of the design prototype, it still didn’t feel very seamless. The design asks users to go through each column of the data table and map it to an Intercom attribute. If the uploaded CSV contains a lot of data columns, this process could take a long time to complete.

Second round design solution

We iterated the design to optimize the flow by only asking people to map the four most-important first. Mapping the other data are optional and can be done at a later time.

It also try to guide users through the journey by asking them a simple question (e.g. “Which column in your CSV contains your users’ email addresses?”).

This iteration feels much less effort as compared to the first proposal and it became the version we’ve decided to ship with.


The import flow was implemented within a few weeks, and was immediately helping Intercom customers reach wider target of users that they wouldn’t have easily reach before. And since the Intercom pricing model was based on the number of users, this feature had direct impact on its growth in revenue.