Getting started with user segmentation

by Rasmus Makwarth

The most important metric for any SaaS company is customer retention. Offering a SaaS product, that you’ve spent years building, for $99 per month just doesn’t make economical sense unless customers stick around for many, many months. Therefore, you want to make sure that your customers keep using your product after signing up.

At the early stage, the best way to track your SaaS product’s customer engagement is by exploring segmented lists of accounts - not just segmented counts of accounts. That’s because there’s a big difference between knowing just “how many” versus “how many, who they are and what they have in common”.

Segmented user lists

The best way to answer these questions is to use segmented lists. Segmented lists are lists of accounts filtered by certain attributes. They enable you to create spreadsheet-like lists of user or company accounts along with their respective attribute values.

Here’s an example of what a segmented list looks like on Bucket. In this example, we’re creating a Customers segment. We’re doing so by filtering all company accounts on the custom monthly_spend attribute. All companies with monthly_spend greater than 0 are paying accounts.

Besides just getting a count of paying customers, we’re also able to explore and compare additional attribute values of these paying customers. This is a powerful way to get to know your customers. Do paying customers have certain attribute values in common? Does certain attribute values mean there’s a higher chance of converting a company from free to paid?

Below you'll find examples of useful default segments for most SaaS products.

Wait, what’s an account attribute?

An attribute is a custom property on a user or company account. You can specify any number of attributes on an account. Attributes are simple key:value pairs. Attribute values can be either a text string, a number, a boolean or a timestamp. As you can tell, attributes are really simple, but they are also surprisingly powerful when used in combination.

For example, with just the following three attributes on your company accounts, you can get a pretty good overview of customer engagement and retention:

  • Signed up (timestamp)
  • Last seen (timestamp)
  • Monthly spend (integer)

Read on to learn how.

Company and User accounts

In most SaaS products, there’s a company/user hierarchy where a user account belongs to a company account (aka an organization). A company can have all employees on the account or just a handful. Employees can come and go as they switch roles or employers.

There are good reasons to create segmented lists of both user and company accounts. However, since companies are the paying entities, and ultimately the accounts that matter in terms of our customer retention metric, this post, and Bucket as a product, has more emphasis on the company accounts than the user accounts - though both are supported!

Default segments

For any SaaS product there’s a few basic segments that you should be keeping track of from the very start. These segments will give you a quick snapshot of how your product and business is doing, and will highlight potential fires in your product.

Here’s a list of good, default segments for SaaS products. Obviously they can be tweaked to work with your specific product.

New users

Attribute filter: User attribute created_at equals one day ago

New companies

Attribute filter: Company attribute created_at equals one day ago

These two segments will tell you if you have an increasing, stale or declining number of signups. Comparing these numbers with marketing activities will give you an indicator of how well the campaigns are performing.

These segments will also give you an indication of whether company accounts are growing internally or not. If there’s a lot more new user signups than company signups, it means that company accounts are growing in user size.

Active companies

Attribute filter: Company attribute last_seen is less than 30 days ago

This is a key segment. This is the count of companies that have logged into your product recently. If your product has high retention, this number should grow over time as a % of the new signups will become active companies.

Keep an eye out for a stale Active company count! If you’re seeing new signups, you’re getting new active companies but at the same rate as existing active companies are abandoning your product. This is the definition of a leaky bucket and it needs to be fixed in order to build a successful SaaS business. By using segment lists, as opposed to just looking at a count, you’ll be able to catch leaky buckets like this way faster.


Attribute filter: Company attribute monthly_spend is greater than 0

These are your company accounts on a paid plan. Companies in this segment have given you the ultimate stamp of approval for your business: They have a problem, and they’re willing to pay for your product to solve it.

Like the "Active companies" segment, this segment should ideally grow over time as active companies convert to paying companies. If free companies are converting to paid, but the count of this segment remains the same, you know what’s up. (Danger!)

Customers slipping away

Attribute filter: Company attribute monthly_spend is greater than 0 and last_seen is greater than 30 days ago

This is one of the most telling segments. As mentioned, companies in this segment all decided to pay you to solve their problem, but now they haven’t logged in for some time. This might mean they’re very likely to churn. Try to find out if they’re happy customers just taking a break for whatever reason, or if they’re becoming unhappy customers.

What defines an active company?

In the “Active companies” segment, it might not be accurate enough to simply look at last login time for determining whether an account is active or not. For example, if a user signs up, creates a company account, then pokes around your product and leaves again, the account probably shouldn’t count as an active company.

To address this, pinpoint a critical feature in your product that you believe justifies counting a company as active. If you’re a Kanban product, it could be creating a new board and writing the first comment. When a company has done this, set a custom attribute flag, e.g. created_comment: true and add this to the attribute filter requirements for "Active companies".

This also unlocks a better way of tracking "active company churn". Create a segment to track companies with created_comment: true that haven't logged in in the past 30 days. These companies signed up, tried your key feature, but didn't stick around.

What segments aren’t great for

Segments are great snapshots in time. They’re easy to use and pretty powerful, which is why so many rely on them. But, they don’t do a good job of telling you about progression over time as attributes get overwritten when state changes. For example, it’s impossible to create segments that list companies that once were active, then became customers, but now are churned. The monthly_spend attribute will go from e.g. 99 to 0 once the company churns, and there’s no way to get the historical values and filter on those. (this might be something Bucket is looking into! ;)

To work around this, you can create additional attributes, like a boolean was_customer attribute. You set this attribute to true when the customer converts to paying for the first time. Later on, you can then filter on companies that have was_customer is true and monthly_spend is 0 to show you a list of churned companies. It works, but it’s a bit cumbersome.