Thanks for previewing Google's new tag platform documentation! This site is in public beta. (Feedback)

Google Tag Manager + Firebase for Android

Developers can use the Google Tag Manager interface to implement and manage measurement tags and pixels in their mobile applications, without having to rebuild and resubmit application binaries to app marketplaces. Developers who work with Firebase Analytics can easily add Tag Manager to help manage and make changes to the implementation, even after the app has shipped.

Developers can log important events, and decide later which tracking tags or pixels should be fired.


Before getting started:

The following section walks you through the steps to configure and use Google Tag manager in your Android application.

1. Add Google Tag Manager to your project

  1. In your module Gradle file (usually app/build.gradle), add the following dependency on the Tag Manager library:

    dependencies {
      // ...
      compile ''
  2. Sign in to your Tag Manager account.

  3. Select a mobile container.

  4. Click Versions in the top navigation bar.

  5. Click Actions > Download on the selected container version.

    download a container

  6. Create the app/src/main/assets/containers folder if it doesn't exist. Copy the downloaded container to the folder.

2. Log events and variables

Tag Manager uses Firebase Analytics' events, parameters, and user properties to trigger and build tags you've configured in the Google Tag Manager web interface. In this sense, your Firebase Analytics implementation acts as your data layer.

Read the Firebase Analytics Developer Documentation for instructions on logging events and setting user properties.

Configure variables in Tag Manager

To capture the value of Firebase event parameters and user properties for use in Google Tag Manager, you can configure variables in the Tag Manager interface.

For example, if you logged the following custom event in your app:

Bundle params = new Bundle();
params.putString("image_name", name);
params.putString("full_text", text);
mFirebaseAnalytics.logEvent("share_image", params);

you could configure new Event Parameter variables in Tag Manager to capture the image_name and full_text parameter values:

  • Variable Name: Image Name
  • Variable Type: Event Parameter
  • Event Parameter Key Name: image_name


  • Variable Name: Full Text
  • Variable Type: Event Parameter
  • Event Parameter Key Name: full_text

Similarly, if you were setting the following user property in your app:

mFirebaseAnalytics.setUserProperty("favorite_food", mFavoriteFood);

you could configure a new Firebase User Property variable in Google Tag Manager to capture the favorite_food value:

  • Variable Name: Favorite Food
  • Variable Type: Firebase User Property
  • Event Parameter Key Name: favorite_food

Modify and block Firebase Analytics events

Tag Manager enables you to modify and block events before they are logged in Firebase Analytics. Modifying events can help you—without app updates—to add, remove, or change the values of event parameters or adjust event names. Events that are not blocked will be logged in Firebase Analytics.

Firebase Analytics also automatically logs some events and user properties; you don't need to add any code to enable them. These automatically collected events and properties can be used in Tag Manager, but cannot be blocked.

3. Fire tags

Firebase event name variables, Firebase event parameter variables, and other variables are used to set up triggers. Trigger conditions are evaluated whenever you log a Firebase event. By default, Firebase Analytics events automatically fire. It is possible to add a Firebase Analytics tag in Tag Manager to block events from being sent to Firebase Analytics.

4. Preview, debug, and publish your container

Before publishing a version of your container, you'll want to preview it to make sure it works as intended. Google Tag Manager gives you the ability to preview versions of your container by generating links and QR codes in the web interface and using them to open your application. You can also enable a verbose logging mode to debug any unexpected behavior.

Preview container

Before previewing a container, generate a preview URL in the Google Tag Manager web interface by selecting the version of the container you'd like to preview, and then selecting Preview. Save this preview URL for later steps.

Preview URLs are available in the  preview window of the Tag
           Manager web interface
Figure 1: Get a preview URL from the Tag Manager web interface.

To preview your container (if you use Android Studio, skip to step 3):

  1. Add this preview activity to your AndroidManifest file:

    <!--  Add preview activity. -->
      android:noHistory="true"> <!-- optional, removes previewActivity from activity stack. -->
        <data android:scheme="" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE"/>
  2. Change this line to include your application's package name:

    <data android:scheme=""/>
  3. In the Google Tag Manager web interface, generate a preview link:

    1. Sign in to your Tag Manager account.
    2. Select a mobile container.
    3. Click Versions in the top navigation bar.
    4. Click Actions > Preview on the container version you'd like to preview.
    5. Enter your application's package name.
    6. Click Generate begin preview link.
  4. Stop your application and use the generated preview link or QR Code to launch your application.

  5. You can exit the preview mode by clicking a link generated by the Generate end preview link option in the web interface.

Debug container

To troubleshoot your container implementation, enable verbose logging:

$ adb shell setprop log.tag.GoogleTagManager VERBOSE

Publish container

After you preview your container and verify that it is working, you can publish it. After you have published your container, your tag configurations will become available to mobile app users.

Next steps

Read Advanced configuration.