The big picture
AV Analytics pulls every order from Shopify the moment it's placed and stores it against your store. Costs, refunds, and freight come from your products, your shipments, and Shopify's own refund records. We don't estimate or model anything. Every number on your dashboard traces back to a specific row in either Shopify or your AV Analytics settings.
If a AV Analytics number ever looks wrong to you, click into it. Each KPI on the dashboard, marketing, and reports pages has an i button that shows the formula and a click-through to the underlying orders. Reconciliation should always be one click away.
Revenue
Formula: sum of net_revenue across non-cancelled orders in the selected window.
net_revenue = total_revenue − refunded_amount, where total_revenue is what Shopify reports as the order total (Order.total_price, inclusive of tax and shipping) and refunded_amount is the sum of successful refund transactions on that order. So AV Analytics's revenue is what the customer actually paid, net of what was refunded to them.
Reconcile against Shopify: Shopify Admin → Reports → Total sales report. The Total sales column over the same date range matches this number to the cent.
Profit (gross profit)
Formula: sum of gross_profit across non-cancelled orders.
gross_profit = net_revenue − (cost_of_goods − refunded_cogs) − shipping_cost − pick_pack_cost − other_costs. COGS is the sum of unit costs × quantity at the time the order shipped (locked at point-of-sale, see "Cost of goods" below). refunded_cogs reverses cost only when items were restocked (return / cancel / legacy_restock); items refunded as no_restock leave COGS in place because the brand still bore the cost.
Cost of goods (COGS)
Where it comes from: the Cost per item field on each Shopify variant. We pull it on every sync and store it as the variant's cost_price.
Lock at point-of-sale: when an order line first syncs, the unit cost is snapshotted onto the line. Subsequent re-syncs preserve that snapshot. If you raise a SKU's cost next month, only orders placed after the change use the new cost. Past orders stay locked at their shipped-at cost so historic profit doesn't shift retroactively.
Freight margin
Formula: sum of charged_to_customer − actual_cost across shipments in the window.
What the customer paid for shipping minus what your carrier charged you, captured automatically when a label is printed. Positive freight margin means customers covered shipping with a little left over. Negative means you're subsidising freight on average.
Refunds
Shopify's refund records flow into AV Analytics on every sync. Per order we track three numbers: total refunded amount (what hit the customer's card), COGS reversed when items go back to stock, and the latest refund timestamp. Per line item, the same fields broken out per SKU so dead-stock velocity, SKU-level profitability, and the destination matrix all subtract returned units cleanly.
Net contribution & ROAS (Marketing)
Net contribution: sum of gross_profit for orders attributed to a channel, minus the channel's ad spend in the window. The actual profit the channel generated after costs.
Net ROAS: net_contribution ÷ ad_spend. Above 1× = profitable; below = losing money.
Why our number differs from Meta or Google: ad platforms report ROAS as revenue ÷ spend. Our Net ROAS uses profit (after refunds, COGS, and freight) ÷ spend. A Meta campaign showing 4× ROAS in Ads Manager might be 1.2× Net ROAS in AV Analytics because most of the "revenue" is consumed by product cost, freight, and refunds. Our number is what you actually keep.
Why GST is included in revenue
For NZ and AU brands, AV Analytics's revenue is GST-inclusive, matching what Shopify shows in your orders list as the order Total. We don't strip GST out because GST treatment depends on your accountant: write-offs, claim-backs, and exemptions all vary. Showing what hit your account (the gross figure) is the only number that's stable across that ambiguity.
Multi-currency
stores.currency is sourced from Shopify's shop record on connect and refreshed on every sync. For Markets-enabled stores selling in multiple presentment currencies, Shopify converts every value to your home currency in the API fields we read. Every revenue, cost, and profit number on your dashboard is already in your shop's home currency (NZD / AUD / USD). No conversion happens on AV Analytics's side.
Admin access to your data
AV staff cannot see your revenue, profit, or freight data. Our admin support sessions are restricted to your settings page in code, not just policy.