← Dashboard
REPORTING CONTRACT / 0.4.0

Know what a number means.

These metrics describe the reporting database. WooCommerce remains authoritative for commerce. Synthetic demo activity is not evidence of store performance, catalogue pricing or product launch dates.

Loaded history

The private initial history begins 26 July 2026 IST. Older orders updated since that boundary can also be present; earlier history remains incomplete. New/returning customer identity and historical spend are limited to loaded records. Category filters use the latest fetched catalogue for observed product IDs, not purchase-time categories. One- or two-paise differences in source component sums remain visible as quality issues; the recorded order total is retained unchanged.

Time, currency and scope

All source timestamps use GMT fields and are stored in UTC. Reporting days and inclusive date ranges use Asia/Kolkata (UTC+05:30). Weeks begin Monday. Months follow the local calendar. Comparisons use the preceding equal number of days, or an explicit 365-day offset, including across leap years. Partial weeks and months remain partial. Money is stored in integer minor units; supported currencies INR, USD, EUR and GBP use two decimals. No exchange conversion or cross-currency total is performed.

The main date filter uses order creation time. Refunds attached to those orders reflect the latest imported state, including later refunds, so historical periods can change. Operations separately shows refunds by their own event date. Product/category filters select complete baskets and include co-purchased lines. Currency, status, region, city, payment and search filters apply to those same order cohorts. Cohort retention is explicitly whole-history in the selected currency through the end date, independent of other filters.

Recognized order policy

Processing, completed, designer, print, dispatch, shipped, partially-paid and refunded parent orders are included. Pending, on-hold, cancelled, failed, checkout-draft, trash, deleted and unknown statuses are excluded from sales metrics. Unknown statuses produce a quality issue. All child orders are conservatively excluded; Acowebs deposit/balance metadata without parent lineage is also excluded. The production Woo orders endpoint returns ordinary orders and excludes Acowebs payment-child types, checkout drafts and trash. Child payment collections and child-only refunds are not included; this dashboard is not a payment ledger.

MetricDefinition
Order valueSum of Woo order total for recognized orders. Includes recorded discounts, tax, shipping and fees. It is not independently verified cash received.
Net order valueRecognized order value minus the absolute amounts of all currently recorded refunds attached to those orders. Tax-inclusive, shipping-inclusive and retrospectively restated. This is not accounting revenue recognition.
Merchandise salesSum of recorded line total, after discounts and before tax. Product and variant contribution uses these amounts. Refund allocation is unavailable; do not call this net product revenue.
Gross merchandiseSum of line subtotal before line discounts, excluding tax. Not catalogue list price multiplied by quantity.
Orders / AOVRecognized parent-order count. AOV = order value ÷ recognized count, before refunds, rounded to the nearest minor unit using Python half-even rounding. No baseline yields no percentage comparison.
DiscountsRecorded order discount_total, excluding discount tax. Already present in merchandise/order totals; never subtracted twice.
Tax / shipping / feesOriginal total_tax, shipping_total (excluding shipping tax), and fee-line totals excluding fee tax. Total tax includes shipping/fee tax. All before refund component allocation.
RefundsAbsolute refund amount from complete refund-detail records. Summary/detail ID mismatch blocks page commit. Manual refunds do not imply bank settlement. Refunds to excluded order statuses do not enter main KPIs; event-date operations counts matching parent orders across statuses.
UnitsSum of original line quantities in recognized orders, before returns. A configured bundle's Woo quantity may mean a set, not pieces; no inferred piece multiplication.
Paid / unpaidPresence or absence of date_paid_gmt in all matching parent orders. The UI says “no paid timestamp”; deposits and COD prevent inferring a reliable unpaid balance.
Completion timeMedian days from creation to recorded completion among recognized orders with valid non-negative durations. Sample count shown. Not dispatch, carrier delivery, or an SLA.
New / returningDistinct selected customer keys grouped by first recognized order in all loaded currency history through the period end. Earlier than start = returning. This is only “first seen”, not guaranteed first-ever purchase.
Historical spendNet recognized order value across loaded history through end date for each selected customer. Account ID is HMAC-hashed; normalized guest email is separately HMAC-hashed. Account/guest identities are not merged. Missing email creates a per-order unknown identity.
Cohort retentionFirst recognized purchase month defines cohort. M0 includes initial purchase. Later cells are unique members purchasing in that month ÷ cohort size. Future months are blank, observed zero activity is 0%; current month may be partial.
Regional contributionShipping country/state/city; billing geography is used as a whole only when shipping geography is absent. Missing cities are Unknown. City keys include country/state to avoid collisions; casing and whitespace are normalized, aliases are not inferred. No geocoding, street addresses or postcodes. Contribution pies partition ordered units, recognized parent-order counts or recorded order value before refunds. Product pies partition line quantities or merchandise value across parent products; basket order counts overlap and are not a product pie measure. State-to-city shares divide by that state total; all-city shares divide by the report total. Unknown stays in denominators; known most/least callouts exclude Unknown. Least means the smallest observed group, including zero; absent locations are not ranked. Small slices can expand from Other and all groups remain in the ranking. Negative amounts use the ranking without a pie. Rounded percentages may not sum to exactly 100%.
Change bridgeCurrent-minus-comparison merchandise, tax, shipping and fee values, minus the refund change. Any difference from net order value is exposed as Unreconciled. An additive decomposition, not a causal explanation.

Products and personalisation

Parent and variation IDs remain independent. The original Acrylic 43110, challenger 1362199, standard magnet 1361284, BOGO 1361934 and Return Gift 1360863 are not merged. Return Gift remains outside TPI. No pricing incentives are recalculated. Only allowlisted, bounded categorical metadata values for Size, Thickness, Orientation, Shape and Finish are retained. Names, messages, media URLs, upload manifests and arbitrary metadata are discarded. Unmapped private/custom structures remain unavailable pending a reviewed adapter. Categories are observed catalogue memberships on import, not guaranteed purchase-time categories.

Freshness, reconciliation and deletion

A successful refresh is recorded only after two identical bounded-window scans finish. A cursor means the scan is paused or incomplete. One hour without success is stale. This does not certify source completeness. Reconciliation fetches explicit IDs and checks order components locally; a 404 is an issue and retains historical totals until confirmed deletion evidence is recorded. Tombstoned data remains in revision history and is excluded from current reporting. Unknown source additions/deletions require periodic reviewed scans and reconciliation.

Unavailable means unavailable

Verified payment collections and settlements, outstanding balances, profit, marketing attribution, conversion rates, carrier timing and allocated net product refunds are not available. They require additional reliable, explicitly authorized data. The application makes no such claims.

Return to dashboard →