Growth Engineering at Netflix — Accelerating Innovation

Netflix Technology Blog
Netflix TechBlog
Published in
6 min readJun 18, 2018

--

by Eric Eiswerth

Millions of people visit Netflix every day. Many of them are already Netflix members, looking to enjoy their favorite movies and TV shows, and we work hard to ensure they have a great experience. Others are not yet members, and are looking to better understand our service before signing up.

These prospective members arrive from over 190 countries around the world, and each person arrives with a different set of preferences and intentions. Perhaps they want to see what all the buzz is about and learn what Netflix is, or perhaps they already know what Netflix is and can’t wait to sign up and try out the service. Marketing, social, PR, and word of mouth all help to create awareness and convert that into demand. Growth Engineering collects this demand by helping people sign up, while optimizing for key business metrics such as conversion rate, retention, revenue, etc. We do this by building, maintaining, and operating the backend services that support the signup and login flows that work across mobile phones, tablets, computers and connected televisions.

Let’s take a look at what the Netflix sign up experience looks like for two different customers in two different parts of the world, each with different device types and payment methods. Barb is signing up on a set-top-box (STB) device in the United States and prefers to have her billing done through her cable provider. While Riko is signing up on an iPhone 7 in Japan and prefers to use a credit card.

The customer experience is remarkably different in each of these cases, but the goal is the same. We seek to offer the best possible signup experience to our prospective members while at the same time, remaining extremely lean, agile and efficient in our implementation of these disparate experiences.

Offering an amazing signup experience for thousands of devices in over 190 countries is an incredibly challenging and rewarding task.

The Signup Funnel

The signup funnel is where demand is collected. In general, the signup funnel consists of four parts:

  1. Landing — Welcomes new users and highlights the Netflix value propositions
  2. Plan selection — Highlights our plans and how they differ
  3. Registration — Enables account creation
  4. Payment — Presents payment options and accepts payment

In the signup funnel, we have a short time to get to know our users and we want to help them sign up as efficiently and effectively as possible. How do we know if we’re succeeding at meeting these goals? We experiment constantly. We use A/B testing in order to learn and improve how users navigate the signup funnel. This enables Growth Engineering to be a lean team that has a tremendous and measurable impact on the business.

Why experiment on the signup funnel?

Every visit to the signup funnel is an opportunity to improve the experience for visitors wanting to learn more about Netflix. We’ve learned from experimentation that different customers have different needs and expectations.

Using a TV remote control to navigate the signup flow can be an onerous and time-consuming task. E.g. by leveraging our partnerships, we are able to offer a signup experience with almost no use of the remote control keypad. This enables us to offer a simple and convenient signup experience with integrated billing. The end result is a lower friction signup flow that has improved user experience and business metrics.

Browsers offer additional conveniences that can be leveraged. In particular, local payment options (e.g. paying using direct debit or local credit cards) and browser autofill enable us to offer an optimized signup experience that lets customers sign up for Netflix and start watching great content in just a few minutes.

As these examples highlight, there are many attributes that can be used to optimize a particular flow. By experimenting with different partnerships, payment methods, and user experiences, we are able to affect the membership base growth rate and ultimately, revenue.

How do we experiment on our signup funnel?

Growth Engineering owns the business logic and protocols that allow our UI partners to build lightweight and flexible applications for almost any platform (e.g., iOS, Android, Smart TVs, browsers). Our services speak a custom JSON protocol over HTTP. The protocol is stateless and offers a minimal set of primitives and conventions that enable rapid development of features on almost any platform.

Before diving into core concepts, it’s useful to see where Growth Engineering’s services live within the Netflix microservice ecosystem. Typically, these microservices are implemented in Java and are deployed to AWS on EC2 virtual machines.

Growth Engineering owns multiple services that each provide a specific function to the signup funnel. The Orchestration Service is responsible for validating upstream requests, orchestrating calls to downstream services, and composing JSON responses during a signup flow. We assume requests will fail and use libraries like Hystrix to ensure we are latency and fault tolerant. This enables our customers to have an extremely resilient and reliable sign up experience.

The anatomy of a signup — a closer look

Let’s walk through what it looks like to register for Netflix with a partner-integrated STB device.

Step 1: Request the registration page

The green diamonds and arrows show a successful request path for the registration page.

Step 2: JSON response

{
"flow": "tv",
"mode": "registration",
"fields": {
"firstName": {
"type": "String"
},
"lastName": {
"type": "String"
},
"email": {
"type": "String"
},
"password": {
"type": "String"
},
"nextAction": {
"type": "Action"
"withFields": [
"firstName",
"lastName",
"email",
"password"
]
},
"backAction" {
"type": "Action"
}
}
}

The UI can then interpret this response accordingly and render a UI as such:

Step 3: Send form details to the server and create an account

{
"flow": "tv",
"mode": "registration",
"action": "nextAction",
"fields": {
"firstName": {
"value": "Barb"
},
"lastName": {
"value": "Holland"
},
"email": {
"value": "barbholland@netflix.com"
},
"password": {
"value": "demogorgon"
}
}
}

Step 4: JSON Response

{
"flow": "tv",
"mode": "pin",
"fields": {
"pin": {
"value": "String"
},
"nextAction": {
"type": "Action",
"withFields": [
"pin"
]
},
"backAction": {
"type": "Action"
}
}
}

As you can see, there is a lot of complexity abstracted away in a simple attempt to register for Netflix. In general, processing a request consists of 3 steps:

  1. Validate the request and retrieve necessary state. In this step we check if the request is valid as per the JSON protocol contract. If so, then we hydrate the context object with additional state.
  2. The fully-hydrated context object is then passed to the state machine, which will determine where to take the user next.
  3. JSON response composition. In this final step, we use the context object and the decision from the state machine to compose a response that the UI can consume.

The JSON protocol also enables Growth Engineering to be a source of truth for all events pertaining to the signup funnel. This enables us to centrally collect and monitor all the core sign up related business metrics, thus enabling us to be nimble day-to-day.

What’s next?

As the stewards of the business logic for the signup funnel, Growth Engineering has an incredibly important role at Netflix. Our work directly affects the membership growth rate and as a result, directly impacts Netflix revenue. Although Netflix is more than two years into our journey as a fully global entertainment company, we are only just beginning to understand many of the complicated and intricate consumer preferences that will inform the next set of experiments aimed at improving the signup funnel. We are just beginning to unlock user experience improvements in our international markets.

Netflix has over 125 million members worldwide. The number of global broadband households is over 1 billion and the number of daily internet users is over 4 billion. Growth Engineering is key to making Netflix more accessible for people around the world. Join our team and help us shape the future of global customer acquisition at Netflix.

--

--

Learn more about how Netflix designs, builds, and operates our systems and engineering organizations