📜 ⬆️ ⬇️

How we learn to understand our users



Some time ago, in the comments to the post about 7 problems in the design of SaaS products, we received a few questions about how we at TrackDuck collect statistics on the use of our product and organize communication with users. This prompted us to make a detailed review of one of the tools that we use.


')
You can write an exciting article about your service or make an excellent landing page, hitting which your potential client will immediately realize that this is exactly the product he has been looking for. He is already confident that this service will be useful and, perhaps, has already sent a link to it to his colleagues and began to register. But suddenly your user is stuck at the very beginning of using the service. Maybe he will even try to write to the support service or try to solve the problem on his own, but most likely he will leave without ever becoming your client.

For any company, and especially for a startup, this is unacceptable. You should have time to identify the problem and help solve it at the exact moment when it is especially needed.
To do this, it is important to collect as much information as possible about the actions of your users in the system, starting with registration. This will help to follow specific patterns of behavior, come to the rescue in time and, ultimately, get more loyal users who are in love with your product.

There are several services that help analyze the actions of users, at the end of the article I will provide links to known to me. We have been using Intercom at TrackDuck since the release of the first beta, which helped us reduce the number of failures after registration and increase the conversion, and also, we hope to make the product better.

How Intercom works, getting started


This service is a unified platform that allows users to monitor user actions in real time and send personalized messages at the right time based on their behavior.

To get started, you need to connect the service to your project. When Intercom finds its code on your front-end or back-end, you can continue registering and proceed to further configuration. I must say that at first it surprised me a little.

Intercom allows you to communicate with users in two main ways: you can send in-app messages or regular email. In-app messages allow you to interact with users in real time directly from your application using a special widget.



The style of the widget can be changed by controlling the colors of the theme. In-app messages come in several types: Alert, Dialog, Notification.

To create an email, you can use the Intercom preset template, a simple text style or your own template. I would like to note that template management is not as cool as in MailChimp, but it’s enough for us to organize marketing mailings on a user base.

All email and in-app messages can be sent either automatically based on some rules (a little later I will talk about setting up segments and rules for sending messages), and in manual mode. You can send messages in person or to a selected user group. You also have the opportunity to respond to user requests that they make through the in-app communicator.

Automatic messaging is sent based on certain triggers and rules. The main ones are tags, events, time intervals and segments, which I will discuss later.

We collect events and user properties


Intercom has a well documented API and SDK for popular programming languages. You can send data to Intercom both from the server side and from the client side. You will need to connect the browser JS anyway, as it is required for in-app chat. Since we are using node.js, I will give a few examples of using the SDK for this language. If you are using a server language other than js, I can advise you to consult the Intercom documentation.
Intercom does not provide a ready-made SDK for node.js, but, fortunately, we found an excellent library from a third-party author.

Send data with back-end

First, install the module:
npm install --save intercom.io 


Now you can connect and initialize it in your app.js or the module connected to it:
 var Intercom = require('intercom.io'); var options = { apiKey: "your_API_key", appId: "your_APP_ID" }; var intercom = new Intercom(options); 


apiKey and appId we take from the settings of your account in Intercom. At the output, we get an intercom object with which we will continue to work.
Next, imagine that you have registered the first user. Let's pass his data to Intercom so that later we can work with him:
 intercom.createUser({ "email" : "ben@intercom.io", "user_id" : "7902", "name" : "Ben McRedmond", "created_at" : 1257553080, "custom_data" : {"plan" : "pro"}, "last_seen_ip" : "1.2.3.4", "last_seen_user_agent" : "ie6", "companies" : [ { "id" : 6, "name" : "Intercom", "created_at" : 103201, "plan" : "Messaging", "monthly_spend" : 50 } ], "last_request_at" : 1300000000 }, function(err, res) { }); 


