Extend Firebase Analytics with Cloud Functions

Firebase Analytics provides event reports that help you understand how users interact with your app. With Cloud Functions, you can access conversion events you have logged and trigger functions based on those events.

Trigger a Firebase Analytics function

Cloud Functions supports the Firebase Analytics AnalyticsEvent. This event is triggered whenever user activity generates a conversion event. For example, you could write a function that triggers when the in_app_purchase event is generated, indicating that an in-app purchase has occurred. You must specify the Analytics event that you want to trigger your function using the functions.analytics.event() method, and handle the event within the onLog() event handler:

exports.sendCouponOnPurchase = functions.analytics.event('in_app_purchase').onLog(event => {
  // ...
});

Access event attributes

With each Analytics event, you have access to all relevant parameters and user properties. These include information about the user, the device, the app, and geographical information for the event. For the complete list of parameters and user properties, see the functions.analytics reference.

For a purchase-triggered function as illustrated in this sample, you might want to access user attributes such as the user's language and the event's value (valueInUSD). This second attribute allows the sample function to test whether this is a high-value conversion event, in order to send a higher-value coupon to valuable customers.

/**
 * After a user has completed a purchase. Send them a coupon via FCM valid on their next purchase.
 */
exports.sendCouponOnPurchase = functions.analytics.event('in_app_purchase').onLog(event => {
  const user = event.data.user;
  const uid = user.userId; // The user ID set via the setUserId API.
  const purchaseValue = event.data.valueInUSD; // Amount of the purchase in USD.
  const userLanguage = user.deviceInfo.userDefaultLanguage; // The user language in language-country format.

  // For purchases above 500 USD we send a coupon of higher value.
  if (purchaseValue > 500) {
    return sendHighValueCouponViaFCM(uid, userLanguage);
  }
  return sendCouponViaFCM(uid, userLanguage);
});

Next steps

To learn more about handling Analytics events in Cloud Functions, see the Firebase Analytics documentation and the functions.analytics reference, and try running the code sample coupon-on-purchase.

Send feedback about...

Need help? Visit our support page.