November 27, 2018

How Smartcar uses Segment for an improved developer experience

Emre Sonmez

Software Engineer

It’s always great to ship new features to your users — but you can’t know how these features are performing if you don’t know how your users are interacting with your product.

This is something we struggled with during the early days at Smartcar. We didn’t have a way of measuring how our users interacted with the new features we shipped.

Our product, an API for cars, lives in a space that is just emerging. The concept of building a mobile app that reads data from cars (e.g. the odometer) without any hardware is difficult to communicate. Vehicle owners are connecting their car to a mobile app (e.g. a mileage-based car insurance app) for the very first time. To make our product succeed, we needed to answer the following questions:

How can we iterate on the experience that we provide to app developers as well as to the vehicle owners using these apps? In other words, how can we know which of our recent product changes are working well and which ones aren’t?

As we were tackling this issue, we found hundreds of ways to track how users interact with our product. Our marketing team wanted to view data in Mixpanel, our business team wanted to send Intercom campaigns based on specific interactions, and our engineering team wanted to pipe user event data into Amazon S3 buckets. As a result, we had to answer yet another question:

What is the right tool to track user interactions? Is there a single tool that meets all of our team’s different needs?

“There must be!” was our answer to the latter question. At least until we could hire enough people to set up and maintain multiple integrations.

Luckily, we found Segment.

Why we use Segment

One integration, (basically) infinite destinations

When we collected and weighed different tools, we hesitated between:

  1. Using Mixpanel to track engagement, measure retention, and monitor our funnel
  2. Using Intercom to track events
  3. a) Integrating the Smartcar dashboard with Segment, b) connecting Segment with Mixpanel to track user behavior, and c) connecting Segment with Intercom to route Intercom interactions (like starting a chat) to Mixpanel, as well as to route user interactions from Mixpanel to Intercom.

Ultimately, we decided to use Segment (option 3), thanks to following advantages:

  • Segment is a single source of truth for user data. We can route this data anywhere — to Intercom, Mixpanel, and other Segment-supported integrations.
  • We can route data to Mixpanel, helping us understand our users’ behavior.
  • We can route data to Intercom, allowing us to intelligently message our users based on their behavior.
  • If we decide to switch tools (e.g. to use Keen or to migrate away from Mixpanel), we can easily do so without touching our dashboard code.
  • Segment can collect user data from multiple sources (Salesforce, MailChimp signups, Auth0, Smartcar dashboard, etc.).

In short, Segment lets us implement and maintain a single integration, while making it possible for all team members to use any analytics tool without additional engineering effort.

Now that we decided to use Segment, how did we end up using the tool on a day-to-day basis? How does Segment help Smartcar deliver a better experience to app developers and vehicle owners?

How we use Segment

A better experience for developers: eliminating friction in the Smartcar dashboard

At Smartcar, we’re constantly seeking to improve the “developer journey” by asking: “What are the biggest friction points in building an app using our API?”

When we redesigned the Smartcar dashboard not too long ago, we first wanted to understand what was lacking in our original iteration. We then wanted to use that information to drive our redesign. So, we added Segment to our original dashboard and tracked three core things (among many others):

  1. Which pieces of information a developer enters to register their application with Smartcar
  2. Where the developer clicks after registering their application
  3. The number of developers who create an account but then don’t register an application

Feeding this data into Mixpanel, we realized the following:

  • A large percentage of users did not register an application after creating an account. We followed up with these developers and many of them said that they were confused about the information they had to provide in the app registration step (e.g. an “application name” and “redirect URIs”).
  • We didn’t have any buttons to direct users to next steps after registering an application.

Thanks to those insights, we knew to redesign our dashboard in the following way: When you create an account, we automatically create an application for you and provide links to resources that can help you get started (e.g. running demo app). We also managed to reduce the number of clicks it takes developers to run our demo app from over ten clicks to four.

The redesigned Smartcar dashboard

By adding Mixpanel and Intercom as destinations, our engineering team can now keep tabs on how developers are interacting with our redesigned dashboard, while our marketing team can use events to send timely emails to developers (for example, messages that are tailored towards how many apps a developer has built or which SDKs they used).

A better experience for app users: anonymous users in the Smartcar auth flow

Creating a better experience for app developers is important to us, but we also want to improve the user experience for consumers. In any app that uses Smartcar, the consumer will go through the Smartcar authorization flow. During this auth flow, the consumer authorizes the app to access their vehicle, by:

  1. Selecting their vehicle’s brand.
  2. Entering their car credentials (e.g. their email and password for the Tesla app or the Volkswagen Car-Net app).
  3. Approving or denying a list of permissions that the app is requesting (e.g. “read odometer”).

As users proceed through this flow, our team wanted to monitor the following:

  • How many people start the authorization flow but either fail to successfully authenticate their vehicle (i.e. successfully enter their car credentials) or fail to accept the requested permissions?
  • How many people have cars that are not supported by Smartcar (i.e. outdated vehicles that aren’t connected to the internet)? What are the makes and models of these cars?
  • Do certain vehicle owners have an easier time navigating through our authorization flow than others?

Before using Segment, we couldn’t monitor those things and had to rely on qualitative feedback from friends and developers. We had no notion of how many people “dropped off” during the auth flow, and we had no way of telling whether the new features we added were producing positive results.

When we instrumented our authorization flow with Segment, we could track user interactions before they logged in — and then retroactively associate these events with the actual users after they signed in.

This means that we can now not only monitor the three metrics mentioned above, but we can also determine how many clicks it takes for a vehicle owner to successfully authenticate with us — and segment (pun intended 😊) this data based on the user’s traits (e.g. what car they own).

The Smartcar authorization flow.

Building a user-friendly API can be difficult — especially if you want to appeal to your users and their users. Thanks to Segment, we can focus on both areas in one go, and give our team the chance to measure and evaluate the things they feel are most important.


Smartcar is an API that allows mobile and web apps to access data from and send requests to cars (think “check odometer” or “unlock doors”) — across vehicle brands, hardware-free.

Want to take our API for a spin? Check out our docs and get started with our demo app! Have any questions or feedback? Shoot us an email! 🚀

Everything you need to know about car APIs. Delivered monthly.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.