Customer Interaction is vital for a startup
We started building Atatus with a developer mindset. We thought of various features that the user might want, we tested our implementation on different browsers that we can get our hands on, we looked into minor details of the design on how the users will be using our system. While we did our homework on this very well, we saw that the users who logged into our system were not returning back.
Then, as any new startup would do, we started reading start up blogs and books to understand what we might be missing here. One key point that we had not considered (which many developers don’t by the way), was customer interaction. We were missing it. We weren’t sending emails to our initial users. So we built an automated email sending from our back-end. Though sending ‘welcome’ email was a first step on the right direction, that alone was not sufficient. We than sat down to brainstorm on various communications that we should have with our active and in-active customers.
We then realized that writing all the logic, framing various emails, tracking the progress of these emails were not our business logic. We looked up to the geek world to suggest a service that would help us in getting this done. Though there were couple of services available, we were still a budding startup and as you would expect, we did not want to shell out money till we started making some (any new startups that runs from home should follow this rule of thumb, at least ours does :D ).
Then we hit upon customer.io. Their tag line says - Communicate Better - and that is what we wanted to do with our users. They gave a free plan of 400 emails for 200 recepients. That fit our bill. Once we have more than 200 users visiting our system in a month, then it does make sense for our startup to buy the service. Customer.io had some very cool features, but their business logic was completely based on users. The integration of customer.io is very simple.
1. Copy and paste this piece of JavaScript just before the end of the <body> tag.
<script type="text/javascript">
var _cio = _cio || [];
(function() {
var a,b,c;a=function(f){return function(){_cio.push([f].
concat(Array.prototype.slice.call(arguments,0)))}};b=["identify",
"track"];for(c=0;c<b.length;c++){_cio[b[c]]=a(b[c])};
var t = document.createElement('script'),
s = document.getElementsByTagName('script')[0];
t.async = true;
t.id = 'cio-tracker';
t.setAttribute('data-site-id', 'YOUR SITE ID HERE');
t.src = 'https://assets.customer.io/assets/track.js';
s.parentNode.insertBefore(t, s);
})();
</script>
Be sure to replace YOUR SITE ID HERE
with your site identifier provided after registration.
2. Identify customers
You have to identify the user during signup and login to tracking data of logged in customers. You can send as much as information that are needed for follow up mail. Eg: Sending Mail like Thanks for upgrading the plan to Large.
<script type="text/javascript">
<% if user_signed_in? %>
_cio.identify({
id: 'TRY-7-ATATUS', // must be unique per customer
email: 'user_rocks@example.com',
created_at: 1333688268, // seconds since the epoch (January 1, 1970)
fist_name: 'Ram',
last_name: 'Kumar',
plan: 'Large'
});
<% end %>
</script>
To know more options and attributes, just refer the customer.io documentation
However, for Atatus, we had a bit complex requirement. In Atatus, you have Teams, and users are part of the team. And each user internally could create a project. So we wanted to send out emails for Teams, Users, Project Creation and Project Installation. We did not know how to get this done directly. But once we wrote customer.io team an email, Colin their CEO, suggested that we could have a chat with him to figure out this. In our chat, he turned out to be a really nice & helpful guy and he suggested how we can work around this requirement with customer.io (you would see his picture at the bottom of customer.io main page - Enterprise Software sold by Humans!)
We ended up creating our Team as CIO (customerio)’s User and our Project activities as CIO’s custom event. And these users will be differentiated by an attribute that we would set for these entries. Using customer.io we have made our customer interaction all set & ready to go.
<script type="text/javascript">
<% if user_signed_in? %>
_cio.identify({
id: 'team_1234', // Unique team id
email: 'team_owner@example.com', // Team owner name
fist_name: 'Charles', // Team Owner first name
last_name: 'Robinson', // Team owner last name
collaborators: 'team_mate_1@example.com, team_mate_2@example.com'
created_at: 1333688268, // seconds since the epoch (January 1, 1970)
plan: 'Large'
});
<% end %>
</script>
To track project’s creation, project’s activation, we used custom event of customer.io
_cio.track("project_created", { project_name: "Super Web", notification: true, created_at: 1333688768, });
_cio.track("project_activated", { project_name: "Super Web", notification: true, created_at: 1333694268, });
If you haven’t setup your customer interaction, we would personally recommend to give customer.io a shot (Note: This is just our personal recommendation and we don’t have any directly gain or link with customer.io itself other than we being their customer :) ).
And BTW, if you haven’t set up error tracking in your JavaScript project, then give Atatus a spin.