Unified Revenue Schema (Sales + Ads)
& Field Definitions

Field-by-field reference for Netice unified revenue output (Sales + Ads). Clear gross/net/proceeds/earnings terms + BI-ready schema.

UUSIMMAT JULKAISUT

Google Analytics 4 -raportointi | Ilmainen koulutus

Google Analytics 4 -raportointi Koulutuksen jälkeen ymmärrät mm. 🔹 raportoinnin Google Analytics 4:llä 🔹 Kuinka visualisoit ja raportoit mm. sivustosi merkittäviä mittareita 👉🏻 ja kuinka raportoinnin avulla voit tukea liiketoimintasi tavoitteita ja niiden mitattavuutta! Video: Google Analytics 4 -raportointi Katso koulutus ilmaiseksi alla olevasta videosta. Koulutusaiheemme liittyvät moderniin digitaaliseen myyntiin ja markkinointiin. Google Analytics 4,…

Markkinoinnin mittarit ja raportointi | Katso koulutus!

Digimarkkinoinnin mittarit ja raportointi: koulutuksen esittely Katso ilmainen koulutus alla olevasta videosta ja opi digitaalisen markkinoinnin mittarit ja raportointi! Koulutuksen jälkeen ymmärrät mm. 🔹 Markkinoinnin mittarit 🔹 Kuinka visualisoit ja raportoit markkinoinnin ROI:ta ja asiakashankinnan hintaa 🔹 Kuinka markkinointisi suoriutuu 👉🏻 ja kuinka näillä tiedoilla lisätään myyntiä. Video: Digimarkkinoinnin mittarit ja raportointi Katso koulutus ilmaiseksi…

GA4 ja Looker Studio | Ilmainen koulutus

Video: Google Analytics 4 ja Looker Studio Katso koulutus ilmaiseksi alla olevasta videosta. https://www.youtube.com/watch?v=ILOj9v9TdQc GA4 & Looker Studio – digitaalisen liiketoimintasi mitattavuus: koulutuksen esittely Tunne verkkoliiketoimintasi Google Analytics 4:n ja Looker Studion avulla! Koulutuksen jälkeen ymmärrät mm.🔹 Kuinka visualisoit ja raportoit Google Analytics -dataa🔹 Mikä todella tuo verkkoliiketoiminnassasi konversioita ja myyntiä🔹 Webisi käyttökokemusta👉🏻 ja kuinka…

Unified revenue example (Sales + Ads)

Unified revenue schema (Sales + Ads) — Unified field names reference

Unified App Store Connect + Google Play revenue data to BigQuery, Redshift, Azure, GCS & S3
Definition

The Netice Unified Revenue Schema is a platform-reported revenue data output that normalizes store sales (App Store Connect, Google Play) and ads monetization (e.g., AdMob, Google Ad Manager, AppLovin MAX, Unity LevelPlay) into Unified field names so you can report consistently across sources.

Reference only: real tables may differ from this example as platforms update fields and Netice adds safe extensions. The field meanings below describe the Unified schema contract; new fields should be additive.
Grain: daily
Scope: Sales + Ads (one output)
Currencies: original + report currency
Goal: fewer “why don’t numbers match?” meetings

What this Unified schema is (and what it isn’t)

This page is the schema explorer + field dictionary for the Netice Unified Revenue schema. Treat it like a dataset reference: it includes example rows and precise field definitions so your finance and analytics teams can align on terms.

Not booked revenue: Store and ad platforms may show estimates that finalize later (for example, invalid traffic adjustments in ads). Netice preserves that reality using Unified field names and the is_final flag rather than pretending everything is final on day one. AdMob estimated earnings are not finalized until month-end adjustments.

Money terminology: Apple vs Google Play vs Ads (how to interpret numbers)

Why this section exists: if you mix “gross,” “net,” “proceeds,” and “earnings” casually, your dashboards will be wrong—or at least endlessly debated.

We simply tend to say “revenue data.”
Reality is more complex: each platform’s native meaning still matters (Apple “Proceeds”, Google Play “Estimated sales”, AdMob “Estimated earnings”).

Apple (App Store Connect): Customer Price vs Proceeds

Apple defines Proceeds (what you receive) as Customer Price minus applicable taxes and Apple’s commission, and notes that Sales and Trends proceeds aren’t final (final proceeds are based on closed transactions).

