LMNT — Locked-In Metric Definitions
Source: Brainforge x LMNT – Data Platform Documentation (Core Metrics sheet)
Effective date: 2026-03-11
Purpose: Single reference for “locked-in” metric definitions. Use this document for stakeholder sign-off and for consistent reporting and dashboards.
Why a separate definitions doc?
The Data Platform Documentation spreadsheet holds the same information in a grid (columns: Business Definition, Formula, Source, Owner, Refresh, etc.). That grid is the source of truth for build and lineage. This document turns that grid into a readable, sign-off-friendly set of definitions so the client can “lock in” what each metric means without digging through columns.
If there is a conflict between this doc and the spreadsheet, the spreadsheet wins; update this doc to match.
How to use this document
- Stakeholders: Review your domain’s metrics and confirm the definition, formula, and notes match how you use the metric.
- Analytics / BI: Use these definitions when building or changing reports and dashboards.
- Changes: To change a definition, update the Data Platform Documentation spreadsheet first, then update this doc and bump the effective date.
Ecommerce
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| ecomm_revenue | E-commerce Revenue | E-commerce revenue based on order placed date (midnight). | SUM(order_total) or revenue by order_placed_date | Revenue | Day | Shopify, Amazon Seller Central, Walmart.com 3P | Carlos Hernandez | Daily |
| gross_revenue | Gross Revenue | Total revenue generated across all specified channels. | SUM(order_total) | Revenue | Day | Amazon / Shopify (per row) | Carlos Hernandez | Daily |
| net_revenue_before_taxes | Net Revenue before taxes | Revenue after discounts and returns, including shipping charges but excluding taxes, across all applicable channels. | Gross Revenue - Discounts - Refunds + Shipping | Revenue | Day | Amazon / Shopify | Carlos Hernandez | Daily |
| net_revenue | Net Revenue after taxes | Revenue after discounts and returns, including shipping charges & taxes, across all applicable channels. | Gross Revenue - Discounts - Refunds + Shipping + Taxes | Revenue | Day | Amazon / Shopify | Carlos Hernandez | Daily |
| taxes | Total Taxes | Total taxes. | Item tax + Shipping tax + Gift wrap tax (Amazon); sum(taxes) (Shopify) | Revenue | Day | Amazon / Shopify | Carlos Hernandez | Daily |
| aov | AOV | The average revenue generated per order during a given time period. | sum(gross_revenue) / count orders | Revenue (ratio) | Order | Amazon, Walmart 3P, Shopify | Carlos Hernandez | Daily |
| ltv | LTV | The total revenue expected from a customer over the duration of their relationship with the brand. | (Derivative) | Revenue | Customer | Shopify, Amazon, Walmart 3P | Carlos Hernandez | Daily |
| new_customer_revenue | New Customer Revenue | The total revenue generated from customers making their first-ever purchase with the brand. | (Derivative) | Revenue | Day | Shopify Wholesale, Shopify Retail, Amazon, Walmart 3P, Emerson | Carlos Hernandez | Daily |
| returning_customer_revenue | Returning Customer Revenue | The total revenue generated from customers who have made at least one prior purchase. | (Derivative) | Revenue | Day | Shopify Wholesale, Emerson, Walmart 3P, Amazon, Shopify Retail | Carlos Hernandez | Daily |
| subscriber_revenue | Subscriber Revenue | The portion of total revenue generated specifically from active, recurring subscription orders, excluding one-time purchases. | (Derivative) | Revenue | Day | Shopify Retail | Carlos Hernandez | Daily |
| non_subscriber_revenue | Non Subscriber Revenue | The portion of total revenue generated specifically from one-time purchases. | (Derivative) | Revenue | Day | Shopify Retail, Amazon Seller Central | Carlos Hernandez | Daily |
| refunds | Refunds | The dollar value of refunded goods; includes partial refunds. | SUM(refunded_product_revenue) | Revenue | Day | Shopify, Amazon Seller Central, Stripe, ReCharge, Chargebee | Carlos Hernandez | Daily |
| discounts | Discounts (Ecommerce) | Amount of discounts applied to orders (e.g. website, sub&save). | SUM(discounts) | Revenue | Day | Shopify, Stripe, ReCharge | Carlos Hernandez | Daily |
Notes (from spreadsheet): Gross revenue is reported before returns/discounts; revenue recognition may be by delivery date on some channels.
Marketing
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| partnerships_revenue | Partnerships Revenue | Revenue attributed to partnerships / affiliate channel. | (Derivative) | — | — | Shopify Retail | — | — |
| total_channel_marketing_spend | Total Channel Marketing Spend | Total marketing spend used in MER (Total Revenue / Total Marketing Spend). | SUM(marketing spend) | Cost | Period | Ad Platforms, Shopify, Config Cost tab | Marketing | Daily |
| mer | MER | Marketing Efficiency Ratio. | Total Revenue / Total Marketing Spend | Efficiency | Period | Shopify, Ad Platforms, GA | Marketing | Daily |
| acquisition_mer | Acquisition MER | Revenue from first-time purchases divided by marketing spend targeted at new customers. | New Customer Revenue / Acquisition Ad Spend | Efficiency | Period | Shopify, Ad Platforms | Marketing | Weekly |
| advertising_to_sales_ratio | Advertising-to-Sales Ratio | The percentage of gross sales revenue that is spent on advertising costs. | Total Ad Spend / Gross Sales | Cost | Period | Ad Platforms, Shopify | Finance | Monthly |
| ad_attributed_roas | Ad-attributed ROAS | Return On Ad Spend: Revenue directly attributed to specific advertising campaigns. | Attributed Revenue / Ad Spend (platform reported) | Efficiency | Campaign | Ad Platforms, GA | Marketing | Daily |
| blended_cac_(first_time_purchases) | Blended CAC (first time purchases) | Average total cost (ad spend + overhead) to acquire a new first-time customer. | (Total Ad Spend + Growth Overhead) / New Customers | Cost | Customer | Shopify, Ad Platforms | Growth | Monthly |
| ad_attributed_cac | Ad-attributed CAC | Average media cost required to acquire a new customer via paid advertising channels. | Total Ad Spend / Ad-attributed New Customers | Cost | Customer | Ad Platforms, GA | Marketing | Daily |
| ad_attributed_new_customers | Ad-attributed New Customers | The count of unique customers whose first purchase was directly attributed to an ad click/view. | COUNT(DISTINCT customer_id) WHERE acquisition_channel = ‘Paid Ad’ | Volume | Customer | Google Analytics | Marketing | Daily |
Notes: total_channel_marketing_spend includes custom spend from Config sheet. MER generally uses LTM (Last Touch Marketing) attribution. ROAS is based on platform’s click/view window (e.g. 7-day click). Blended CAC includes non-media costs (e.g. creative).
Lifecycle (E‑commerce subscriptions)
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| new_ecomm_subs | New E-commerce Subscribers | Count of new subscribers in period (first active subscription). | COUNT new subscribers | Volume | Day | ReCharge, Shopify Retail | Carlos Hernandez | Daily |
| churned_ecomm_subs | Churned E-commerce Subscribers | Count of subscribers who churned in period (no longer active). | COUNT churned | Volume | Day | ReCharge, Shopify Retail | Carlos Hernandez | Daily |
| reactivated_ecomm_subs | Reactivated E-commerce Subscribers | Count of previously churned subscribers who reactivated in period. | COUNT reactivated | Volume | Day | ReCharge, Shopify Retail | Carlos Hernandez | Daily |
| subscriber_count | Subscriber Count | The total number of unique customers with an active subscription. | COUNT(DISTINCT customer_id) WHERE subscription_status = ‘Active’ | Volume | Customer | Shopify Retail | Lifecycle | Daily |
| drink_mix_subscriber_count | Drink Mix Subscriber Count | The total number of active subscribers receiving Drink Mix products. | COUNT(DISTINCT customer_id) WHERE product_scope = ‘Drink Mix’ AND status = ‘Active’ | Volume | Customer | Shopify Retail | Lifecycle | Daily |
| sparkling_subscriber_count | Sparkling Subscriber Count | The total number of active subscribers receiving Sparkling products. | COUNT(DISTINCT customer_id) WHERE product_scope = ‘Sparkling’ AND status = ‘Active’ | Volume | Customer | Shopify Retail | Lifecycle | Daily |
Notes: Subscriber count excludes customers in a ‘paused’ state.
Wholesale
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| wholesale_churn | Wholesale Churn | Wholesale partners churned in period (non-cumulative; per LMNT agreement Feb 2026). | COUNT partners churned | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| new_wholesale_partners | New Wholesale Partners | Count of new wholesale partners added in period. | COUNT new partners | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| reactivated_wholesale_partners | Reactivated Wholesale Partners | Count of previously churned wholesale partners who reactivated in period. | COUNT reactivated partners | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_new_applicants | Wholesale New Applicants | Count of new wholesale applicants in period (e.g. application form submissions). | COUNT(applicants) | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_accounts_created | Wholesale Accounts Created | Count of new wholesale accounts created in period. | COUNT(accounts_created) | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_application_conversion_rate | Wholesale Application Conversion Rate | Share of applicants that become accounts (accounts created / new applicants). | Accounts Created / New Applicants | Ratio | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_active_partner_count | Wholesale Active Partner Count | Count of active wholesale partners (e.g. with orders in period or active status). | COUNT(DISTINCT partner_id) WHERE status=active | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_churned_partner_count | Wholesale Churned Partner Count | Count of wholesale partners churned in period (non-cumulative; align with wholesale_churn definition). | COUNT(churned_partners) | Volume | Period | Shopify Wholesale, Wholesale CRM | Laura Putnam | Weekly |
| wholesale_total_orders | Wholesale Total Orders | Total order count from wholesale channel. | COUNT(orders) | Volume | Day | Shopify Wholesale | Laura Putnam | Daily |
| wholesale_total_revenue | Wholesale Total Revenue | Total revenue from wholesale channel. | SUM(revenue) | Revenue | Day | Shopify Wholesale | Laura Putnam | Daily |
| wholesale_revenue_by_product_category | Wholesale Revenue by Product Category | Revenue from wholesale broken down by product category. | SUM(revenue) GROUP BY product_category | Revenue | Day | Shopify Wholesale | Laura Putnam | Daily |
Growth (owned e‑commerce)
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| cvr | CVR | Conversion Rate: The percentage of website sessions that resulted in a purchase transaction. | (Purchases / Sessions) * 100 | Ratio | Session | Google Analytics | Growth | Daily |
| traffic | Traffic | Total number of unique user sessions on the owned e-commerce website. | COUNT(DISTINCT session_id) | Volume | Session | Google Analytics | Growth | Daily |
Notes: CVR uses standard Google Analytics definition (Transaction CVR). Traffic filtered to exclude bot traffic in GA.
Retail (trade, POS, store, discounts)
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| trade_spend | Trade Spend | Trade spend / merchandising allowances for retail. | SUM(trade_spend) | Cost | Period | Emerson, SPINS, Retail systems | Will Rossiter | Monthly |
| chargebacks | Chargebacks (Retail) | Chargebacks from payment processors or retailers; in-store returns or deductions. | SUM(chargebacks) / SUM(chargeback_amount) | Cost | Period | Retail / Finance systems | Will Rossiter | Monthly |
| discounts | Discounts (Retail) | Discounts applied (e.g. payment terms, volume). | SUM(discounts) | Revenue | Period | Shopify, Emerson, Retail | Will Rossiter | Daily |
| early_payment_discounts | Early Payment Discounts | Early payment discounts applied. | SUM(early_payment_discounts) | Revenue | Period | Retail / Finance systems | Will Rossiter | Monthly |
| border_tax | Border Tax | Border tax (e.g. Costco Canada). | SUM(border_tax) | Revenue | Period | Retail systems | Will Rossiter | Monthly |
| POS Revenue | POS Revenue | Point-of-sale revenue from retail channels. | SUM(POS revenue) | Revenue | Day | Emerson, SPINS | Will Rossiter | Daily |
| pos_units_sold | POS Units Sold | Units sold at point of sale. | SUM(units_sold) | Volume | Day | Emerson, SPINS | Will Rossiter | Daily |
| store_count | Store Count | Number of stores where SKU is sold. | COUNT(DISTINCT store_id) | Volume | Period | Emerson, SPINS | Will Rossiter | Weekly |
| is_sold_in_store_count | Is Sold In Store Count | Binary or count: is SKU sold in store (e.g. by store-SKU). | COUNT or flag | Volume | Period | Emerson, SPINS | Will Rossiter | Weekly |
| store_count_by_sku | Store Count by SKU | Number of stores carrying each SKU. | COUNT(DISTINCT store_id) BY sku | Volume | Period (SKU) | Emerson, SPINS | Will Rossiter | Weekly |
| sales_velocity | Sales Velocity | Units sold by store in time frame (sell-through rate). | SUM(units_sold) by store | Volume | Day | Emerson, SPINS | Will Rossiter | Daily |
Notes: Chargebacks note (from spreadsheet): late delivery, damage, semi fulfilled order, retail returns. Discounts (retail): payment terms. Border tax: currently exists for Costco Canada.
Retail — Period Comparisons (added 2026-03-23)
These metrics power the Executive Pulse dashboard and SKU drill-down. Defined once in dbt (retail_rpt_daily_comparisons, retail_rpt_weekly_comparisons) and surfaced through Omni Topics.
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| sdlw_sales | SDLW Sales | POS sales on the same weekday in the prior week. | Lookup: business_date - 7 days. | Revenue | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| sdlw_units | SDLW Units | POS units on the same weekday in the prior week. | Lookup: business_date - 7 days. | Volume | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| sdlm_sales | SDLM Sales | POS sales on the same nth weekday occurrence in the prior month (e.g. 2nd Tuesday of Feb vs 2nd Tuesday of Jan). If the nth occurrence doesn’t exist in the prior month, falls back to the 1st occurrence. | Nth-weekday match in prior calendar month; fallback to 1st occurrence. | Revenue | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| sdlm_units | SDLM Units | POS units on the same nth weekday occurrence in the prior month. | Same as sdlm_sales, unit measure. | Volume | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| sdly_sales | SDLY Sales | POS sales on the same Walmart fiscal week number + weekday in the prior Walmart fiscal year. | Map date → WM_YR_WK_NBR via WALMART_CALENDAR; find (WM_YR_WK_NBR - 100) + same weekday. | Revenue | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| sdly_units | SDLY Units | POS units on the same Walmart fiscal week + weekday in the prior year. | Same as sdly_sales, unit measure. | Volume | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| swly_sales | SWLY Sales | POS sales for the same full Walmart fiscal week in the prior year. | Map week_end_date → WM_YR_WK_NBR; find (WM_YR_WK_NBR - 100). | Revenue | Week | retail_rpt_weekly_comparisons | Will Rossiter | Weekly |
| swly_units | SWLY Units | POS units for the same full Walmart fiscal week in the prior year. | Same as swly_sales, unit measure. | Volume | Week | retail_rpt_weekly_comparisons | Will Rossiter | Weekly |
| wow_pct_sales | WoW % (Sales) | Week-over-week percentage change in POS sales. | (current - sdlw) / sdlw | Ratio | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| mom_pct_sales | MoM % (Sales) | Month-over-month percentage change in POS sales (weekday-aligned). | (current - sdlm) / sdlm | Ratio | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
| yoy_pct_sales | YoY % (Sales) | Year-over-year percentage change in POS sales (Walmart calendar-aligned). | (current - sdly) / sdly | Ratio | Day | retail_rpt_daily_comparisons | Will Rossiter | Daily |
Retail — Inventory & Velocity (added 2026-03-23)
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| on_hand_quantity | On-Hand Units | Current inventory units at store-SKU location. | ending_on_hand_q (Target) or ty_on_hand_qty (Walmart) | Volume | Day × Store × SKU | retail_fct_inventory | Jason Wu | Daily |
| on_order_quantity | On-Order Units | Units on purchase order at store level (Walmart only). | ty_on_order_qty | Volume | Day × Store × SKU | retail_fct_inventory | Jason Wu | Daily |
| in_transit_quantity | In-Transit Units | Units in transit to store (Walmart only). | ty_in_transit_qty | Volume | Day × Store × SKU | retail_fct_inventory | Jason Wu | Daily |
| total_pipeline_quantity | Total Pipeline | On-hand + on-order + in-transit. | on_hand_quantity + on_order_quantity + in_transit_quantity | Volume | Day × Store × SKU | retail_fct_inventory | Jason Wu | Daily |
| out_of_stock_rate | OOS Rate | Percentage of store-SKU-day observations out of stock. | (oos_count / total_observations) * 100 | Ratio | Period | retail_rpt_weekly_inventory_summary | Jason Wu | Weekly |
| weeks_of_supply | Weeks of Supply | On-hand inventory / weekly sales velocity. Validate formula with Supply Chain before publishing. | on_hand_quantity / (avg_daily_units * 7) | Ratio | Period | Derived (retail_fct_inventory + retail_rpt_product_performance) | Jason Wu | Weekly |
| potential_lost_sales | Potential Lost Sales | Flag for store-SKU-days where inventory is zero but POS revenue exists in recent period. Proxy for lost revenue due to stockout. | CASE WHEN on_hand = 0 AND recent_pos_revenue > 0 THEN 1 ELSE 0 END | Flag | Day × Store × SKU | Derived (retail_fct_inventory + retail_fct_sales) | Will Rossiter | Daily |
Supply Chain
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| retail_available_inventory | Retail Available Inventory | Units available at retail (e.g. in stores or retail DC). | SUM(available_inventory) | Volume | Day | Emerson, SPINS, Ware2Go | Jason Wu | Daily |
| lmnt_available_inventory | LMNT Available Inventory | Inventory on hand or in transit for LMNT (e.g. own warehouse). | SUM(on_hand + in_transit) | Volume | Day | Internal / warehouse systems | Jason Wu | Daily |
| weeks_available_inventory | Weeks of Available Inventory | Weeks of supply: inventory divided by sales velocity. Helps smooth PO from retailers. | Available Inventory / Sales Velocity | Ratio | Period | Inventory systems, Emerson, SPINS | Jason Wu | Weekly |
| shrink (scrap?) | Shrink (Scrap) | Inventory loss from shrink or scrap. | SUM(shrink_units) or value | Volume | Period | Internal / warehouse | Jason Wu | Weekly |
| expired/damaged | Expired / Damaged | Inventory written off as expired or damaged. | SUM(expired_units + damaged_units) | Volume | Period | Internal / warehouse | Jason Wu | Weekly |
CX (Customer support)
| Metric ID | Metric Name | Business Definition | Formula / Logic | Type | Grain | Source | Owner | Refresh |
|---|---|---|---|---|---|---|---|---|
| replacements | Replacements | Count or value of replacement orders/shipments (e.g. for damaged/lost). | COUNT(replacement_orders) or SUM(value) | Volume | Period | Gorgias, Shopify | Landon Brown | Daily |
| first_response_time | First response time | Time from ticket creation to first agent response. | AVG(resolution_time - created_at) or platform metric | Time | Ticket | Gorgias | Landon Brown | Daily |
| ticket_resolution_time | Ticket resolution time | Time from ticket creation to resolution (closed). | AVG(closed_at - created_at) or platform metric | Time | Ticket | Gorgias | Landon Brown | Daily |
| tickets_handled | Tickets handled | Count of support tickets handled (e.g. responded to or resolved) in period. | COUNT(ticket_id) | Volume | Day | Gorgias | Landon Brown | Daily |
| ticket_count | Ticket count | Count of support tickets (e.g. from Gorgias). | COUNT(ticket_id) | Volume | Day | Gorgias | Landon Brown | Daily |
Changelog (this document)
| Date | Change |
|---|---|
| 2026-03-11 | Initial locked-in definitions extracted from Data Platform Documentation Core Metrics sheet. |
| 2026-03-23 | Added retail period comparison metrics (SDLW, SDLM, SDLY, SWLY, WoW/MoM/YoY %) and inventory/velocity metrics (on-hand, on-order, in-transit, OOS rate, weeks of supply, potential lost sales) for Omni retail dashboards. |