How to Create Custom User Scores for Intercom

Some of our Google Sheets Add-on beta users have been using it to do some really interesting stuff. One of my favorites is the company that is using it to identify their best customers by creating custom user scores using and user data from Intercom.


Here’s how you can build something similar:

Gather Data

First, export user data from Intercom (Instructions here) and upload it to a new Google Sheet. It should look something like this:

intercom data@2x.png

Given all of the data available in Intercom, you can really easily do a lot here. To get started, let’s narrow it down to a few columns:

sample columns.png

With these columns, we can easily get a few useful facts about each customer:

  • How long has it been since they signed up
  • How long since their last login
  • How many times they’ve logged in
  • Whether they’re on a free or paid plan

You can add columns and use an easy formula in Google Sheets to calculate the number of days between today and the Signed up and Last seen dates:


And an if/then statement to show whether or not the user is on a paid plan:

=if(P2 = "free", 0, 1)

The result is a sheet like this:

columns with formulas.png

(To help you get started quickly, here’s a copy of this spreadsheet. Just go to the File > Make a Copy menu to make a copy of it in your own Google account.)

Set Up Your Rules

If you don’t already have a account, you can sign up here to try it for free.

Next, let’s decide on a few rules to start things off. These are a pretty obvious place to start:

  1. The longer it’s been since a user signed up, the better, so a larger number of days here is good.
  2. The shorter it’s been since a user last logged in, the better, so a smaller number of days is best.
  3. The more times a user has logged in, the better, so a larger number here is also good.
  4. A user on a paid plan is better than one on a free plan.

Let’s also say that rules 2,3 and 4 are much stronger signals than rule 1, so we can give rule 1 a lower weight.

Here’s what those rules might look like in


intercom scoring rules@2x.png

(Follow this link and click on Create to make a copy of this agent in your own account)

Take note of your API key and the Agent ID of the agent you created above. You’ll need them for the next step.

Calculate User Scores

If you haven’t already made a copy of the sample spreadsheet above, you can do that here.

Next, install the Google Sheets add-on.

Once the add-on is installed, go back to the Add-ons menu > > Settings and enter your API key and Agent ID.

With the Google Sheets add-on, you can use the function =FUZZYAI() to send data to and display the result. It expects inputs in the following format:

=FUZZYAI(<name of input 1>, <value of input 1>, <name of input 2>, <value of input 2>, etc)

So for this example, paste this formula into cell B2 (in the User Score column):

=FUZZYAI("daysSinceSignup", D2, "daysSinceLastSeen", F2, "webSessions", G2, "paidPlan", I2)

A score should appear in that column. Just copy and paste that formula into B3 -> B10 to get the rest of the scores.

Set This Up For Yourself in 5 Steps

  1. Create a sample User Score agent in your account by following this link and clicking on Create. (If you don’t already have a account, sign up here to try it for free.)
  2. Take note of your API key (found on your dashboard) and the Agent ID of the User Score agent you created in step 2.
  3. Go to this sample Google Sheet and make a copy of it in your own Google account.
  4. Add the Google Sheets add-on to that sheet.
  5. Copy the FUZZYAI formula shown above to cell B2.

And with that, you should have a working version of this example! Try changing some of the data in the spreadsheet to see how it affects the score.

Other Ideas

The goal here, of course, is to show a pretty simple example of how to do this. We’ve seen users do similar things to create lead scoring, do churn risk analysis, and much more.

Some of our users have built agents to do this type of user score and then send that score back to Intercom daily as custom user attributes.


Use in Google Sheets with our new add-on

We’re excited to announce the release of a add-on for Google Sheets. With this add-on, you can test your agents directly in Google Sheets without having to do any integration with code.

To get started, follow this link or go to the listing on the Google Sheets Add-on Marketplace and install the add-on.

Once it’s installed, go to Add-ons > > Settings and put in your API key and the ID of the agent you’d like to use.

Fuzzyai Google Sheets Settings@2x.png

Once you’ve entered your API Key and Agent ID, you can make a call to using this formula:

=FUZZYAI("<name of first input>", <location of first input value>, "<name of second input>", <location of second input value>, etc...)

For example:

=FUZZYAI("Number of shares", A2, "Number of likes", B2, "Age in minutes", C2)

This add-on is a quick and easy way to start using without any code at all. Try it out and let us know what you think!

(Bonus for developers: If you’re curious to learn more about how the add-on works, check out the project on GitHub and file issues for any comments/feedback.)

How to Build Your Own Product Recommendation Engine

A common application of is in powering custom recommendation engines. For many companies, generic solutions don’t offer enough flexibility (or require too much work manually setting up links between all of the different products in the catalog), and building a custom recommendation engine from scratch requires way too much time and effort.

