Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to define an experiment for first time users in Firebase?

I am trying to create an experiment using Firebase remote config. The criteria is as follows: It should target only new users who have not used the app ( opening the app for the first time)

Now on further research I found that there is a user property as below:

Automatically collected user Property by Firebase

However, this is not available in the experiment window or a similar property that fulfils the above criteria in the Firebase console as seen below:

enter image description here

I can only see the user properties set by my code. One way I can think of is to use one of my custom user property which is not yet set (but set to a value like null), but I don't know how I can do this.

References

https://support.google.com/firebase/answer/6317486?hl=en https://firebase.googleblog.com/2016/10/better-user-targeting-with-firebase.html

like image 495
sjmach Avatar asked Nov 23 '17 10:11

sjmach


People also ask

What is AB testing in firebase?

An A/B test is a powerful tool for a team working on a mobile application. It allows you to split your users into various groups and give a different version of your app to each one simultaneously, without external factors impacting one version more than another.

What is user property in firebase?

User properties are attributes you define to describe segments of your user base, such as language preference or geographic location. These can be used to define audiences for your app.


1 Answers

I will share our experience with experiments for new users and how the different combinations of targeting work because we worked with it a lot already. You can skip the investigation part if you're not interested and just check the solution that we use now.

Our Investigations Part: Firstly, when we integrated Firebase, we were afraid that Audiences won't work properly for experiments targeting cuz all current users will be treated as new ones after integration, so we checked several approaches and went with an approach of creating specific User Properties that we specified on the client side differently for old/new users. For instance, we created a User Property called adv_experiment_enrolled and specified on client side values 'enrolled'/'not_enrolled', so all new users after installation of this version became 'enrolled' and old ones after updating the version just became 'not_enrolled'. And we just used that User Property as targeting in an experiment. That worked well, but it wasn't a general approach that we could use easily for all experiments and we needed to create User Properties for each new experiment.

So we've tried the Audiences approach after few months of integration that was what @jackes described here with First Open Time user property: https://stackoverflow.com/a/50075684/2723437 And we've got several problems, first of all, seems they had some troubles with populating of that kind of audience and just ~3-5% of new users were getting there. We also created an Audience depending on First Open event itself and used it too, it was populating better and was close to the real number of installs that we had. But we've noticed problems with this approach as well and the biggest one was that an experiment had only 20-30% of users from that Audience. We tested it and noticed by some of our metrics that seems users are not enrolled in this experiment in their first session cuz 1) Firebase takes some time to enroll a user in the Audience and 2) Remote Config has 12h cache by default, so it wasn't really a data for most of the new installations.

A solution that seems to work well for now:
We were surprised with that Firebase does have User Property for First Open Time, but doesn't allow to use this as the targeting for experiments (It would be very helpful to solve this problem tbh), so we just decided to try our good experience with User Property targeting and apply the general approach First Open Time user property, so we've created our own custom_first_open_time especially to target installations after some specific time (we just used current timestamps for platforms in seconds).
Important notes:
- You have to set up user properties before loading a remote config.
- You have to keep this first open time on the client side persistently once you generated it (usually you use NSUserDefaults/SharedPreferences for iOS/Android for that)

Sample of experiment configuration:

enter image description here

like image 186
Peregreen Avatar answered Oct 16 '22 06:10

Peregreen