Google Play: Estimated sales vs Earnings/Payout context

Google Play Console describes revenue data as based on estimated sales (amounts paid by buyers, including tax).

In Play Console, you can download Estimated sales reports and Earnings reports under Financial reporting—these represent different lenses (buyer amounts vs payout-related reporting).

Ads (AdMob / Google Ad Manager): Estimated vs finalized earnings

Ad platforms commonly show estimated earnings during the month; they can be adjusted when invalid activity is removed and revenue is finalized. AdMob explicitly states performance report earnings aren’t finalized until the end of the month.

Summary
  • Unified schema = platform-reported revenue data normalized into Unified field names for consistent reporting.
  • Apple “Proceeds” ≠ customer price; it’s customer price minus taxes and Apple commission, and Sales & Trends proceeds aren’t final.
  • Google Play revenue is based on estimated sales (buyer amounts, including tax).
  • Ads earnings can be estimated mid-month and finalize later (month-end adjustments).

Netice Unified Schema explorer (searchable field list)

Use the search box to find any field (app id, product, country, report, …). This list documents the Unified field names visible in the provided schema sample (38 fields).

Unified field name Type Populated for Meaning
revenue_dateDaily date key for reporting DATE SALESADS Calendar date the row is attributed to (daily grain).
source STRING (ENUM) SALESADS Platform/system name (e.g., APPLE_APP_STORE, GOOGLE_PLAY, ADMOB, GAM, MAX, LEVELPLAY).
source_kind STRING (ENUM) SALESADS High-level bucket: SALES vs ADS.
platform STRING (ENUM) SALESADS IOS or ANDROID.
app_id STRING SALESADS Bundle ID / package name (e.g., com.app.example).
sales_channel STRING SALES Sales channel where available (e.g., IN_APP, PLAY_STORE, OUTSIDE_PLAY_STORE).
country STRING (ISO-2) SALESADS Country code (ISO-2).
original_currency STRING (ISO 4217) SALESADS Currency reported by the source row before conversion.
report_currency STRING (ISO 4217) SALESADS Your chosen reporting currency for the unified output (e.g., USD).
fx_rate_to_report DECIMAL SALESADS FX rate applied to convert original currency amounts into report currency for this row.
revenue_net_original DECIMAL SALESADS Net amount in original currency (negative values typically represent refunds/chargebacks).
revenue_net_report DECIMAL SALESADS Net amount converted into report currency using fx_rate_to_report.
revenue_gross_original DECIMAL SALES Gross customer amount (before platform fee; tax handling depends on platform report context).
store_fee_original DECIMAL SALES Platform fee/commission amount in original currency (when available).
customer_currency STRING (ISO 4217) SALES Currency used for the buyer-facing amounts (customer price context).
customer_currency_gross_amount DECIMAL SALES Gross amount in customer currency (buyer amount).
customer_currency_tax_amount DECIMAL SALES Tax component in customer currency (when available).
customer_currency_platform_fee_amount DECIMAL SALES Platform fee component in customer currency (when available).
customer_currency_net_proceeds_amount DECIMAL SALES Net proceeds in customer currency.
proceeds_currency STRING (ISO 4217) SALES Currency for proceeds amounts (platform payout lens).
proceeds_currency_net_amount DECIMAL SALES Net proceeds amount in proceeds currency (platform payout lens).
proceeds_currency_tax_amount DECIMAL SALES Tax amount in proceeds currency (when available).
proceeds_currency_platform_fee_amount DECIMAL SALES Platform fee amount in proceeds currency (when available).
fx_customer_currency_to_report_currency DECIMAL SALES FX rate for customer-currency amounts to report currency (when customer currency differs).
fx_proceeds_currency_to_report_currency DECIMAL SALES FX rate for proceeds-currency amounts to report currency (when proceeds currency differs).
report_currency_gross_amount DECIMAL SALES Gross amount expressed in report currency (when gross components are available).
report_currency_tax_amount DECIMAL SALES Tax amount expressed in report currency (when available).
report_currency_platform_fee_amount DECIMAL SALES Platform fee expressed in report currency (when available).
report_currency_net_proceeds_amount DECIMAL SALES Net proceeds expressed in report currency (when available).
is_final BOOLEAN SALESADS Whether the row reflects a finalized platform report snapshot (vs estimated / subject to later adjustments).
source_report STRING SALESADS Which underlying platform report produced the row (useful when reconciling “why differs”).
units INTEGER SALES Number of units for the transaction (refunds often appear as negative units).
product_id STRING SALES In-app product / subscription identifier (SKU).
product_name STRING SALES Human-readable product name where available.
impressions INTEGER ADS Ad impressions for the row (ads monetization context).
clicks INTEGER ADS Ad clicks for the row (ads monetization context).
transaction_type STRING (ENUM) SALESADS Transaction classification (e.g., ONE_TIME, SUBSCRIPTION_RENEWAL, REFUND, AD_REVENUE).
meta_json JSON SALESADS Source-specific metadata for edge fields and safe future extensions without breaking the Unified schema.
How to use this in BI: For daily finance dashboards, start with revenue_date, app_id, country, source_kind, and revenue_net_report. Use source_report + is_final when reconciling changes over time (common in ads).

