Skip to content
NeticeStart free

NETICE DOCUMENTATION

Daily App Sales schema: all 38 fields

Reviewed

Netice Daily App Sales uses app_sales_daily_v4: a 38-field output for Apple App Store and Google Play operational sales analysis. The default tables are app_sales_daily in BigQuery and APP_SALES_DAILY in Snowflake. Google Cloud Storage and AWS S3 receive CSV output.

For a daily trend, begin with revenue_date, source, report_currency and estimated_net. Keep the method fields with the amounts: daily values can include calculated fees, residual tax and explicitly labelled zero assumptions. This output is separate from the monthly Platform Finance schema.

Read the amount, currency and method together

A row is not necessarily one purchase. Source reports can aggregate units, and subscription event rows have different meanings. In particular, Apple customer currency and proceeds currency can differ. A null net_local can therefore coexist with a nonzero apple_proceeds_native; the fields prevent an amount being labelled with the wrong currency.

The types below describe the logical output. CSV serializes these values as text; warehouse destinations supply typed columns. Amounts, optional dimensions and lineage details have report-specific availability. Do not replace every empty value with zero or infer completeness from the age label.

View daily-sales example rows and warehouse SQL alongside this dictionary to see how amounts and method fields are used together.

Identity and reporting date

Identity and reporting date fields
Field Type Meaning
revenue_date Date Daily source reporting date. Keep its source date meaning when grouping trends; it is not an ingestion timestamp.
platform Text Platform code, such as IOS or ANDROID.
app_id Text App identifier from the source. Apple identifiers and Google package names need not use the same format.
source_kind Text SALES for this output.
source Text Provider code, such as APPLE_APP_STORE or GOOGLE_PLAY.
country Text Buyer or storefront country code where available.
report_currency Text Configured currency of the four estimated_* amount columns.

Amounts and currency conversion

Amounts and currency conversion fields
Field Type Meaning
estimated_gross Number Gross analytical amount in report currency. It can be sourced, derived or supplied through an estimation fallback.
estimated_net Number Estimated developer-side net proceeds in report currency. Read net_method alongside it.
estimated_tax Number Tax analytical amount in report currency. tax_method distinguishes source tax, residual estimates and assumptions.
estimated_fee Number Estimated platform fee in report currency, with its basis in fee_method.
native_currency Text Shared currency label for the *_local columns. It prioritizes the gross component currency, then net, tax and fee currency; report currency is the final fallback.
gross_local Number Gross component in native_currency, when available or estimated.
net_local Number Net component in native_currency. Null when its component currency differs; Apple proceeds may still be present in their separate fields.
tax_local Number Tax component in native_currency, when available or estimated; null when the component uses another currency.
fee_local Number Fee component in native_currency, when available or estimated; null when the component uses another currency.
apple_proceeds_currency Text Currency of the Apple proceeds component. Empty or null for Google rows.
apple_proceeds_native Number Apple proceeds component at row level in apple_proceeds_currency. Summary Sales per-unit proceeds are multiplied by signed units before this output; analytical fallback can apply if source amounts are unavailable.
gross_fx Number Conversion factor used for the gross component to report currency, where resolved.
net_fx Number Conversion factor used for the net component to report currency. Its source currency can differ from native_currency on Apple rows.
tax_fx Number Conversion factor used for the tax component to report currency, where resolved.
fee_fx Number Conversion factor used for the fee component to report currency, where resolved.

Methods, report family and events

Methods, report family and events fields
Field Type Meaning
net_method Text Calculation or source basis for net proceeds. Labels containing ESTIMATED or ASSUMED_ZERO describe analytical assumptions.
fee_method Text Fee calculation basis, including whether the estimate uses proceeds, gross or a Google fee rule.
tax_method Text Tax basis. Examples include GOOGLE_TAXES_COLLECTED, an Apple residual estimate, and unavailable-tax zero assumptions.
data_completeness Text Age-based daily status: LIVE, T_PLUS_2_STABILIZED or MATURE. It does not certify settlement, exact FX or absence of future corrections.
source_report Text Report family, such as ASC_SUMMARY_SALES or GP_ESTIMATED_SALES; subscription reports have separate labels.
event_has_revenue Boolean Revenue/lifecycle indicator. It helps distinguish state-change-only events, but does not certify a nonzero or source-verified amount.
subscription_period Text Normalized subscription duration, such as P1M or P1Y, when available.
units Number Signed source units where disclosed. Do not infer the number of individual purchases from a row count.
item_id Text Product or SKU identifier supplied by the source.
item_name Text Product name or title, where available.
transaction_type Text Normalized transaction or lifecycle label, including purchase, new sale, renewal, refund and supported subscription events.

Lineage and materialization

Lineage and materialization fields
Field Type Meaning
source_file_uri Text Source artifact or report request reference. A reference is not necessarily a publicly downloadable URL.
source_row_number Integer One-based source row position where available. It may be absent for aggregated sources.
source_row_hash Text Fingerprint of the source row for traceability across reads. Combine with report and source context; do not assume it is a purchase ID.
ingested_at Timestamp UTC time when the row was materialized. It is separate from revenue_date.
meta_json JSON text Additional source context and derivation details. Gross calculation basis appears as gross_method here, not as a separate column in the 38-field contract. FX details can include effective date and fallback information.

Start with a daily trend and an assumption count

This BigQuery example uses a fictional table path. Replace it with your managed table. The extra count makes net zero assumptions visible beside the analytical total.

SELECT
  revenue_date,
  source,
  report_currency,
  SUM(estimated_net) AS estimated_net_total,
  COUNTIF(net_method LIKE '%ASSUMED_ZERO%') AS net_zero_assumption_rows
FROM `example-project.analytics.app_sales_daily`
WHERE revenue_date >= DATE '2026-08-01'
  AND revenue_date < DATE '2026-09-01'
  AND event_has_revenue = TRUE
GROUP BY revenue_date, source, report_currency
ORDER BY revenue_date, source;

This remains an estimated daily total, including rows with method-labelled assumptions. It is not a monthly settlement figure. A zero assumption count is also not a complete quality test: estimates, degraded FX and late source reports require their own interpretation.

Choose the next reference

Read currency and FX semantics for Apple mixed-currency rows, or nulls, zeros and estimates before building aggregate measures. For delivery, use BigQuery setup or Snowflake setup.

Start free with Netice

Download and query this contract

JSON Schema · Example CSV · BigQuery DDL · Snowflake DDL

Loading instructions, SQL and executable checks on GitHub.