Docs

Metrics glossary

Definitions, formulas, and display rules for the metrics shown in Keel HQ.

Keel HQ calculates financial and operational metrics from Shopify, connected ad platforms, Klaviyo, connected cash accounts, and the costs you enter. Complete the Quick start, including the first Shopify sync and your costs, before using profit and margin figures.

Data that affects every metric

Data freshness

Each connection syncs on its own schedule, so figures that use different connections can be different ages. The Overview header shows Updated with details such as Orders synced and Meta spend pulled; a figure that combines connections is only as current as its oldest connection.

Refunds and zero-dollar orders

Refunds use Shopify's exact refund amounts, including partial refunds, and are picked up on the next order sync. Fully refunded and voided orders are excluded from overview, product, customer, and inventory queries; the monthly report also subtracts exact refunds from net revenue.

By default, a whole zero-dollar order is excluded from revenue, orders, units, and costs; a free line item in a paid order is still counted. Change this in Settings → Goals → Data Quality with Exclude zero-dollar orders from analytics; physical-stock metrics always count units that left stock, including free units.

Overview

The Overview's Key Metrics use the selected rolling window and compare it with the equivalent-length prior window.

Net Revenue

Revenue from line items in the selected period.

Net Revenue = sum of line-item revenue in the period

The Overview splits this into DTC and B2B revenue. Its line-item query excludes fully refunded and voided orders.

Orders

Unique Shopify orders in the selected period.

Orders = number of distinct Shopify orders in the period

Fully refunded and voided orders are excluded.

AOV

Average order value in the selected period.

AOV = Net Revenue / Orders

It uses the Overview's net revenue and unique-order count.

Ad Spend

The ad spend recorded for the selected period.

Ad Spend = connected platform spend + manual Other ad spend + costs marked Counts as ad spend

Connected Google Ads and Meta Ads spend, manual Other ad spend, and a variable cost marked Counts as ad spend are included in the Overview total. Missing spend is unknown, not $0.

Blended ROAS

Return on ad spend using Keel HQ net revenue and the same total ad spend as the Overview.

Blended ROAS = Net Revenue / total ad spend

Unknown ad spend displays — with its reason. Known $0 spend, $0 revenue, or a $0 denominator also displays — rather than 0x, Infinity, or NaN; the value otherwise displays as a two-decimal multiple. See the FAQ for how it differs from MER.

MER

Marketing efficiency ratio using the same net revenue as Blended ROAS but all marketing spend.

MER = Net Revenue / (ad spend + non-media marketing costs)

Today, non-media marketing costs are the selected window's normalized Agency Fees from Settings → Costs. Costs marked Counts as ad spend are included in ad spend for both MER and Blended ROAS; only Agency Fees make the two ratios differ. Unknown ad spend shows — with its reason; with known $0 ad spend and Agency Fees entered, MER is net revenue divided by the Agency Fees alone, and it shows — only when all marketing spend or revenue is $0.

CPA

Cost per acquisition in the Overview: spend for every order, including repeat customers.

CPA = total ad spend / orders

It uses the same total ad spend as Blended ROAS and MER. This is not CAC because it does not limit orders to new customers. If ad spend is missing or incomplete, CPA is Unknown, never a partial amount or $0; with no orders it displays —, and known $0 spend across orders is a real $0.

Contribution Margin %

The share of net revenue left after COGS and variable costs.

Contribution Margin % = (Net Revenue - COGS - Variable Costs) / Net Revenue * 100

The Overview uses current data for the selected period. If COGS coverage is below 90%, this and Net Margin % display — with the coverage reason rather than estimating COGS.

Net Margin %

The share of net revenue left after variable costs, fixed costs, and ad spend.

Net Margin % = (Contribution Margin - Fixed Costs - Ad Spend) / Net Revenue * 100

It shares the Contribution Margin % COGS-coverage rule: insufficient COGS coverage displays — with a reason.

Fixed OpEx %

The share of net revenue represented by fixed operating expenses.

Fixed OpEx % = Fixed Costs / Net Revenue * 100

Fixed costs come from Settings → Costs and revenue is computed in real time. Keel HQ alerts when this exceeds its 20% ceiling.

Period-over-Period Delta

The percentage change from the equivalent-length window immediately before the selected one.

Period-over-period change = (current - prior) / |prior| * 100

For example, a 30-day window compares with the preceding 30 days. A partial Today window compares with yesterday at the same wall-clock time, never with a full day.

Monthly report P&L

The Monthly Report P&L calculates month-over-month and year-over-year changes for its values. Void orders count for nothing, and Settings → Goals → Data Quality → Exclude zero-dollar orders from analytics can exclude whole $0 orders.

Gross Revenue

Discounted line-item revenue plus shipping, before refunds.

Gross Revenue = DTC Gross Revenue + B2B Gross Revenue