Unified field names dictionary

Each field below is anchor-linked and defined in plain terms, including what populates it and what to watch for. This is meant to be pasted into finance/analytics docs so teams stop arguing about vocabulary.

revenue_date
Type: DATESALESADS

Daily attribution date. Use this as the main partition/date filter for dashboards and month-end rollups.

source
Type: STRINGSALESADS

Which platform/system reported the row (example values: APPLE_APP_STORE, GOOGLE_PLAY, ADMOB, GAM, MAX, LEVELPLAY). Use this when splitting revenue by platform vendor.

source_kind
Type: STRING (ENUM)SALESADS

High-level classification: SALES or ADS. This is the simplest “store vs ads” switch for finance reporting.

platform
Type: STRING (ENUM)SALESADS

IOS or ANDROID. This is separate from source because some ad networks span both platforms.

app_id
Type: STRINGSALESADS

Bundle ID / package name (for example: com.app.example). This is the join key across sources inside the Unified schema.

sales_channel
Type: STRINGSALES

Where available, describes sales channel context (example values in your sample include IN_APP, PLAY_STORE, OUTSIDE_PLAY_STORE). Often blank for Apple sales rows.

country
Type: STRING (ISO-2)SALESADS

Country code (ISO-2). In store data, this usually reflects the storefront/buyer locale context; in ads, it reflects where impressions/revenue are attributed.

original_currency
Type: STRING (ISO 4217)SALESADS

Currency the source reported for this row before conversion into report_currency.

report_currency
Type: STRING (ISO 4217)SALESADS

Your chosen reporting currency for unified reporting (example: USD). This is the currency most dashboards should default to.

fx_rate_to_report
Type: DECIMALSALESADS

FX rate used to convert “original currency” amounts into “report currency” for this row.

revenue_net_original
Type: DECIMALSALESADS

Net revenue amount in the source’s original currency. Refunds/returns often appear as negative values.

revenue_net_report
Type: DECIMALSALESADS

Net revenue amount converted into report currency using fx_rate_to_report. This is typically the primary number for cross-source totals.

revenue_gross_original
Type: DECIMALSALES

Gross customer amount in original currency (before platform fee). Tax handling depends on platform report context; Google Play “estimated sales” is explicitly buyer amounts including tax.

store_fee_original
Type: DECIMALSALES

Platform fee / commission amount in original currency when provided by the source report.

customer_currency
Type: STRING (ISO 4217)SALES

Currency used for buyer-facing price amounts (“customer price” context).

customer_currency_gross_amount
Type: DECIMALSALES

Gross buyer amount in customer currency.

customer_currency_tax_amount
Type: DECIMALSALES

Tax component in customer currency when available (may be zero/blank depending on report).

customer_currency_platform_fee_amount
Type: DECIMALSALES

Platform fee component in customer currency when available.

customer_currency_net_proceeds_amount
Type: DECIMALSALES

Net proceeds in customer currency. For Apple, “proceeds” is customer price minus applicable taxes and Apple commission.

proceeds_currency
Type: STRING (ISO 4217)SALES

Currency used for proceeds/payout lens amounts (platform payout view).

proceeds_currency_net_amount
Type: DECIMALSALES

Net proceeds amount in proceeds currency.

proceeds_currency_tax_amount
Type: DECIMALSALES

Tax amount in proceeds currency when provided.

proceeds_currency_platform_fee_amount
Type: DECIMALSALES

Platform fee amount in proceeds currency when provided.

