JON MENSING: Hello.
I'm Jon Mensing, product manager for Firebase Remote Config,
or RC for short.
Remote Config, as the name suggests,
allows you to configure your app without performing a release.
RC gives you visibility and control
over your app configuration so you can optimize your app.
It can be used to manage feature flags,
create targeted configurations for specific users,
run A/B tests, and much more.
Today, I'm happy to share with you a great new feature of RC
that can help app developers like you personalize
your apps to create more engaging experiences.
You're probably already familiar with A/B testing.
A/B testing is a process of splitting your user
base into distinct groups, giving each group
a different experience, and measuring the results to see
which experience is best.
A/B testing is a great tool for finding
experiences that are best for the target group as a whole.
But what if you could find the best experience for each
of your users individually?
And what if you could do this automatically
without the need to structure, analyze,
and roll out an A/B test?
Well, now you can thanks to the launch
of our new personalization feature in RC.
Personalization works by predicting the best experience
for each of your app users and assigning each user
to the experience that is expected to work best.
Personalization is especially powerful
when different users will benefit
from different experiences.
Let's take a walk through the new feature
to see how it works.
As you can see, I'm in the Firebase console,
and I'm looking at my Remote Config setup
for my game, Bingo Blast Here, I can
see the various RC parameters that
are controlling different app experiences
as well as the conditional logic that sets alternative values.
I can use this page to configure all sorts of interesting app
behaviors.
Let's zoom in now to this parameter, ratings
prompt min completions, which controls the placement
of my play store rating prompt.
I want to show my ratings prompt at the right time
to maximize my ratings.
Unfortunately, I don't know exactly when
I need to show the prompt in order to make this happen.
If I show the ratings prompt as early as possible,
it will be seen by the maximum number of people.
But they might not have experienced enough of my game
to feel inclined to rate.
On the other hand, I can show the ratings prompt deeper
in the game, which could mean that fewer people see
the prompt, but they may be more inclined to give me a rating.
In either case, I definitely don't
want to hurt user engagement with a poorly placed ratings
prompt.
I think that the optimal placement might actually be
different for different users.
Some users may be ready to rate really quickly,
while others may need a little more time to get into the game.
Ideally, I'd like to predict the best ratings prompt location
for each user and show it then.
And that's where personalization comes in.
To personalize a parameter, I start
by clicking this Edit icon.
And now we can see the parameter details,
including the parameter name, description, and default value.
This parameter sets the placement of the ratings
prompt.
And we can set it to display the prompt
after the user successfully completes any number of levels.
Right now, it's set to display after the user successfully
completes their third level.
Now I'm going to personalize this parameter.
So I'll click on Add New and choose Personalization.
This opens up the dialogue where I can set up my personalization
details.
The top section is where I can put different alternatives
that I want to try for the ratings prompt.
I'd like to try a big range of different values
that might possibly work.
I'll enter in 1, 4, and 8 levels to ensure
that there is a big enough range to make a difference.
That means a user might see the ratings prompt after 1, 4,
or 8 successful level completions,
depending on which one is predicted to work best.
Next, I need to select my objective.
For this personalization, I want to maximize the number
of ratings I receive.
So I will select the Review Dialog Accepted Event
as my objective.
I'm also interested in what happens to user engagement,
but I don't want it to actually drive the optimization
algorithm.
I just want to see what happens with the various options.
So I'll set up User Engagement Time as an additional metric
to view later when I'm looking at the results.
Next, I can set up the targeting conditions
for this personalization.
Since the Play Store ratings prompt applies only
to my Android app, I'm going to target my Android app
users for this personalization.
So I'll click on Create New Condition,
name this condition Android App, and have it applied
to my Android app users.
OK.
So this is all ready to go now.
To start running the personalization,
I need to first click Save on this dialog, Update
to save the changes to this parameter,
and finally, Publish Changes to start personalizing.
At this point, my personalization
will get to work by trying the different alternative values
for the ratings prompt with different app users.
The personalization system will scan my Google Analytics events
to keep track of which users receive
the different alternatives and measure
how many times the rating prompt received a positive response.
Over time, the algorithm will learn which alternatives tend
to produce the best outcomes.
And it will also start to take into account user
characteristics when choosing between the alternatives.
After about seven days, the personalization
should be working at maximum effectiveness.
Let's fast forward to that point to look
at the results of the personalization.
So we are back on the Remote Config Parameter List view.
Looking again at the ratings prompt parameter,
I can see that a personalization is active thanks
to the personalization icon.
I just need to click that icon to see the results.
Here we have the personalization results page.
It contains information about personalization performance.
Right at the top, we have a performance summary.
And I'm excited to see that personalization
is outperforming my baseline by 13%.
This section also contains information
about the personalization, so I can
remember when it was started and what
I was trying to accomplish.
The baseline is a group of randomly selected users that
don't get an optimized parameter value from the personalization
algorithm.
Instead, they get a random value from the alternatives
that I supplied earlier.
The baseline gives me a way to understand
what I'm gaining by personalizing this experience.
The baseline group is smaller than the personalized group,
so results for the baseline group
are scaled up to be comparable.
In the lower section, I can see a graph
that visualizes the overall performance difference
in successful review dialogue interactions
between the personalized group and the baseline.
I can see that the personalized group is outperforming
the baseline by 12.9% overall.
If I want to see how performance is trending over time,
I can select the daily option here to see a daily chart.
It looks like my performance started out slower but got
better as time went by.
That makes sense considering how the algorithm learns over time.
I can click at the top to switch between the overall objective
and secondary metrics that I'm interested in.
In this case, I can check to see that user engagement wasn't
affected by personalizing the ratings prompt.
And after clicking, I can see that user engagement is flat.
That's exactly what I was hoping for, so no concerns here.
One last thing I want to check is the breakdown
of the baseline values.
By clicking on this toggle at the bottom of the page,
I can see how each of the alternatives
fares individually.
It looks like there is some variation in performance
between the alternatives.
And the prompt appearing after 8 completions
outperforms all of the other baseline options.
But I can also see that this alternative is still not
as good as the personalized experience.
Showing the prompt at different times for different users
is the best strategy overall.
Now that I know my personalization is working,
I can keep it running indefinitely.
As time goes by, user behaviors might change,
but the personalization algorithm
will continue to learn and adjust,
always trying to maximize my objective.
If I want to, I can come back to this page
any time to check on performance.
For any given problem, it's possible
that personalization won't have that much of an impact.
That's OK.
If you notice that personalization isn't working,
you can always try different alternatives
or just cancel the personalization
and move on to the next problem.
The best thing about personalization
is that you can quickly try a lot of different things
and get great results without a lot of effort.
You can consider personalization for a lot of cases
when you might otherwise perform an A/B test.
For example, you can use personalization
to set game difficulty, to find the right discount percentages
for promotions, or to set rewards or frequencies
for video ads.
Considering the flexibility of Remote Config
to control nearly any aspect of your app's behavior,
the opportunities for personalization
are nearly endless.
If you're already using Firebase Remote Config,
you can start creating personalizations
today in the console.
And if you're not currently using RC,
you can find a link to full setup instructions
in the video description.
Thanks for listening and happy personalizing.