Tax is not deducted: the report's revenue is already tax-exclusive. A paid order's free line retains its list price in gross revenue.

Net Revenue

Revenue after refunds across DTC and B2B.

Net Revenue = DTC Net Revenue + B2B Net Revenue

At the storefront level, net revenue is line-item revenue plus shipping less exact refunds. A later refund changes the order's month when the report is regenerated.

Order Count

The combined count of DTC and B2B orders.

Order Count = DTC Orders + B2B Orders

It counts distinct Shopify order IDs with a line item that is not refunded.

Units Sold

The combined units sold through DTC and B2B.

Units Sold = DTC Units + B2B Units

It sums quantities on line items that are not refunded. A free line in a paid order counts; a whole $0 order follows the zero-dollar-order setting.

AOV

Average order value for the report month.

AOV = Net Revenue / Order Count

This version uses the report's net revenue and order count, including shipping and exact refunds.

Refund Rate

The share of gross revenue refunded in the report month.

Refund Rate = Refunds / Gross Revenue

Refunds are exact dollar amounts from Shopify order totals, including partial refunds.

COGS

Cost of goods sold for units kept by customers in the report month.

COGS = cost of units kept + estimated cost of uncosted kept sales

Restocked returned units are removed from COGS; a no-restock refund keeps its cost. At least 90% of kept revenue must have cost data or COGS and every COGS-derived value display —; missing cost is never treated as free.

COGS Coverage

The share of kept revenue with cost data.

Coverage = costed kept revenue / total kept revenue

Below 90%, Keel HQ withholds COGS and dependent metrics and shows — with the coverage percentage.

Gross Profit

Profit after COGS and before operating costs.

Gross Profit = Net Revenue - COGS

It is withheld when COGS is withheld.

Gross Margin %

Gross profit as a share of net revenue.

Gross Margin % = Gross Profit / Net Revenue

It is withheld when COGS is withheld.

Variable Costs

Costs that vary with sales or operations in the report month.

Variable Costs = total variable costs - costs counted as ad spend

Keel HQ groups these as shipping, payment processing, fulfillment, returns, customs, agency fees, and other. A cost requiring an unknown figure—for example missing Meta, COGS, ShipStation, or sales data—makes contribution margin and each lower P&L layer unknown rather than charging $0.

Payment Fees

Imported Shopify Payments fees plus estimated fees for other configured gateways.

Payment Fees = imported fees + estimated gateway fees

Shopify Payments includes qualifying sale, capture, and refund transaction fees, including tax on the fee; a refund normally keeps its original fee unless Shopify reports a returned fee. Manual processing costs apply only to sales not covered by imported or estimated fees, preventing double count.

Contribution Margin

Profit after COGS and variable costs, before ad spend and fixed costs.

Contribution Margin = Gross Profit - Variable Costs

It displays — when COGS or a required variable cost cannot be calculated.

Contribution Margin %

Contribution margin as a share of net revenue.

Contribution Margin % = Contribution Margin / Net Revenue

It follows the same COGS and variable-cost withholding rules as Contribution Margin.

CM1

The first Keel HQ contribution-margin layer.

CM1 = Net Revenue - COGS

CM1 is Gross Profit. It displays — when COGS is unavailable.

CM2

The contribution margin after variable costs.

CM2 = CM1 - Variable Costs

CM2 is Contribution Margin. It displays — when COGS or a required variable cost cannot be calculated.

CM3

The contribution margin after ad spend.

CM3 = CM2 - Ad Spend

Ad spend that cannot be read makes CM3 —, never CM2 minus $0. Connected platform spend, manual Other ad spend, and costs explicitly marked as ad spend belong here rather than in CM2.

Fixed Costs

Normalized fixed business costs in the report month.

Fixed Costs = costs for the portion of the month each cost was active

Monthly costs use their amount, quarterly costs one-third, and annual costs one-twelfth; a cost that starts, stops, or changes price mid-month is prorated for its active days. Add these in Settings → Costs, as described in the Quick start.

Net Profit

Profit after COGS, variable costs, ad spend, and fixed costs.

Net Profit = CM3 - Fixed Costs

It displays — when an earlier part of the calculation is unavailable, including COGS or ad spend.

Net Margin %

Net profit as a share of net revenue.

Net Margin % = Net Profit / Net Revenue

It displays — whenever Net Profit is unavailable rather than treating an unavailable cost as $0.

Customers

These metrics appear in the Monthly Report's Customer Metrics section.

New Customers

Customers whose email appears in the report period but not before it.

New Customers = Current Emails NOT IN Prior Emails

Keel HQ compares unique customer email addresses in the report period with those from earlier orders.

Returning Customers

Customers whose email appears both in the report period and before it.

Returning Customers = Current Emails IN Prior Emails

Keel HQ compares customer email addresses regardless of capitalization.

Repeat Purchase Rate