fx_customer_currency_to_report_currency
Type: DECIMALSALES

FX rate converting customer currency amounts into report currency (useful when customer currency differs from report currency).

fx_proceeds_currency_to_report_currency
Type: DECIMALSALES

FX rate converting proceeds currency amounts into report currency.

report_currency_gross_amount
Type: DECIMALSALES

Gross amount expressed in report currency (when gross components are available).

report_currency_tax_amount
Type: DECIMALSALES

Tax amount expressed in report currency (when available).

report_currency_platform_fee_amount
Type: DECIMALSALES

Platform fee expressed in report currency (when available).

report_currency_net_proceeds_amount
Type: DECIMALSALES

Net proceeds expressed in report currency (when available).

is_final
Type: BOOLEANSALESADS

True when the underlying platform report snapshot is considered finalized for this row; false when it’s an estimate or subject to later adjustments. This matters most for ads (month-end finalization) and for Apple “Sales and Trends” proceeds (not final).

source_report
Type: STRINGSALESADS

Identifies the specific report stream used (examples from your sample: apple_api_connect, google_play_estimated_earnings, admob_network_report). Use this when reconciling differences because “estimated vs final” often depends on report type.

units
Type: INTEGERSALES

Number of units (purchases/renewals) represented by this row. Refund rows may use negative units.

product_id
Type: STRINGSALES

SKU / product identifier (subscription or in-app purchase ID).

product_name
Type: STRINGSALES

Human-readable product name where available. Useful for BI labels; do not rely on it as a stable key—use product_id as the key.

impressions
Type: INTEGERADS

Ad impressions associated with the ads revenue row.

clicks
Type: INTEGERADS

Ad clicks associated with the ads revenue row (where provided by the network/report).

transaction_type
Type: STRING (ENUM)SALESADS

Classifies the row so finance can group correctly. Examples in your sample: ONE_TIME, SUBSCRIPTION_RENEWAL, REFUND, AD_REVENUE.

meta_json
Type: JSONSALESADS

Flexible metadata container for source-specific fields and safe future extensions. This reduces schema churn while keeping the Unified field names stable.

Dataset-like reference with sample rows

This is the provided sample output (20 rows) for Unified Schema

