[MUSIC PLAYING]
ANDREA WU: Hi, everyone.
I'm Andrea Wu, a developer relations engineer on Firebase,
which is Google's app development platform.
REKHA KUMAR: Hello.
I'm Rekha Kumar, a software engineer from the Firebase
personalization team at Google.
ANDREA WU: A lot of developers use Firebase
in the app development process.
And many use AdMob to show ads for driving app revenue.
A common issue is perhaps not making
as much revenue as expected.
And we're here today to walk through how AdMob with Firebase
can help optimize and increase app
revenue using Firebase Remote Config, specifically
personalization.
A developer hearing about that for the first time
might look something like this.
Ugh, I've worked so hard and for so long on this app.
But I don't know how to make more money from it.
I'm going to take a break and eat some chocolate and ice
cream.
REKHA KUMAR: Oh, hey, Andrea.
Having a rough day?
ANDREA WU: Yeah, I just looked at my revenue
over the last year for this app that I made,
and the data is really depressing.
I basically haven't really made a lot from it,
and I've tried different strategies already.
But whatever I'm trying just doesn't seem to be working.
REKHA KUMAR: Hmm.
What does your app do?
What have you tried?
ANDREA WU: I really like the outdoors,
so I made this app with Firebase to help
people track their outdoor activities
and share it with their friends.
I use ads to generate revenue.
But I'm having a hard time knowing
where to put these ads in my app and how often to show them
so users don't just leave the app out of annoyance.
REKHA KUMAR: Hmm.
Have you tried different ad positioning or different ad
frequencies?
ANDREA WU: I have.
I've tried different ad positions using A/B testing.
But I haven't invested too much time into it.
REKHA KUMAR: Can you tell me more
about how you're using ads?
ANDREA WU: Sure.
I'm using AdMob for displaying ads,
and I thought it would be a good way
to show ads on banners, interstitials, and videos,
as well as native ads.
It's connected to networks all around the world
and helps me optimize for ads that pay me the most.
REKHA KUMAR: So what I'm hearing is you're using Firebase
and you're using AdMob.
Did you know you could use them together?
ANDREA WU: Hmm.
Well, what do you mean by that?
REKHA KUMAR: Well, AdMob can collect some basic metrics
that you can also view in the Firebase console as a start.
This requires linking your Firebase project and the app
that you configured in the AdMob console.
Where the integration gets even better
is if you use the Firebase SDK for Google Analytics,
you can then use some more Firebase products
to drive app revenue.
ANDREA WU: What Firebase products would you recommend?
REKHA KUMAR: You can use Firebase Remote Config.
It works really well with AdMob and Google Analytics.
ANDREA WU: Oh, cool.
I actually already use Remote Config to control and change
the behavior and appearance of my app
without needing to release a new version every time
I change my code.
I really like that I don't have to set up
any complicated and time-consuming infrastructure
to do any of that.
REKHA KUMAR: Nice.
What have you used it for so far?
ANDREA WU: Well, I've used it to implement feature flags
for when I'm developing new features.
And I used it to A/B test where to put these ads in my app.
It has also been really helpful for when
I want to give custom experiences for different user
segments.
REKHA KUMAR: These are some great ways
to use Remote Config.
Have you heard of personalization?
ANDREA WU: Yeah.
I heard about it last year and I've
seen it somewhere in Remote Config on Firebase console.
But I don't really know much more beyond that.
Can you tell me more?
REKHA KUMAR: Sure.
Personalization can help select the optimal user experience
and maximize the metric that you are interested in.
ANDREA WU: That sounds really awesome.
How does it know which alternative to provide?
REKHA KUMAR: Magic.
Just kidding, sort of.
It uses machine learning to suggest the optimal choice
at that time to each user based on their past app behavior.
ANDREA WU: It does really sound like magic.
But it also sounds like A/B testing.
Are they different?
REKHA KUMAR: I'm glad you asked.
There are a lot of similarities between personalization and A/B
testing, but they are definitely different.
In A/B testing, you would run an A/B test to figure out
the optimal option for the entire target audience,
whereas in personalization, each user may
get a different experience based on their past app behavior.
There's a video with more details
if you'd like to check that out.
ANDREA WU: Amazing.
Thanks.
So going back to my ad revenue problem,
how would I use personalization?
REKHA KUMAR: One way to increase ad revenue
is to have more ad clicks.
For example, you could use personalization
to serve ads at different frequencies.
Personalization in the background
will try to figure out which ad frequency will
result in the most ad clicks for each of your users.
ANDREA WU: Sounds interesting.
I'd love to try it out.
Do you mind helping me set up personalization?
REKHA KUMAR: Sure.
Let's open the Firebase console and pick your project.
ANDREA WU: Will do.
What should I do from here?
REKHA KUMAR: Go to Remote Config.
And there's that Add Parameter button over there on the right.
Let's click on that.
ANDREA WU: Ah.
So this is actually the same as adding any other parameter.
So I already know how to do that.
I'm going to name my parameter ad_frequency, and maybe
add a description of "Optimizing ad revenue based
on ad frequency."
REKHA KUMAR: Looks good.
Next, we'll want to click on that Add New
button near the bottom and click on Personalization.
ANDREA WU: Oh, neat.
It opens up another panel for me to fill out some fields.
REKHA KUMAR: First, let's figure out
what different ad frequencies you would like.
You can have up to five of those.
ANDREA WU: OK, so I guess I'll try four frequencies for now--
five minutes, 10 minutes, 15, and 20.
REKHA KUMAR: Great.
Next, we'll have to select the objective.
This is the metric that personalization
is going to try to maximize.
ANDREA WU: I see ad clicks here, which
is what I want to maximize in my case.
What if I want to optimize a metric that isn't one
of these two predefined ones?
REKHA KUMAR: Great question.
You can add custom events as an objective.
Just type the event name that you want to use.
Remember, you need to trigger these events later
from your app.
ANDREA WU: OK.
What about these additional metrics over here?
What's that?
REKHA KUMAR: These are metrics that don't affect values
[INAUDIBLE] by personalization.
It is just for helping you track additional metrics.
ANDREA WU: Ah.
So as mentioned earlier, I'm always
worried about whether users will stop using my app
if I show more ads.
Could I use these additional metrics
to gain some insight into this?
REKHA KUMAR: Absolutely.
In your case, user engagement time
would be a good one to track.
ANDREA WU: I'll go ahead and select user engagement time,
then.
Next, it seems like I need to choose
the group of users who will get these personalized values.
REKHA KUMAR: That's right.
It's important to note that a portion of the chosen user
group will be reserved for baseline,
or what we think of as control group of users.
These users will get random values and not personalized
values.
This will enable us to measure how personalization performed
compared to the baseline.
ANDREA WU: All righty.
I'll try this out on all of my Android users first.
And if that works, I'll try it on my other users later.
I'll create a new condition as usual in Remote Config,
and I'll give it a name.
I'll pick Platform and Android to choose my user segment.
So now it looks like I'm done creating the condition.
And after I save it, I see it in this Personalization panel.
REKHA KUMAR: Yep, we filled out all the steps
for personalization.
So you can go ahead and save it.
ANDREA WU: Looks like the personalized parameter I just
created is showing up here.
Do I need to give it a default value?
REKHA KUMAR: Yes.
I suggest you give the default value
that you're most comfortable with
for your non-Android users.
ANDREA WU: Hmm.
I'll give it a default value of, let's say, 15 minutes, then.
So now I'll save the parameter and publish the template.
Like other Remote Config parameters,
these values can be used right away in my app, right?
REKHA KUMAR: Yes.
You can start serving these personalized values right away,
but the algorithm does take some time
to learn the optimal option for each user.
Now that we've completed the setup,
do you want to update your app code to use these values?
ANDREA WU: I was just about to say that.
So let's take a look at my Android app.
Since I've been using other Firebase products,
I already have the Firebase SDK installed.
How should I get the personalized values
for my ad frequency parameter?
REKHA KUMAR: It's actually the same
as getting the parameter values that you've already been
using so far in Remote Config.
ANDREA WU: Makes sense.
So normally, I create the singleton remote_config object,
which is used to store parameter values.
And in this case, I'll get the value
of the ad_frequency parameter.
REKHA KUMAR: Yes.
That will give you the personalized value
for each user.
So every user is going to see ads with a different frequency.
ANDREA WU: I remember we also set up an additional metric
to see how often users' engagement
time changes as a result of this ad frequency.
Do I need to do anything with that?
REKHA KUMAR: In this case, user engagement is already
tracked with Google Analytics.
So you don't really need to do anything,
ANDREA WU: Hmm.
Sounds good.
Is that it?
Is there anything else I need to do?
REKHA KUMAR: That's it in this case.
But if you'd picked a custom event
for your objective metric or additional metric,
you would need to fire those events in your code.
ANDREA WU: I see.
So it seems like the code setup is done.
REKHA KUMAR: Yes.
Personalization will start serving values immediately,
but it'll take some time to figure out the optimal ad
frequency for each user.
Let's check the results in a couple of weeks.
ANDREA WU: All righty.
So by now, personalization should have some results.
REKHA KUMAR: Hopefully.
We can go back into the Remote Config console
and check out how personalization is performing.
Look for the ad_frequency parameter and click on it.
It'll show the results page with the metrics.
ANDREA WU: Wow.
This graph is really cool.
It compares my baseline users, who
I remember you saying get a random value,
versus those who experience the app using personalization.
Seems like personalization here is working pretty well, then,
as the line for personalization is above the baseline,
and there's a positive number here for the lift.
REKHA KUMAR: Right on.
Note that the baseline group is much smaller
than the personalization group.
So the results in the baseline group
are scaled up, making the numbers comparable to calculate
the total lift.
There's also that User Engagement button over there.
And if you want to click on that,
we can see how user engagement time is impacted.
ANDREA WU: Hmm.
Looks like good news here, too.
User engagement time doesn't seem
to be impacted when I'm optimizing for ad clicks.
Phew.
REKHA KUMAR: Yay.
ANDREA WU: Thanks so much for your help.
Personalization does seem really helpful for increasing my app
revenue, and I'm excited to use it more to see
how else it can help in my app.
REKHA KUMAR: Personalization can be used for much more than just
driving app revenue.
It can be used for personalizing any other app experience,
like game difficulty, the right time
to remind the user to rate your app,
or to update color schemes.
ANDREA WU: To get started with personalization
and Remote Config, check out links in the description.
Happy personalizing.
REKHA KUMAR: Happy personalizing.
[MUSIC PLAYING]