The share of current-period customers who are returning.

Repeat Purchase Rate = Returning Customers / (New Customers + Returning Customers)

It uses the Monthly Report's new and returning customer sets.

LTV (12m)

Simplified lifetime value: average customer revenue over the trailing 12 months, not a cohort-based prediction.

LTV (12m) = Trailing 12m Revenue / Unique Customers (12m)

The window ends at the report-period end and uses unique customer emails.

Blended CAC

Ad spend required to acquire each new customer in the report period.

Blended CAC = Total Ad Spend / New Customers

This differs from the Overview CPA, which uses every order rather than only new customers.

LTV:CAC Ratio

The relationship between simplified LTV and blended CAC.

LTV:CAC Ratio = LTV (12m) / Blended CAC

It uses the Monthly Report's trailing-12-month LTV and blended CAC.

The Monthly Report's paid-ads metrics use Meta campaign data. Its Blended ROAS is Meta's platform-attributed purchase value divided by Meta spend; it is distinct from the Overview's blended, business-wide ratio.

Total Ad Spend

Total spend across Meta campaigns in the report period.

Total Ad Spend = total Meta campaign spend

This monthly-report metric is Meta Ads only; other ad channels are not synced into the report.

Total Ad Revenue

Meta-attributed purchase value across campaigns.

Total Ad Revenue = total Meta-attributed purchase value

It is platform-attributed revenue, not Keel HQ net revenue.

Blended ROAS

Meta's own attributed return-on-spend figure, which differs from the Overview's net-revenue Blended ROAS.

Blended ROAS = Total Ad Revenue / Total Ad Spend

It uses Meta-attributed revenue and Meta spend.

CPA

Cost per Meta conversion in the Monthly Report.

CPA = Total Ad Spend / Total Conversions

It uses Meta campaign conversions, rather than the Overview's Shopify-order count.

Impressions

Total Meta campaign impressions.

Impressions = total Meta campaign impressions

It is supplied by Meta campaign data.

Reach

Total Meta campaign reach.

Reach = total Meta campaign reach

It is supplied by Meta campaign data.

CPM

Impression-weighted Meta cost per thousand impressions.

CPM = impression-weighted campaign cost per thousand impressions

It is weighted by each campaign's impressions, not a simple average of campaign CPMs.

Prospecting Spend %

The share of Meta spend on prospecting campaigns.

Prospecting Spend % = prospecting campaign spend / Total Ad Spend

Campaign classification determines whether spend is prospecting.

Retargeting Spend %

The share of Meta spend on campaigns not marked as prospecting.

Retargeting Spend % = retargeting campaign spend / Total Ad Spend

Campaign classification determines whether spend is retargeting.

Email

The Monthly Report's email metrics use Klaviyo campaign and flow data.

Total Email Revenue

Klaviyo-attributed revenue from campaigns and flows.

Total Email Revenue = campaign-attributed revenue + flow-attributed revenue

It is attribution data from Klaviyo, not Shopify net revenue.

Email Revenue % of Net

The share of net revenue attributed to email.

Email Revenue % of Net = Total Email Revenue / Net Revenue

It uses the Monthly Report's total email revenue and net revenue.

Avg Open Rate

The average campaign open rate.

Avg Open Rate = average open rate across campaigns

It is averaged across campaigns.

Avg Click Rate

The average campaign click rate.

Avg Click Rate = average click rate across campaigns

It is averaged across campaigns.

Avg Unsubscribe Rate

The average unsubscribe rate across email sends.

Avg Unsubscribe Rate = average unsubscribe rate across campaigns and flows

Campaigns and flows both contribute to this average.

List Size

The current Klaviyo subscriber count.

List Size = current subscriber count from Klaviyo

This is a current count rather than a sum over the report month.

Net List Growth

The change in the Klaviyo subscriber list.

Net List Growth = List Size - Prior List Size

It compares the current list size with the prior list size.

Products

Product metrics are a gross-sales view: fully refunded and voided orders are excluded, while other lines count in full.

Revenue

Revenue grouped by Shopify product.

Revenue = total revenue for the product

For a paid order, a free gift contributes its list price to this gross-sales view.

Units

Units sold for each product.

Units = total product units sold

A paid order's free gifts are included. Whole zero-dollar orders follow the zero-dollar-order setting.

COGS

Cost of product units sold.

COGS = total cost of the product units sold

Keel HQ reports — for a product if any sold variant lacks COGS data; it does not report a partial product cost.

Gross Profit

Product revenue after product COGS.

Gross Profit = Revenue - COGS

It displays — when the product's COGS is incomplete.

Gross Margin %

Product gross profit as a share of product revenue.

Gross Margin % = Gross Profit / Revenue

It displays — when the product's COGS is incomplete.

Inventory