Show sample rows (20)
revenue_datesourcesource_kindplatformapp_idsales_channelcountry original_currencyreport_currencyfx_rate_to_reportrevenue_net_originalrevenue_net_report revenue_gross_originalstore_fee_original customer_currencycustomer_currency_gross_amountcustomer_currency_tax_amountcustomer_currency_platform_fee_amountcustomer_currency_net_proceeds_amount proceeds_currencyproceeds_currency_net_amountproceeds_currency_tax_amountproceeds_currency_platform_fee_amount fx_customer_currency_to_report_currencyfx_proceeds_currency_to_report_currency report_currency_gross_amountreport_currency_tax_amountreport_currency_platform_fee_amountreport_currency_net_proceeds_amount is_finalsource_reportunitsproduct_idproduct_nameimpressionsclickstransaction_typemeta_json
2026-02-10APPLE_APP_STORESALESIOScom.app.exampleUSUSDUSD1779.992.99USD9.9902.997USD7119.9902.997falseapple_api_connect1premium_monthlyPremium Monthly00ONE_TIME{}
2026-02-10APPLE_APP_STORESALESIOScom.app.exampleJPJPYUSD0.00678405.631200360JPY12000360840JPY8400.00670.00678.0402.415.63falseapple_api_connect1pro_yearlyPro Yearly00SUBSCRIPTION_RENEWAL{}
2026-02-10APPLE_APP_STORESALESIOScom.app.exampleFIEURUSD1.092.83.054.991.2EUR4.990.991.22.8EUR2.81.091.095.441.081.313.05falseapple_api_connect1remove_adsRemove Ads00ONE_TIME{}
2026-02-10APPLE_APP_STORESALESIOScom.app.exampleGBGBPUSD1.27-7-8.89-9.99-2.99GBP-9.990-2.99-7GBP-71.271.27-12.690-3.8-8.89falseapple_api_connect-1premium_monthlyPremium Monthly00REFUND{}
2026-02-10GOOGLE_PLAYSALESANDROIDcom.app.exampleIN_APPUSUSDUSD13.223.224.991.37USD4.990.41.373.22USD3.22114.990.41.373.22falsegoogle_play_estimated_earnings1coins_500500 Coins00ONE_TIME{}
2026-02-10GOOGLE_PLAYSALESANDROIDcom.app.exampleIN_APPDEEURUSD1.095.876.49.992.52EUR9.991.62.525.87EUR5.871.091.0910.891.742.756.4falsegoogle_play_estimated_earnings1pro_monthlyPro Monthly00SUBSCRIPTION_RENEWAL{}
2026-02-10GOOGLE_PLAYSALESANDROIDcom.app.examplePLAY_STOREBRBRLUSD0.2-12.6-2.52-19.9-5.4BRL-19.9-1.9-5.4-12.6BRL-12.60.20.2-3.98-0.38-1.08-2.52falsegoogle_play_estimated_earnings-1pro_monthlyPro Monthly00REFUND{}
2026-02-10GOOGLE_PLAYSALESANDROIDcom.app.exampleOUTSIDE_PLAY_STOREININRUSD0.012349.34.19499149.7INR4990149.7349.3INR349.30.0120.0125.9901.84.19falsegoogle_play_estimated_earnings1lifetime_unlockLifetime Unlock00ONE_TIME{}
2026-02-10ADMOBADSANDROIDcom.app.exampleUSUSDUSD135.2435.24falseadmob_network_report0120000350AD_REVENUE{}
2026-02-10ADMOBADSIOScom.app.exampleJPUSDUSD112.812.8falseadmob_network_report05000090AD_REVENUE{}
2026-02-10ADMOBADSANDROIDcom.app.exampleINUSDUSD18.158.15falseadmob_network_report0200000420AD_REVENUE{}
2026-02-10ADMOBADSIOScom.app.exampleDEUSDUSD117.6217.62falseadmob_network_report065000150AD_REVENUE{}
2026-02-10GAMADSANDROIDcom.app.exampleUSUSDUSD152.152.1falsegam_reportservice0150000260AD_REVENUE{}
2026-02-10GAMADSIOScom.app.exampleGBUSDUSD120.5520.55falsegam_reportservice080000120AD_REVENUE{}
2026-02-10GAMADSANDROIDcom.app.exampleDEUSDUSD114.314.3falsegam_reportservice060000100AD_REVENUE{}
2026-02-10GAMADSIOScom.app.exampleBRUSDUSD16.86.8falsegam_reportservice07000080AD_REVENUE{}
2026-02-10MAXADSANDROIDcom.app.exampleUSUSDUSD140.0540.05falseapplovin_max_reporting_api0110000210AD_REVENUE{}
2026-02-10MAXADSIOScom.app.exampleJPUSDUSD122.7522.75falseapplovin_max_reporting_api090000160AD_REVENUE{}
2026-02-10LEVELPLAYADSANDROIDcom.app.exampleUSUSDUSD115.115.1falseunity_levelplay_reporting_api04000070AD_REVENUE{}
2026-02-10LEVELPLAYADSIOScom.app.exampleDEUSDUSD19.99.9falseunity_levelplay_reporting_api03500055AD_REVENUE{}

FAQ

1) Why doesn’t my Unified revenue total match my bank payout?

Because bank payouts follow payout schedules and adjustments. Ads often finalize after month-end invalid activity adjustments; AdMob explicitly distinguishes estimated vs finalized earnings.

2) Why do Apple “Proceeds” numbers differ from customer price totals?

Apple proceeds are customer price minus applicable taxes and Apple commission. Also, Sales and Trends proceeds aren’t final; final proceeds are based on closed transactions.

3) What does Google Play “estimated sales” mean in practice?

Play Console describes revenue data as based on estimated sales: amounts paid by buyers, including tax. That can differ from payout timing and other reporting views.

4) Can rows change after they appear (backfills/updates)?

Yes. Platforms can update or adjust reports (particularly ads). Use is_final and source_report to track which rows are still subject to change.

5) Is this output my accounting revenue?

No. The Unified schema is platform-reported revenue data normalized for consistent analysis. Your booked revenue depends on your accounting rules and systems.

What to do next

Pick the reporting outcome you want (daily dashboards, finance rollups, reconciliation), then wire your BI models to the Unified schema keys: revenue_date, app_id, source_kind, country, and revenue_net_report. Use source_report + is_final to avoid confusing “estimated vs final” values.

Last reviewed: 2026-02-21