In my opinion, the code is extremely understandable and does not need explanations. If you have any questions - ask in the comments. In case of an error in the callback, we get an array like this:
  { "intercom_id": "52322b3b5d2dd84f23000169", "email": "ben@intercom.io", "user_id": "7902", "name": "Ben McRedmond", "created_at": 1257553080, "last_impression_at": 1300000000, "custom_data": { "plan": "pro" }, // ... // ... // ... "session_count": 0, "last_seen_ip": "1.2.3.4", "last_seen_user_agent": "ie6", "unsubscribed_from_emails": false } 


Here is a complete list of methods you can use to manage data at Intercom :


Sending data from the visitor's browser

A simple javascript library is used, the code for its connection you will receive after registration. Its installation on the site will not be any problems.

Intercom will strongly recommend that you encrypt user_id and email using an HMAC (hash based message authentication code) using SHA256 for the security of your users, which is worth doing right away. In addition, from the front-end, you can send, for example, data that the user has put the cursor on the input field or has moved the cursor on the button.

This is how the work with Intercom from client js looks like. The first time you use the boot method:
 window.Intercom('update', {email: someuser@example.com, property: 'value'}); 

On subsequent calls, you can send data using the update method, but remember that you should always specify an email or / and user_id of the user for whom you are updating the data:
 window.Intercom('boot', {app_id: APP_ID, email: someuser@example.com, property: 'value'}); 

More information can be found in Intercom Help . I also recommend creating and using a test account linked to the dev version of your application for debugging. Intercom allows you to do this to save you problems.

What to choose for data storage: attributes, tags, events?

Intercom allows you to save User Attributes in order to be able to subsequently sort users by segments and analyze their actions. User attributes allow you to customize the automatic sending of messages to your customers based on the business logic of your application. For example, if you create a project management tool, you can save and update for each user the data on the number of downloaded files, the number of projects or the number of tasks that each user added. Having this data, you can easily understand the activity of your users and, for example, offer them assistance in cases where someone has added too few projects or files. The user attribute can be a string, a number, a date, or an incremental value.

Events allow you to collect and send activity data about your users to Intercom. After you have sent event data to a specific user, you can sample in Intercom or create an auto message based on this event. Each event has its own name, the time when it happened, contains the data of the user who is associated with it, as well as additional meta data.

Events differ from user attributes in that events contain information about what the user has done and when, while User attributes display the current state of the user. For example, a user subscribed to a paid plan and subsequently changed it — all of these changes will be presented to Intercom as events, while the User Attribute will contain only information about the current plan.
Intercom recommends using events to record high-level activity (for example, changing the tariff plan), and not about user clicks and their path through the site.

Tags in Intercom allow you to label users, companies, and access all items tagged with this tag in the future. You can create a new tag via the SDK or by sending a POST request api.intercom.io/tags , containing the name of the tag. The tag name can contain spaces and punctuation. Tags can be created manually in the Intercom interface and assigned to a single user or group. We use tags to display the connections between users who invited each other, as well as for some other tasks, for example, to track potentially interested or problematic clients.

Customize segments


We send to Intercom all the metrics describing the actions of our users that we can collect. Communication with Intercom does not affect application performance. Also, at any time we can start to track new indicators.

It took us a lot of time to implement Intercom, but now it is one of the main tools of our company. We use collected events and properties to define different segments. Currently, we have allocated 31 segments. The number of segments that the user belongs to varies over time - from registration to payment or refusal to use the service. Segments provide us with a quick analysis of user information.

For example, we can get data about a specific user action. Let it be registration. We want to send him a message with a greeting 7 days after registration, but it is necessary that the messages were received not by accidentally registered users, but only by those who logged in more than 10 times and created at least 10 projects. With Intercom, this is easy:



First we create a new segment using filters. Then we can always return to it and see how the number of such users has changed over time. We can also create a new automatic message for users who belong to this segment.

One of the useful features is the simplicity of segment management - each team member can create a segment or filter users by the necessary parameters without programming knowledge.

Customize message chains for Drip Marketing


Drip marketing, or “drip marketing” if you like, involves creating a series of email messages that a user will receive after a certain trigger is triggered. The trigger is usually a user action on your system; it can be performed instantaneously or at a specified time interval. I will give an example for a better understanding: you provide a trial period for users on your site, let it be 14 days.
  1. Day one: greeting.
    Immediately after registration, each user will receive a personalized letter with a greeting, instructions on how to start working with the service, and useful links.
  2. Day three: we reveal "difficult" users
    By the third day, we see that some of the users, having registered, did not use your product. Perhaps they have postponed a detailed study or setting up the service “for later”. Such users can be added to a separate segment and carefully remind them of their existence by sending a letter thanking them for registration, a brief description of the benefits of the service, and an offer to help with getting started.
    So, we received the first branch and sent the corresponding messages to users:
    1. started actively using your service
    2. and those who stopped at the registration or the first entrance

  3. Seventh Day: Is Key Action Done?
    At this point, usually enough information is collected and you can easily distinguish your active user from the person who registered out of curiosity. Usually, the activity of any user is evaluated based on whether they have committed a key action. Let's call it activation. For different services, the action may be different, for example: sending an invitation to a colleague, adding a comment, etc.
    At this stage, we already have 3 user groups and special messages for each of them:
    1. Active users who performed the target action
      Everything is good, you can thank the user and offer him links to additional features of your service.
    2. Active users who have not performed a key action
      It is clear that the person is potentially interested in your service, but something prevents him from performing activation. Here you can, after analyzing exactly where he stopped, send him a link to a specific help section or select a personal manager to solve the problem.
    3. So they did not start using the service.
      Hmm ... Something went wrong, let's ask, maybe something is missing? Or your solution does not work for them?

  4. One day to the end of the trial period
    The further we move through the funnel of using the service, the more we can distinguish different groups of users. For each of them it would be nice to prepare a separate message. Here the trial period has almost come to an end and we can distinguish 4 main groups:
    1. Active
      These users are doing better than others. They invite friends and colleagues to share the service, do not hesitate to ask questions and use additional functionality. It is enough to remind them and wait a bit, most likely they will stay with you for a long time.
    2. Passive
      Typically, this type of user has a fairly high return on your product. But the degree of transition to the category of “sleeping” is definitely higher. This is due to various factors, for example, someone from your friends may invite such a user to use your application. Or the user simply did not fully appreciate you. I would recommend to remind them of the immediate completion of the trial period and at the same time offer a discount on the commercial version of the product.
    3. Sleeping
      Users made 3-10 logins, but may not have managed to perform a key action. I would also recommend sending such users a special offer, but, in this case, I would suggest, in addition to the discount on the purchase of the premium version, extend their trial period for another week upon request. This group, like the previous one, is important to ask about the problems encountered and start a dialogue.
    4. Dead
      This group was not active all 14 days. They did not open your letters, did not use the service. Do not annoy them with excessive attention. Let's leave this group for later and remind them of ourselves in a month or two, when you, for example, release a new functionality or change something in your service.


I showed an approximate variant of building a drip-company for a two-week post-registration period. It affects only a small set of actions and user parameters and must be adapted to the needs of a real company. But I hope that my train of thought is understandable, and now it will be easier for you to customize the message chains for your users.

A / B testing letters at Intercom


Recently a very useful tool has appeared in the service that will allow you to increase the effectiveness of both regular mailing and your informational messages - this is a / b optimization. To start, create an automatic message based on any rule or open an existing one. You will see the tab:


After you hit 'Start A / B test', you can create a version “B” of your message and start sending two options in parallel. Intercom will send your users equally “A” and “B” messages and begin to collect and analyze statistics.


Soon you will be able to analyze the results of the mailing, choose the most effective message and proceed further - leave it alone or configure the next A / B test.

Conclusion


Finally, I would like to add a small spoon of tar. Intercom is a fairly young company and their product is constantly evolving. Sometimes you may encounter minor problems in the operation of their service. From our experience, we can note several points: the data on the number of users is updated with some delay, the messages to users are sometimes duplicated in the interface (only there, they were not sent several times), we had to dance a little with a tambourine to set up tracking user invitations and build the similarity of the graph (we used tags for this), the interface sometimes “slows down”, there were a few more problems, but they were quickly fixed.

As promised at the beginning here is a small list of similar services. You can easily find their reviews and be able to choose the appropriate one:



We have prepared a short list of tips for building communication with users in your application:



Useful links:



As always, we warmly welcome your questions in the comments. Although you can ask your questions directly to Intercom support, they answer all questions very quickly and extensively.

Source: https://habr.com/ru/post/230555/


All Articles