DR SAM'S DTC — SOURCE DATA & RECONCILIATION
← Dashboard
Validation

Every number on the dashboard, traced to source.

Pulled directly from ShopifyQL FROM sales (Shopify Admin's reportable convention) and Supermetrics data_query. Every figure here can be cross-checked against the equivalent Shopify Analytics or platform report.

If a number on the leadership dashboard looks off, this page is the first place to look.

Definitions

How each metric is calculated. Differs slightly from Shopify's native displays in places — intentional, per the spec.
Net sales
Throughout this dashboard: ShopifyQL net_sales + shipping_charges = gross sales − discounts − returns + shipping. Excludes taxes. Differs from Shopify's native net_sales (which excludes shipping).
Gross profit
ShopifyQL gross_profit. COGS is derived as (ShopifyQL net_sales) − gross_profit — uses ShopifyQL's net_sales (no shipping) since shipping isn't a product cost.
AOV
net sales (incl shipping) ÷ orders. Shopify's native average_order_value uses net_sales ÷ orders only (no shipping), so our number is ~£1 higher per order on average.
Orders
ShopifyQL orders — includes all sales channels (Online Store, Skio Subscriptions, Shop, TikTok Shop, etc.). Does not include Draft Orders or cancelled orders.
New customer
customers − returning_customers for the week. A "new" customer's first-ever order falls in that week.
New vs existing order
For the AOV breakout: an order is "new" if it's the customer's first-ever lifetime order (determined from a bulk Admin GraphQL pull of customer.numberOfOrders). All later orders from the same customer are "existing" — including any subsequent orders within the same window. ShopifyQL aggregates don't expose this split.
Rolling 6mo LTV
Net sales ÷ distinct customers in trailing 26 weeks. Sampled every 4 weeks; 27 sample points across the past 2 years.
COGS (cost of goods sold)
Derived as ShopifyQL net_sales − gross_profit per day/week. Shopify computes gross_profit per order line item using each variant's unitCost field, so this aggregate is the sum of every product's per-unit COGS × quantity sold — i.e. exactly the product-level COGS rolled up. The "COGS" column in the daily breakdown below should match the sum of the per-product COGS table further down (within rounding).
CM1 / CM2 / CM3
CM1 = net sales (incl ship) − COGS. CM2 = CM1 − fulfilment (UK £4 / US £8 / EU £8 / RoW £12 per order) − Shopify Payments fee (2.27% of net sales incl ship). CM3 = CM2 − blended Google + Meta + TikTok ad spend.
Region
From billing_country. UK = United Kingdom + GB. US = United States + US. EU = EU27 + EEA + Switzerland. RoW = everything else (computed as Global − UK − US − EU).

Last 14 Days — Daily Breakdown (Global)

Direct ShopifyQL pull: FROM sales SHOW orders, gross_sales, discounts, returns, net_sales, shipping_charges, taxes, total_sales, gross_profit, average_order_value, customers, returning_customers TIMESERIES day SINCE 2026-04-23 UNTIL 2026-05-06. The "Net sales (incl ship)" column matches what's used on the dashboard; "ShopifyQL net" is shown for reference.
DayOrdersGross salesDiscountsReturnsShopifyQL netShippingNet sales
(incl ship)
TaxesGross profitCOGS
(net−GP)
Margin %Shopify AOVOur AOVCustomersExistingNew
14-day total

By Sales Channel (Last 14 Days)

Skio Subscriptions are recurring auto-replenishment orders — lower AOV than Online Store. This is why blended AOV looks lower than you might expect from Shopify's "Online Store" view alone.
ChannelOrdersNet salesAOV% of net

By Product Type (Last 14 Days)

Top product types by net sales. Useful for sanity-checking the AOV mix.
Product typeOrdersNet salesAOV

AOV by Customer Type

From a Shopify Admin GraphQL bulk operation. Order classified as new if it's the customer's first-ever lifetime order (lifetime count == orders in window AND earliest in-window). Everything else is existing. Region from shippingAddress.countryCodeV2. ShopifyQL aggregates don't expose this split.
Cohort Orders Net (incl ship) AOV (incl ship) Share of orders

Daily breakdown

Day New orders New revenue New AOV Existing orders Existing revenue Existing AOV New share %
Window total
Caveat: a customer who placed multiple orders in our window where one of them is their first-ever lifetime order — we count the first as "new" and the subsequent ones as "existing" for this customer. This is the right behaviour: from the second order onwards in their lifetime, they are an existing customer.

COGS Validation by Product (Last 14 Days)

Top 20 products by net sales. COGS is derived as ShopifyQL net_sales − gross_profit per product, summed across orders. Units sold come from FROM inventory SHOW inventory_units_sold; full-size SKU names are matched to sales rows. Use the "COGS / unit" column to sense-check against the actual cost you pay per unit. Outliers (margin < 70% or COGS/unit looking off) are worth investigating.
Product Orders Units sold Net sales (excl ship) Gross profit COGS Gross margin % COGS / unit
Top-20 total
Gross margin % here = gross_profit ÷ ShopifyQL net_sales (i.e. net excl shipping). This isolates product-level economics from shipping mix. Skincare blended gross margin typically sits 80–88% — anything materially below suggests a costing or returns issue worth digging into.

Reconciliation: Daily → Weekly

Sum the daily ShopifyQL results for week-of-2026-04-27 (Mon–Sun) and confirm they match the weekly TIMESERIES pull used on the dashboard. Identical = the dashboard math is sound.
MetricDaily sum (Mon–Sun)Weekly TIMESERIESΔStatus

Region Split Sanity (Week of 2026-04-27)

UK + US + EU + RoW must sum exactly to Global. If these don't reconcile, the regional dashboard charts are wrong.
MetricUKUSEURoWSum (UK+US+EU+RoW)Global (TIMESERIES)Status

Q1 LTV by Region — Cross-Check

Two independent ShopifyQL queries: SINCE 2024-10-01 UNTIL 2025-03-31 and SINCE 2025-10-01 UNTIL 2026-03-31. UK and US are pulled directly; EU is summed across EU27 + EEA + CH; RoW is computed as Global − UK − US − EU.
RegionQ1 2025 customersQ1 2025 net salesQ1 2025 LTVQ1 2026 customersQ1 2026 net salesQ1 2026 LTVΔ%

Ad Spend Totals (30 Months)

Direct from Supermetrics. Cross-check against each platform's billing or campaign manager.
PlatformAccountsTotal spend
Google AdsDr Sam's UK (7873961588) + US (6022136092)
Meta AdsDr Sam's GBP (act_4107038206239334) + US (act_624212431972703)
TikTok AdsUK (7070060217039355905) + US (7210028590547746818) + AU (7286512101391384578)
Total blended marketing

Open Questions / Things to Verify

If any of these resolve differently than assumed, the dashboard numbers will need to shift.