To show how easily it can be done, we’ve put together an open source Product Recommendation plugin for Drupal Commerce stores that lets anyone spin up their own product recommendation engine with

You can see this recommendation engine in action on our demo store:


How Do The Recommendations Work?

When a user is looking at a product page on an online store, the goal of this recommendation agent is to identify the other products in the catalog that might be relevant.

The way differs from other machine learning platforms is that we let developers encode their own knowledge about how a system should work as a set of rules. The API uses those rules to provide recommendations. Over time, as feedback is sent to on how well the rules performed, the API learns and improves automatically.

In our sample recommendation agent, we identified a few rules that might show affinity between the current product and each of the other products in the catalog:

  • If the current product and another product are in the same category, it’s likely to be a good recommendation
  • If the current product and another product are not in the same category, it’s less likely to be a good recommendation
  • If the current product and another product have very different prices, it’s less likely to be a good recommendation (i.e. it decreases affinity)
  • If many customers who bought the current product also bought another product, that’s likely to be a very good recommendation (i.e. it increases affinity)
  • If the current product and another product have many of the same words in their titles, it’s likely to be a good recommendation (i.e. it increases affinity)
  • If the current product and another product have many of the same works in their descriptions, it’s likely to be a good recommendation (i.e. it increases affinity)

Here’s what those rules look like when created within


Keep in mind that these were purposely chosen because they can work generically for many online stores. Specific stores may have other rules that make sense, for example, a clothing store may want to show products for the same season and so might add rules like:

  • If sameSeason is true then affinity is high
  • If sameSeason is false then affinity is very low

What’s Next?

If you want to try it for yourself, sign up for a account and follow the instructions in the Drupal Commerce Recommendation Engine plugin on GitHub.

This project is meant as a starting point. Every developer will likely have their own modifications to make to the rules and integration in their ecommerce platform.

In an upcoming blog post, we’ll talk about how to add feedback into this recommendation engine so that it can learn based on actual customer behavior over time.

Build Your Own AI-Powered Twitter Feed

One of our favorite quick demos of’s capabilities is to show how easy it is to take your own Twitter feed, score each of the Tweets, and surface the most relevant ones. It’s one of the first new agent templates we built for the platform and it’s a lot of fun to try out.

To show how easy it can be, we put together a Ruby on Rails project to help you get started and get more acquainted with You can find that project on GitHub.

Getting Started

Getting your Tweet Relevance agent set up will take just a couple of minutes. Once you’ve signed up for a free account, go to your Dashboard and take note of the API key shown on the top left-hand corner of the page. You’ll need it later.

Next step is to create your Tweet Relevance agent. There are two ways to do this. The easiest way is to use this link and just click on Create.

Alternatively, you can create it manually by logging into your dashboard, clicking on the ADD AN AGENT  button. From there, select the TWEET RELEVANCE template:


That will automatically create a Tweet Relevance agent like the one below:


This initial template starts off with just 3 rules that should be pretty easy to understand:

  • tweets with more likes are more relevant
  • tweets with more shares are more relevant
  • older tweets are less relevant

Take note of your agent ID, which is found just above the TWEET RELEVANCE title on this page. Later in this post we suggest a few things you can add to this, but this is a good starting point.

Installing the Rails App

Next step is to clone our Tweet Relevance Ruby on Rails on GitHub, and follow the installation instructions in the file, from there you’ll be guided through the next steps of setting up the app.


Once you’ve got things set up, your app will show you the tweets that are most relevant based on the rules we defined earlier. Each tweet will be scored like this: TweetRelevance.png

What’s Next?

Now that you’ve got this simple app working, what else can you do? If you want to play around with the app and, here are some other things you could try:

  • Add new rules that take into account your friends’ behavior: how many people you follow liked a tweet, how many people you follow shared a tweet.
  • Try combining different rules, for example if you want to identify tweets that are liked by your friends but not a lot of other people, that rule could be: IF number of likes by friends IS very high AND number of likes IS low THEN relevance IS very high.
  • Set up rules to increase relevance of tweets that include keywords you’re interested in and decrease relevance of tweets that include keywords you’re not interested in.
  • Add a feedback metric to train and improve the results: add thumbs up and thumbs down buttons next to each tweet that send positive or negative feedback to the API based on which tweets you find most or least relevant.


Major update to the Python SDK for

One of the benefits of having on Product Hunt last week was getting a lot of additional eyeballs on our SDKs for different programming language. We got a lot of feedback on the Python library on github, so there’s now a new version of the package in pypi.

This version brings the Python SDK up to the same level of functionality as other SDKs, and provides support for Python 2 and 3, a better unit testing framework, and some other software engineering improvements.

Please kick the tires if you’re a Python developer. Issues to Github!