Analytics

Trust, but verify. This is especially true when you’re trusting your onboarding funnel to another service. Digits offers two analytics options:

  • Default - Just install Answers in your app and see login rates, common errors and other metrics.
  • Advanced - Use our SDK’s logger methods to hook in your own analytics tools.

Default: Integration with Answers

By default, Digits logs events to stdout. If Digits detects Answers in your app, it will also log key Digits events to your Answers Dashboard. The following events are available out-of-the-box:

Authentication flow:

  • Digits Login Start
  • Digits Login Success
  • Digits Logout

Contacts flow:

  • Digits Contact Uploads
  • Digits Contact Match

Invites flow (Beta):

  • Digits-Invite-Sent
  • Digits-Invite-Converted

To calculate the conversion rate, you can compare the Digits Login Start (entrance into the Digits Authentication workflow) with Digits Logout Success (successful exit from the Digits Authentication workflow.) First, go to your Answers dashboard, and search for ‘Digits Login’ events (figure 1). For the following app, 2/2 users converted, meaning it has a 100% conversion rate.

../_images/answers_digits_events.png

figure 1: Digits Login events on Answers dashboard

You can also drill down into those events (figure 2) for more details about aggregated user attributes.

../_images/answers_conversion_rate.png

figure 2: Answers conversion rate

Advanced: Loggers

If you already have an analytics suite or you want to get more fine-grained analytics of your user’s activity within the Digits workflow, we recommend extending the Digits Event Logger.

We have provided com.digits.sdk.android.DefaultStdOutLogger as a guide to get you started. It simply logs all the Digits Events to stdout. Also note that our Answers integration uses the DigitsEventLogger as well. com.digits.sdk.android.DefaultAnswersLogger gives an example of how to integrate with an analytics provider. As in the DefaultAnswersLogger, you only need to implement methods for behavior you want to track - all other methods will be no-ops.

Once you have your logger interface, attach it to your Digits instance:

public class YourOwnLogger extends DigitsEventLogger {
  public void loginBegin(DigitsEventDetails digitsEventDetails){
     // ...
  }
}

final Digits digits = new Digits.Builder()
  .withDigitsEventLogger(new YourOwnLogger())
  .build();

Note

The logger is meant as an analytics and metrics-gathering tool - it is not designed to replace error handling or callback behavior and logger methods may be called on the main thread.