Customer segmentation analytics

Customer segmentation is vital to run a company efficiently. It helps you make better decisions about your product and its users. Very often it's difficult to get the segmentation chart you want, but it doesn't have to be like this.

Data fragmentation at your company

Running a company usually requires using external products – managing customers, billing, support and probably a few others. Such products, among other things, store your data and you put faith in this data. It’s an important concept because it tells you where you should go to get the most up-to-date information about certain parts of your company. For example if you have a support product (like Zendesk Support) you might want to have an answer to a question like “What is the meantime I respond to my customers’ problems?”. And it’s a no-brainer that the best possible answer is in there. For other questions you will most likely go to other products, related to the domain you’re asking about.

This means that your data is scattered across many products and getting answers requires you to query those in some way. If it’s possible to answer your question using just one such product the problem is not that hard. If you’re lucky, the product has a built-in reporting that answers the question. The problem arises when you have to reach out to many products to get the answer. Consider getting an answer to: “How much MRR do I have from customers who found us via our blog?”. If your financial data is in Stripe and information about how your customers found your product is in HubSpot – it becomes quite a challenge to get the answer.

Identifying customer

The first step to have a reliable, trustworthy answer is to understand how the data connects to specific customers you have. Let’s assume that Alex signed up for a trial of your product and you are using HubSpot as your CRM and Stripe as a billing system. Let’s also say that there is an accounts DB table that you use to keep information about accounts that have access to your product. This account table already has an identifier that can be used to uniquely represent each of your customers in different systems.

After the signup you have to create a HubSpot Company and a Stripe Customer that both represent Alex and attach the ID from accounts table to those objects. By doing this you will be able to connect the data from these systems together using this information. You can use HubSpot’s and Stripe’s features to store the information about the account each object relates to. A natural name for the attribute that holds this information is account_id.

You have to add a Company property to your HubSpot named account_id. Refer to HubSpot properties guide on how to do that. For Stripe please read the metadata guidelines, but other than that it should work out of the box without changes to Stripe account.

account = signup_account(email: params[:email])
Hubspot::Company.create!(, account_id:
  metadata: {account_id:}

Most systems allow you to attach custom attributes to objects.

Notice how we’re passing the table's primary key when creating objects in HubSpot and Stripe. The idea stays the same even if you manually add records to HubSpot. Just make sure you attach the correct account_id property from your DB. You can be sure it’s gonna be unique for every new customer. It’s important that you don’t use values that seem unique but really aren’t, like an email address for example. Such values are subject to change and sooner than later your data will become unreliable.

The only work left is to actually get the data and connect together by using this unique identifier. Now, if you ask “What is the performance of a marketing channel?” you can reliably get an answer. This is where Probe comes in.

Connect HubSpot to segment metrics

Probe integrates with HubSpot that pulls data from it and connects it via the described method with your existing customer data. This allows you to segment customer-related metrics with any HubSpot property you want.

All you have to do is connect your HubSpot account to Probe and configure it. First enable the integration by going to Probe App Slack Home page and clicking “Enable” next to HubSpot.

Setup Probe-HubSpot integration via Slack

After you click “Enable” you will be taken to the HubSpot OAuth page where you have to sign in to your HubSpot account and allow Probe app to access your data. Then, in the Slack App Home again, a “Configure” button will be shown, click it and configure your integration.

Probe-HubSpot integration configuration via Slack

Pick the Customer public ID attribute that uniquely identifies your customers so that Probe can match them to existing data. If you follow the example from above this would be account_id. Then you can pick any HubSpot property to segment data by our predefined segments — Marketing Channel, Industry and Country. Probe will suggest you some standard HubSpot properties for each segment, but you can pick any. Underneath every segment you can see a sample /probe command that you can use to see the segmentation results.

Once you’re done with set up, Probe will start synchronizing the data and notify you via Slack when it’s done. The process will take longer if you have more Contacts/Companies in your HubSpot.

After you receive a notification you can see the results by running a segmentation command like /probe mrr by channel. The command will return a chart with MRR segmented by Marketing channel – the values of MRR will be split between segments named after HubSpot property values.

Take a look at the sample graph below.

Sample customer segmentation graph

Probe is now continuously syncing the changes in your HubSpot account. You can do a customer segmentation analysis for your Trial, New MRR, MRR and Churn metrics by Marketing channel, Industry and Country. Of course if you want to input your own segments from a different system – it’s possible as well! Just use our public API and you’re good to go.

Happy segmenting!

by Mike, co-founder of Probe Illustration by icons8