How to detect and convert users getting multiple free trials
Free trials are a great way to let customers try out your product and experience it firsthand with a low barrier to entry. Unfortunately sometimes customers who love your product also decide not to pay and opt for using multiple accounts to get repeated shared trials. This is where Upollo can step in, identify them, and help upgrade them into happy paying customers.
First, we want to know when users are registering, so that we can determine if a user is using multiple accounts. This can be done in as few as three lines of code to track when users are registering for your product. Next, fetch and act on Upollo’s analysis to provide customers who are using multiple accounts with tailored user experiences to move them towards paying for their usage.
Prerequisites
- Be signed up to Upollo at app.upollo.ai/login. You will be able to add tracking while on the free plan but real time analysis to convert users will require the growth plan.
- Connect a billing provider to Upollo to optimize user detection and track conversions.
- Add the Upollo libraries to your project by following the quick start instructions.
Step 1: Track events
The first step to detecting multiple free trials is to learn how big the problem is. First we need
to track some user events with Upollo when users access your product. The more events that you add
the higher quality the analysis will be, but often the best one to start with is
EVENT_TYPE_REGISTER
This should be sent from the client right before a customer triggers a
registration attempt.
// When the user clicks your register button
upollo.track(
{ userEmail: "person@example.com" },
EventType.EVENT_TYPE_REGISTER
);
Once the user successfully registers, you should also send an EVENT_TYPE_REGISTER_SUCCESS
so that
Upollo knows the user has successfully registered.
At this point you can deploy your code and start sending events to Upollo. Once Upollo starts to receive these events you will be able to log in to the dashboard and see information about your customers and get an understanding for how many are using multiple accounts and the size of the opportunity to convert them into paying customers.
Step 2: Respond to analysis
When users repeat trials without paying there are a number of options that can be taken. For this guide we will assume that you want to detect users getting a free trial applied when they register an account if they have already had a trial, and prompt them to subscribe as a paying customer instead.
Track registration
When using Upollo to prevent multiple free trials you will need to consider your registration flow
and when a free trial is added to an account. If the trial is added as part of registering an
account, track a EVENT_TYPE_REGISTER
event for this step. If the free trial is added after the
account has been created, additionally track an EVENT_TYPE_ATTEMPT_PURCHASE
event. We also
recommend tracking all the events you can to optimize the analysis of the user. For this tutorial
the goal is to add a single event where we will use the response to make a decision.
Your registration event tracking should looks something like this:
const eventToken = await upollo.track(
{ userEmail: "person@example.com" },
EventType.EVENT_TYPE_REGISTER
).eventToken;
For the register event you need to keep the response of track
(i.e. the eventToken
) so you can
send it to your server to make some decisions about the customer. As an aside, Upollo actually
provides two options for tracking the event: 1) call track
on the client and send the eventToken
to the server (like in this tutorial), or 2) if you want to make decisions purely on your client you
can call upollo.assess
rather than upollo.track
which will track the same but will also provide
the analysis response to the client directly. We recommend the more secure approach (1) that uses
upollo.track
and your server to make decisions based on the analysis.
Post event token to server
Assuming you have a /register
endpoint on your server, you can
send the Upollo token from track
along with your registration so
that your server can act accordingly.
const registerResponse = await fetch("https://api.example.com/register", {
method: "POST",
body:
"email=" +
encodeURIComponent(email) +
"&upolloToken=" +
encodeURIComponent(eventToken),
});
Decide how to respond
When you receive the token on the server, validate the token, and check for the multiple accounts flag which indicates that the customer already has other accounts. This allows you to decide if the customer should get another free trial or not. You will need to be on the Grow plan for Upollo to get real time analytics and respond to customers creating multiple accounts.
func HandleRegister(rw http.ResponseWriter, r *http.Request) {
email := r.FormValue("email")
upolloToken := r.FormValue("upolloToken")
result, err := upolloClient.Verify(r.Context(), &upollo.VerifyRequest{
EventToken: upolloToken,
Userinfo: &upollo.UserInfo{
UserEmail: email,
},
})
hasMultipleAccounts := false
for _, flag := range result.GetFlag() {
if flag.Type == upollo.FlagType_MULTIPLE_ACCOUNTS {
hasMultipleAccounts = true
break
}
}
status := "success"
if hasMultipleAccounts {
status = "noFreeTrial"
}
// Add your platform's user registration to the request as well.
rw.Header().Set("Content-Type", "application/json")
json.NewEncoder(rw).Encode(map[string]any{
"status": status,
})
}
Complete the registration flow
Back on the client side we can show the result of the registration as either with or without a free trial depending on the registration response.
const json = await registerResponse.json();
if (json.status == "success") {
// Navigate to registration success page
} else if (json.status == "noFreeTrial") {
// Navigate to no free trial page
} else if (json.status == "error") {
// Show error and allow user to resubmit
}
Testing
To test your integration you can use an email address with +multiple_accounts
in it (eg foo+multiple_accounts@example.com
), this will
return a response with the MULTIPLE_ACCOUNTS
flag.
Next steps
Congratulations, you are now detecting customers who are getting multiple free trials and encouraging them to convert and upgrade to a paid plan. You can use the Upollo dashboard to see information about your customers who convert and are no longer accessing multiple free trials. You may also want to consider tracking more events to increase detection or read more about offering effective trials to improve your sign up process.