LogoLogo
HomeThe PlatformBlogSchedule a demo
  • Getting Started
    • Welcome to AdLibertas
  • The Platform
    • How it works
    • User-Level Audience Reporting
      • Creating Reports
        • Creating a New User Report
        • Creating Advanced User-Level Reports
        • Advanced Audience Builder
        • Custom Event Metrics
      • Report Layout
        • Report Module: Audience Filtering
        • Chart Type Module: Absolute vs. Relative Reports
        • Daily Totals, Per User, Cumulative Totals
        • Lifecycle Reports
        • Forecasting Module
        • Statistics Module
        • Measuring Confidence
      • Advanced Reporting Methods
        • User Measurement & Calculation Details
        • Date Ranges: Define Audience vs. Create Report
        • Exclude GAID tracking opt-outs
        • Scheduled Reports: Keep Updated & Rolling
        • Reporting on a Firebase AB test
        • Understanding “Audience Restraints”
        • Adding user time to your reports
    • Consolidated Revenue Reporting
      • Reporting Discrepancies
      • Reporting Availability & Timezones
      • Ad Network Re-Repost; Also: Revenue Reconciliation Accuracy
      • Consolidated Reporting vs. Consolidated Inventory Reporting
      • Reporting Table – Column Descriptions Common Metrics (Calculated Fields)
      • Facebook Reporting
      • Consolidated Ad Revenue with multiple mediators
    • Business Analytics
      • Analytics Layout
      • Understanding the "Explore Data" button
      • The Data Table
      • Asking a Question
      • Saving a Question
      • Creating a custom dimension
      • Setting up a pulse
    • Custom Dashboards
      • Custom Dashboard Filters
      • Combining data into a single chart
    • Direct SQL Access
    • Exporting Data
      • Ad Network Reports
      • Chart Reports
      • Custom API connections
      • Downloading & Scheduling Data Reports
      • Deprecated: Line Item Change Log
    • General
      • Change your Username & Password
      • Adding Users to your Account
      • Sharing Collaborative Links
      • AdLibertas Cost
  • Data Integrations
    • Connecting in 3 steps
    • Ad Impression-Level Revenue Connections
      • AppLovin Max User Revenue API
      • ironSource Ad Revenue Measurement Integration
      • Impression level tracking with Admob Mediation
      • Collecting MoPub Impression-Level Data as a Firebase Event
    • Ad Network & Store Connections
      • Adding Ad Network Credentials
      • How does App Store Reporting work?
      • Adding access to Google Play
      • Adding Sub User to App Store Connect
      • Getting the most from Ad Network Reports
    • Analytics Connections
      • Data Set Status
      • Connect AdLibertas to Firebase
      • Connecting AdLibertas to BigQuery
      • Firebase Install Counts in Audience Reporting
      • Setting User Campaigns in Firebase
      • Why use revenue to determine Firebase AB test winners?
      • Firebase Best Practices: keeping Google BigQuery Costs Down
    • Custom Integrations
      • Sending Events via Webhooks to AdLibertas
      • Impression level tracking with Admob Mediation
      • Connecting AdLibertas to BigQuery
      • Importing a custom data set
    • IAP Connections
      • Tracking IAP & Subscriptions in Firebase and BigQuery
      • RevenueCat Integration: WebHooks
      • RevenueCat: Setting Universal Identifiers
    • MMP Connections
      • Connecting Adjust
      • Connecting AppsFlyer
      • Connecting Kochava
  • FAQs
    • General
      • Why does AdLibertas need credentials?
    • Audience Reporting
      • Why doesn't my daily active user count match Firebase?
      • Why doesn’t my retention rate match?
      • Why aren't my install rates matching?
      • Why doesn't my relative user count match retention?
      • What is the probability projected LTV becomes actual LTV?
      • Why doesn’t Firebase and AdLibertas revenue match?
    • Reporting
      • What is “non_mopub” revenue
      • How do customers use AdLibertas?
  • Privacy & Security
    • Privacy & Security Details
Powered by GitBook
On this page
  • Tracking User-Level Events:
  • Tracking Aggregate Earnings
  1. Data Integrations
  2. IAP Connections

Tracking IAP & Subscriptions in Firebase and BigQuery

PreviousIAP ConnectionsNextRevenueCat Integration: WebHooks

Last updated 2 years ago

Tracking User-Level Events:

Most app developers who use Firebase rely on the default Automatically Generated Events for in-app purchase and subscription reporting. Unfortunately, it’s not always very accurate and there are cases where revenue is misreported or doesn’t match. We attempt to demystify how Google reports on in-app revenue.

By default, the product ID, product name, currency, and quantity are passed as parameters in an automatically generated in_app_purchase event. The revenue is reported is gross.

Google documentation on the in_app_purchase event:

For iOS apps, Firebase collects some events but doesn’t communicate or validate these purchases with the App Store– so events that are handled by the store will not be included. For IAP (Consumables) this generally is limited to trials or refunds. For subscriptions, this includes refunds and– critically– renewals. Therefore by default Firebase revenue may differ from values you see on the App Store.

When a user completes an in-app purchase, including an initial subscription, that is processed by the App Store on iTunes or by Google Play. Google Analytics supports automatic subscription tracking on Android and iOS.

This event is triggered only by versions of your app that include the Google Analytics for Firebase SDK. Note: paid-app purchase revenue and refunds (iOS only) are not automatically tracked.

Earlier in the same document, for the app_store_subscription_renew event, Google states:

When a paid subscription is renewed. This event is set as a default conversion. Requires an initial subscription that was made on or after July 1, 2019.

This event is not exported to BigQuery.

Tracking Aggregate Earnings

If you’d like to simply track aggregate IAP and Subscription spend earnings, you should pull directly from the store APIs. Which we do in our Revenue Dashboards.

For Android apps, the Firebase account .

Your reported revenue may differ from the values you see in the Google Play Developer Console. Events that are flagged as being invalid or as sandbox (test) are ignored. Only iOS events are flagged as sandbox. about testing Google Play billing.

An important note for those app developers who are exporting this data to make use elsewhere: when exported to BigQuery, the price remains in the local currency. This is why we convert purchases from local currency to USD using for that day and report all data in GMT.

Ostensibly this suggests Firebase does track Google Play events — and makes this available in Google Analytics but doesn’t enable this data to be exported to Google BigQuery. There are three workarounds: use a third-party receipt validation service like , build your own validation service and share events using a or overload the in_app_purchase event with your own renewal event.

must be connected with Google Play
Learn more
Google documentation
Open Exchange Rates
Google documentation
RevenueCat
custom webhook,
Above is a demo version of our App Revenue Overview, that tracks all revenue earned from your app. Regardless of source.
See more about connecting data sources