Inventory uses Shopify available quantities across every stocking location. Physical-stock reads count every unit that left stock, even a free unit; its sales velocity, sell-through, stockout, and days-of-inventory data therefore reflects stock movement rather than only paid revenue.

Units on Hand

Available inventory summed across all stocking locations.

Units on Hand = total Shopify available quantity across locations

If Keel HQ cannot read all inventory levels, the store sync fails instead of storing a partial total.

Sell-Through

The share of units sold from the units sold plus units remaining.

Sell-Through = Units Sold / (Units Sold + Units on Hand)

The product catalog uses a rolling 90-day sales window. A Drop's Sell-Through uses units sold since its drop date and its launch quantity; product-level Drop Sell-Through displays — when an older multi-product Drop has no per-product launch quantities.

Avg/Day (90d)

Average daily units sold over the product catalog's rolling sales window.

Avg/Day (90d) = Units Sold in trailing 90 days / 90

It powers the catalog's sell-through, inventory status, and stockout calculation.

Blended Sell-Through (90d)

Inventory-wide sell-through across the current catalog.

Blended Sell-Through (90d) = Total Units Sold in 90 days / (Total Units Sold in 90 days + Total Units on Hand)

With no sold or on-hand units, Keel HQ displays 0%.

DOI

Days of inventory available at the current average daily unit-sales pace.

DOI = Units on Hand / Avg Daily Units Sold

The Monthly Report uses DOI to identify stockout risk and overstock.

Stockout

Estimated calendar date on which inventory runs out at the current sales pace.

Stockout = Today + whole days of inventory remaining

With no average daily sales, it displays — rather than inventing a stockout date.

Stockout Risk

Products below the configured days-of-inventory minimum.

Stockout Risk = DOI is below the configured stockout threshold

The threshold comes from the report targets.

Overstock

Products above the configured days-of-inventory maximum.

Overstock = DOI is above the configured overstock threshold

The threshold comes from the report targets.

Inventory Retail Value

The retail-value estimate for on-hand stock.

Inventory Retail Value = Units on Hand * implied average unit price from sales

A product with stock but no sales to price it from is left out of retail totals, never counted as $0.

Inventory Cost Value

The COGS value of on-hand stock.

Inventory Cost Value = Units on Hand * unit COGS

A product with any in-stock unit lacking COGS is left out of cost totals and counted as uncosted, never summed as $0.

Dead Stock Flags

The count of in-stock products with no units sold in the trailing 90 days, subject to seasonal suppression.

Dead Stock Flags = number of in-stock products with 0 units sold in 90 days

Out-of-stock products are not flagged. Fall/winter products are not flagged in spring/summer, and spring/summer products are not flagged in fall/winter.

Cash forecast

The 14-Week Cash Forecast uses cash timing, not the Monthly Report's accrual-style sales and margins.

Cash from Sales

Projected DTC cash collected from sales after processor fees and cash refunds.

Cash from Sales = Projected Sales * (1 - fee rate - refund rate)

Projected sales use a four-week average for weeks 0–1, a seasonally adjusted four-week average for weeks 2–7, and a seasonally adjusted eight-week average for weeks 8–13. Refunded orders remain in sales because the money came in and their cash refund is deducted separately; refunds at or above sales produce no cash from sales.

Fee Rate

The processor-fee share used by the cash forecast.

Fee Rate = fees on scheduled payouts / gross scheduled payouts

When no payout has card charges, Keel HQ uses the default 3% processor fee rate.

Refund Rate

The cash-refund share of DTC sales over the trailing eight complete weeks.

Refund Rate = cash part of DTC refunds / sales

It is capped at 100%. Store-credit refund amounts are excluded because they return as gift cards; a mixed refund retains its cash part.

Opening Cash

The cash balances that count toward the forecast, rather than every connected account.

Opening Cash = total balances of accounts that count toward the forecast

Checking accounts count by default unless their name or purpose indicates tax, profit, or reserve; savings accounts do not. Keel HQ warns when the oldest counted balance is more than 48 hours old or has no as-of date.

Minimum Cash

The configured cash floor for the forecast.

Minimum Cash = the minimum cash balance you set in Cash → Settings → Minimum Cash

It defaults to $0. A week is a danger zone when ending cash falls below this amount.

Incoming (high confidence)

Expected incoming cash that is still due and high confidence.

Incoming (high confidence) = total expected high-confidence payments still to come

Pending Shopify payouts count while Shopify reports them pending; other expected payments remain counted when overdue. Written-off, received, cancelled, and past Shopify payout rows do not count.

Incoming

The forecast line for pending Shopify payouts and eligible expected payments.

Incoming = pending Shopify payouts + expected non-Shopify payments by week

High- and medium-confidence payments count in full. Low-confidence payments are excluded unless Include low-confidence payments is enabled; payments without a date or beyond the 14-week forecast are left out.

Updated October 28, 2026

On this page