What kind of data we need
Prior to the program launch, wappier needs to receive and analyze granular data. This data will be used to finalize the scope of the program and identify the appropriate pricing optimizations to start the program with.
What we require before the launch of the program, is 12 months' worth of:
- Transaction Data
- Activity Data
Post launch, there is also an ongoing requirement for the same data to be sent, in order to be used for
(a) measuring the impact on monthly Average Revenue Per User (ARPU) and
(b) conduct further price point optimizations
The data sent to wappier post launch will need to be provided frequently (details described in next steps) to maximize the impact of the Program.
We request for both Android and iOS data to be provided, regardless of which platform we are looking to optimize. This is because we would like to leverage these as signals that we are incorporating in our program performance measurement (useful for indicative comparison signals).
Post launch, ongoing data is needed for SDK-less integrations only. SDK programs require only a one-time data dump of historical data (on an ongoing basis the SDK will be tracking all needed data).
Using an S3 Bucket
Transaction Data
All transaction events performed by users. It is required for the export to include transactions from the last 12 months and for the new daily files to include only incremental transactions. These should be saved under {bucket_name}/{app_name}/wappier_payment_data/ in .parquet or .orc format, partitioned by payment_date (YYYY-MM-DD).
For example:
Bucket1/App_1/wappier_payment_data/payment_date=2020-08-22/part-00018-565ff80f-fde6-45cc-90ba-decb3e52e88a.c000.snappy.parquet
Bucket1/App_1/wappier_payment_data/payment_date=2020-11-25/part-00018-565ff80f-fde6-45cc-90ba-decb123fdde2.c000.snappy.parquet
The columns should be structured in the following scheme:
- user_id (Mandatory) – user’s unique identifier
- platform (Mandatory) – The platform of the user. Possible values: android, ios or any other source in lowercase
- country_code (Mandatory) – ISO-2 country code of the user
- transaction_id (Mandatory) – A unique identifier for the in-app purchase (generated by Google/Apple)
- offer_id – A unique offer identifier that indicates which offer the user received when he completed the specific transaction
- SKU (Mandatory) – A unique product identifier, which is defined on your appStoreConnect/Google Developer Console
- currency (Mandatory) – The currency that the user payed into during the in-app purchase
- price (Mandatory) – revenue amount in user’s local currency (gross amount).The values of this column should change after the SKU prices change, following the new price currency_rate (Mandatory) – The exchange rate of the local_currency for that day compared to USD
- price_usd (Mandatory) – The revenue that the user spent in USD (gross amount).The values of this column should change after the SKU prices change, following the new price.
- timestamp (Mandatory) – The time in UTC that the transaction took place in YYYY-MM-DD HH24:MI:DD format.
When composing the datasets, please prefer sending all the columns described above using the suggested columns names. If you do not have values for a specific column/row, you can populate it with null values. Mandatory columns cannot contain null values.
Data sample:
user_id | platform | country_code | transaction_id | offer_id | SKU | currency | price | currency_rate | price_usd | timestamp |
---|---|---|---|---|---|---|---|---|---|---|
0d73ce70ad | android | US | GPA.1234-1234- 1234-12345 | Small Gold Pack | com.example.50gold | USD | 0.99 | 1 | 0.99 | 2020-08-22 12:31:11 |
381107e0d0 | android | FR | GPA.1234-1234-1234-54123 | Large Gold Pack | com.example.100gold | EUR | 1.49 | 1.17 | 1.75 | 2020-09-23 15:02:39 |
9d310031cc | iOS | AU | 100100165639019 | Bundle Mega Offer | com.example.bundle1 | AUD | 5.49 | 0.71 | 3.92 | 2020-10-24 17:18:21 |
8d679827bz | iOS | CN | 100100115830019 | Summer Offer | com.example.offer.2 | CNY | 71.99 | 0.15 | 10.60 | 2020-11-25 23:49:37 |
To prevent the AccessDeniedException
error when reading data from the S3 bucket, the datasets must be uploaded using the BucketOwnerFullControl
option. This is applicable for when the S3 bucket is created on wappier's side.
Activity Data
All active users that visit the app on a daily basis. It is required for the export to include daily data from the last 12 months and for the new daily files to include the users that opened the application at least once in that specific date.
These should be saved under {bucket_name}/{app_name}/wappier_active_users/ in .parquet or .orc format, partitioned by snapshot_date (YYYY-MM-DD).
For example:
```Bucket1/App_1/wappier_active_users/snapshot_date=2020-04-25/part-00018-565ff80f-fde6-45cc-90ba-decb3e52e88a.c000.snappy.parquet```
```Bucket1/App_1/wappier_active_users/snapshot_date=2020-04-26/part-00018-565ff80f-fde6-45cc-90ba-decb123fdde2.c000.snappy.parquet```
The Columns should be structured in the below scheme:
- user_id (Mandatory) – user’s unique identifier
- country_code (Mandatory) – ISO-2 country code of the user
- install_date – Installation date for the user in YYYY-MM-DD format
- platform (Mandatory) – The platform of the user. Possible values: android, ios or any other source in lowercase
When composing the datasets, please prefer sending all the columns described above using the suggested columns names. If you do not have values for a specific column/row, you can populate it with null values. Mandatory columns cannot contain null values.
user_id | country_code | install_date | platform |
---|---|---|---|
0d73ce70ad | US | 2020-08-12 | android |
381107e0d0 | FR | 2019-07-24 | android |
9d310031cc | AU | 2018-04-15 | iOS |
8d679827bz | CN | 2017-04-30 | iOS |
To prevent the AccessDeniedException
error when reading data from the S3 bucket, the datasets must be uploaded using the BucketOwnerFullControl
option. This is applicable for when the S3 bucket is created on wappier's side.
Using AppsFlyer
Once you enable wappier to access your data via the AppsFlyer APIs, we can directly pull the needed data with no overhead for you.
For visibility purposes, the data we would be gathering from AppsFlyer to run the Global Pricing program, would be as follows:
Activity Events (af_login)
- user_id – customer_user_id
- country_code – country_code
- install_date – install_time
- platform – platform
Transaction Events (af_purchase)
- user_id – customer_user_id
- platform – platform
- country_code – country_code
- transaction_id – attributes.af_order_id
- sku – attributes.af_content_id
- currency – event_revenue_currency
- price – event_revenue
- price_usd – event_revenue_usd
- currency_rate – Needs to be calculated. Price divided by price_usd
- timestamp – event_time
Exporting Store Data
If for any reason you are not sure about the integrity of the Android Revenue Data, you need to provide wappier with the Google Financial Reports or Apple Financial Reports.
Export Google Financial Data
You can export the monthly financial reports from the Google Play Console by following the steps below:
- Open Google Play Console.
- Click Download reports and select Financial.
- Select the year and month of the report you want to download.
- Click on the button to download the report locally
Financial reports include all apps in your account by default. If you need to include the reports of specific apps only, please filter out the apps that should be excluded from the export before sharing it with wappier.
Export Apple Financial Data
You can view & export Financial reports from App Store Connect by following the steps below:
From the homepage, click on Reports.
In the top-right corner, click Create Reports.
Select the fiscal month for the report you would like to download.
Select which locations you would like to include in your report. By default, this is set to All Countries or Regions (Multiple Files).
When All Territories is selected, an App Store Connect user can only download the reports for which they have access.
Click Create Reports. A status bar will be displayed, showing the progress of your reports being created.
When the reports are ready, a download link will be provided. Click Download Reports.
Unzip the compressed GZIP (.gz) file by opening it or using a utility.
Open the extracted tab-delimited text (.txt) file in a spreadsheet application.