Skip to main content

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.

account registration screen short

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
}
encourage trial conversion

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.

Upollo logoUpollo

Upollo empowers teams to learn more about their users so they can expand, retain, convert and upsell effectively.

Get Started for Free
About Us
  • About
  • Pricing
  • Blog
  • Contact
Community

© 2024

Proudly built in Sydney, Australia 🦘

PrivacyTerms