Google Historical Import
Importing historical Google Play transactions into RevenueCat
Doing a Google historical import overcomes some limitations of the Play Store receipts and allows RevenueCat to ingest subscription history dating back to January 2020.
When migrating to RevenueCat, whether by forwarding your receipt or installing the SDK, your Google Play subscription history may be incomplete, because Google does not provide status information for purchase tokens that have expired more than 90 days ago, and for newer tokens, Google only provides the current state, not the history.
By combining your migration with Google Historical Imports, RevenueCat will be able to fill in the gaps in your subscription history.
Prerequisites
Before you request a Google Historical Import, confirm you have:
- An existing Play Store app with Google Play purchases
- At least 1 project with 1 Play Store app in RevenueCat
- Your Google Play package name uploaded in your RevenueCat Play Store app settings
- Google service credentials uploaded for that Play Store app, including the Play Console permission View financial data, orders, and cancellation survey responses
- Google Real-Time Developer Notifications enabled
You don't need to export or attach sales report files yourself. After you add the bucket ID below, RevenueCat pulls the reports directly from Google Cloud Storage. Critically, you must grant Financial Access to RevenueCat so we can read your sales reports.
If your Play Console developer account recently changed ownership, use the credentials and bucket ID from the account that currently owns the app and still shows the Estimated sales reports you want imported.
Setup
1. Retrieve your bucket ID
Google stores Play financial reports in a private Cloud Storage bucket for your developer account. Follow Google's Download and export monthly reports help article if any label below differs in your console.
-
Open Google Play Console.
-
In the left menu, open Download reports, then select Financial. Financial reports cover estimated sales, earnings, and related report types for all apps on the account. You don't need to pick a single app for this step.
-
Next to the Estimated sales reports section header, select Copy Cloud Storage URI.
-
From the copied URI, keep only the bucket ID. Don't include the
gs://prefix or any path after the bucket ID (such as/sales).Google documents URIs that begin with
pubsite_prod_rev_(for example,gs://pubsite_prod_rev_01234567890987654321/sales→pubsite_prod_rev_01234567890987654321). Some accounts usepubsite_prod_withoutrev.
2. Upload your bucket ID to RevenueCat
- In the RevenueCat dashboard, open your project.
- In the lower-left corner, select Apps, and select your Play Store app.
- Expand Financial reports bucket ID, and fill in Play Store Financial Reports Bucket ID with the bucket ID from the previous step.
- Select Save Changes.
3. Contact us
- New customers: If you have any questions about migrating to RevenueCat, feel free to contact sales to see how we can help with the process.
- Existing customers: If you are interested in a one-time import of your historical Google Play data, reach out to RevenueCat Support via the dashboard Contact Us form in your account settings.
If you have a mapping of Google Play order IDs (or purchase tokens) to your App User IDs, attach it to your request as a CSV file with two columns: app_user_id and order_id (or app_user_id and purchase_token). We use it to attribute the imported transactions to your existing customers instead of generating anonymous IDs. Don't attach Play Console sales report exports — RevenueCat reads those from your bucket.
Limitations
Google Historical Imports pulls information directly from Google Play's sales reports. Though unlikely, these sales reports may contain incomplete information, leading to an incomplete data import.
App User IDs
For Google Play purchases that RevenueCat is not already tracking, we will generate transactions with a RevenueCat anonymous ID. To attribute these transactions to your existing App User IDs instead, include an order ID mapping when you contact us.
Event Data
RevenueCat will not dispatch any third-party integration events for historical transactions generated from this import.
Google Historical Imports will not detect the following:
- Billing issues
- Partial refunds
- Auto renewal status
- Expiration reason will be
UNKNOWN_DUE_TO_IMPORT
Charts
- Active Subscriptions Movement: This chart may not be accurate because our count of 'Churned Actives' may be incomplete.
- Initial Conversion, Conversion to Paying, Trial Conversion, and Realized LTV per customer: These charts may not be accurate because our count of "New Customers" may be incomplete, leading to conversion rates being incomplete.