What’s a CDP?
A CDP (Customer Data Platform) is an essential piece of data infrastructure that companies use to collect data about how their customers are using their products. CDPs are installed in a web or mobile application and allow you to flexibly track common usage metrics like: log ins, invites sent or whether or not specific features were used.
Why do I need a CDP?
For SaaS companies there is an increasing focus on expanding revenue from users of your product. This means that tracking user behavior from initial sign up through to buying an enterprise package is critical. CDPs allow you to track the raw product usage data needed to understand how your customers are using your products as a SaaS company.
Which CDP should I use?
There are a few great options as a SaaS company:
- Segment: One of the earliest CDPs, Segment was recently acquired by Twilio. Segment allows you to get started quickly and has a robust offering for startups and large companies alike.
- RudderStack: A newer CDP, RudderStack has an open source product as well as a SaaS offering.
- Snowplow Analytics: Also open source, Snowplow provides behavioral data models out of the box.
- Heap: Heap is more than just a CDP, they’re a product analytics provider as well.
- Freshpaint: A newer entrant, Freshpaint offers an auto-track model which can make tracking product usage easier.
Great, I have a CDP, now what?
Many of our customers choose Segment as their CDP so we’ll use that as the example for how to get started. We will update this blog post over time to give our point of view on the other products mentioned.
Getting Started with Segment
To get started, we’d recommend going to Segment’s main documentation.
The basic concepts to start with for Segment are Sources and Destinations. Segment sits in the middle. A Source is something like your website data or your SaaS app. A Destination is a product like Correlated that you want to send product usage data to.
Segment API Calls
Once you’ve installed Segment in your application and have your Source set-up. You’ll want to set-up tracking. There are three main API calls to consider when considering tracking:
- Identify: This allows you to track users and their identities plus any other custom traits.
- Group: This is essential for grouping users together, usually into Accounts, although other options include teams, workspaces, or organizations.
- Track: This allows you to track specific behavior within your web app that users and accounts are performing.
The Identify Call
Identifying your users using Segment helps you understand who is performing key actions within your product. To do this, you will need to use the Segment Identify call. With the Identify API call you will assign your users a `userID` as well as attach any custom attributes, which Segment calls traits, to that user. The most important consideration when choosing a `userID` is that it should be consistent across all the data sources that you are using to store user information. For example, if you’re using a user ID like `user345`, you’ll want to store that user as `user345` in your Cloud Data Warehouse, as well as tag a matching contact in Salesforce. The ID can be any string, as long as it’s unique!
The Identify call is important for Correlated because it helps us build a data model that incorporates all of the users in your application, even if they don’t exist in your CRM as a contact. By tracking users in Correlated, you’ll be able to use our custom Signals and Workflows to do things like sending a customer an email using Outreach when they try a new feature for the first time in your product.
In addition to the `userID`, Segment lets you tag Identify events with any traits you want. It’s best to keep these traits specific to users (and not their Group - we’ll discuss this later). Here are more details on traits we’d suggest tracking using Identify in Segment.
It’s critical to invoke the Identify call frequently. You should identify a user:
- Upon signup or account registration
- Upon login
- When a user undergoes any significant change in your application. For example:
- Change of role
- Change of address, location, etc
- Change of plan type
The Group Call
Segment’s Group API call is a powerful way to group users into Accounts or organizations as they use your product. It’s a good idea to either invoke the Group call whenever you invoke Identify, or do it at least once a day for active users. With the Group API call, you will identify the group that the user is a part of by using a groupId. The most important consideration when choosing a `groupId` is that it should be consistent across all the data sources that you are using to store Account or organization information. So, similar to the userId above, you want to make sure it’s a unique identifier for that organization across all your data sources. The Group call is important in Correlated, as it’s used to group your users together into Accounts so that you’re able to view usage at an Account-level.
One important thing to note is that many SaaS companies track groups of users on a team, workspace, or project level in their application. This is totally ok and supported by Correlated.
When thinking about which traits to include in the Group call, make sure to include only those traits that are group-specific, not user-specific. Since Correlated joins data across multiple data sources, it is not necessary to include information here that already lives in your CRM or Cloud Data Warehouse. However, if there is any information that comes directly from your application - like what plan they are on, how much they are spending, etc, it’s a good idea to include that information in your traits. Here are some of the key traits we’d recommend including in the Group call in Segment.
When is the right time to make a Group call? You don’t have to invoke it as often as Identify, but there should be a regular cadence. Some instances include:
- When a new account is created
- With any significant change in Account information, for example:
- Conversion from trial to paid
- Change of location
As mentioned earlier, you’ll get the best coverage if you make a Group call at the same time that you make an Identify call. However, if your application is not structured to support that, it’s best to make a Group call once a day for active users.
The last category of configuration in Segment once you’ve set-up your Identify and Group calls is to decide which events to track. Segment has helpfully created what they call the B2B SaaS spec. Here are the key components to track in their spec:
- Account Created
- Account Deleted
- Signed Up
- Signed In
- Signed Out
- Invite Sent
- Account Added User
- Account Removed User
- Trial Started
- Trial Ended
It’s also great to track actions that are potentially related to conversion or expansion, for example:
- Viewed the pricing page
- Clicked to upgrade their account
- Upgraded their account successfully
- Downgraded their account
- Used any Key Feature
A lot of our customers are concerned about tracking “too much”. What’s really great about using Segment and Correlated together is that you can only surface the metrics you care about, and join certain metrics that mean the same thing to downstream users.
We think this is a great starting point and we’d suggest digging in on your own specific product to understand key areas to track events. Here’s a great post breaking down how to put together this “tracking plan” for product events.
As a starting point you should consider finding the 15-20 core events that matter in your product and include them in your tracking plan. We’re happy to answer any questions on this based on what we’re seeing from other leading B2B SaaS companies, just drop us a line!
Next steps after installation
Now that you have a CDP in place and you’re tracking events properly, consider adding tools like Correlated to help your sales and growth teams talk to the right customers at the right time with the right message to increase conversion and find new expansion revenue opportunities!