Card Types — What Each Metric Tracks

~8 min read

Card Types — What Each Metric Tracks

Card types are the pre-built templates you pick when adding a card. Each type connects to a specific area of your Shopify store data and comes pre-configured with sensible defaults.

Available Card Types

Card type What it measures Supported visualizations Default window
Revenue Net and gross sales revenue Metric, Sparkline Last 30 days
Orders Total order count Metric, Sparkline Last 30 days
Avg Order Value (AOV) Average revenue per order (net sales ÷ orders) Metric Last 30 days
Items Sold Total net items sold Metric, Sparkline Last 30 days
Revenue Trend Day-by-day net revenue over the selected period Sparkline, Chart Last 30 days
Store Sessions Online store visitor sessions Metric, Sparkline Last 30 days
Sessions Trend Day-by-day visitor sessions over the selected period Sparkline, Chart Last 30 days
Top Products Top 10 products ranked by gross revenue Table Last 30 days
Inventory Health Products tracked, low-stock count (≤10 units), critical count (≤3 units) Badge Live
Custom The result of any SmashGL query you write All types As specified

AOV note: AOV cards use SHOW net_sales, orders. dashboardSMASHBOARD calculates AOV as net_sales ÷ orders automatically when both fields are present.

Inventory Health note: This card type uses Shopify's Admin API directly — not SmashGL. Low-stock and critical thresholds are configurable per card.

Legacy card types: Older dashboards may contain Orders Tracker (Gauge) and Revenue Monitor (Gauge) cards. These are still supported but for new dashboards, use the Orders or Revenue card type with a goal configured — they are more capable.

Common Ecommerce Goals by Category

The following tables show 50+ common goals for Shopify stores, grouped by category. For each goal: the recommended card type, visualization, time window, goal type, and a minimal SmashGL query.

How to read this section:

Namespace note: Examples use SmashGL's shopify.* shorthand (e.g. shopify.sales.net_sales AS revenue). Raw ShopifyQL from Shopify Analytics uses plain field names without that prefix (e.g. net_sales). Both work in the SOURCE clause.


Revenue Goals

Revenue is usually the primary OKR. Use Metric when you want the goal progress bar front and centre. Use Gauge for long-term fixed targets where the arc fill is the message. Use Sparkline when daily momentum matters.

# Goal Viz Window Goal type Key SmashGL
1 Hit a monthly revenue target Metric This month Absolute GOAL hit revenue to >= $50,000 this month
SOURCE shopify.sales.net_sales AS revenue
SMASH metric WITH alert TITLED "Monthly Revenue"
2 Grow revenue 15% vs last period Metric Rolling 30d Relative GOAL grow revenue by +15% over last 30 days
SOURCE shopify.sales.net_sales AS revenue, shopify.sales.gross_sales, shopify.sales.orders
SMASH metric WITH trend, alert TITLED "Revenue Growth (30d)"
3 Beat the same month last year Metric This month Relative GOAL grow revenue by +10% this month
COMPARE previousYear
SOURCE shopify.sales.net_sales AS revenue
SMASH metric WITH alert TITLED "Revenue vs Last Year"
4 Annual revenue target Gauge This year Absolute GOAL hit revenue to >= $600,000 this year
SOURCE shopify.sales.net_sales AS revenue
SMASH gauge TITLED "Annual Revenue Target"
5 Hit a quarterly revenue target Metric This quarter Absolute GOAL hit revenue to >= $150,000 this quarter
SOURCE shopify.sales.net_sales AS revenue
SMASH metric WITH alert TITLED "Quarterly Revenue"
6 Revenue trend — is growth accelerating? Sparkline Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASC
SMOOTH rolling7
SMASH sparkline WITH trend TITLED "Revenue Trend (30d)"
7 Revenue during a sale or campaign Metric Fixed range Absolute GOAL hit revenue to >= $25,000 from 2026-11-25 to 2026-11-30
SOURCE shopify.sales.net_sales AS revenue, shopify.sales.orders
SMASH metric WITH alert, forecast, gap TITLED "Campaign Revenue"
8 Daily revenue run rate Sparkline Rolling 7d None WINDOW over last 7 days
SOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "Revenue Run Rate (7d)"

Order Volume Goals

Order count is a leading indicator for revenue and easier to act on during a promotional period.

# Goal Viz Window Goal type Key SmashGL
9 Monthly order count target Metric This month Absolute GOAL hit orders to >= 500 this month
SOURCE shopify.sales.orders AS orders
SMASH metric WITH alert TITLED "Monthly Orders"
10 Grow orders 20% vs last period Metric Rolling 30d Relative GOAL grow orders by +20% over last 30 days
SOURCE shopify.sales.orders AS orders
SMASH metric WITH trend, alert TITLED "Order Growth (30d)"
11 Orders vs same period last year Metric This month Relative GOAL grow orders by +0% this month
COMPARE previousYear
SOURCE shopify.sales.orders AS orders
SMASH metric WITH alert TITLED "Orders vs Last Year"
12 Campaign order count target Metric Fixed range Absolute GOAL hit orders to >= 200 from 2026-04-01 to 2026-04-14
SOURCE shopify.sales.orders AS orders
SMASH metric WITH alert, forecast, gap TITLED "Campaign Orders"
13 Weekly order pace Metric This week Absolute GOAL hit orders to >= 125 this week
SOURCE shopify.sales.orders AS orders
SMASH metric WITH alert, risk TITLED "Weekly Orders"
14 Daily order velocity trend Sparkline Rolling 14d None WINDOW over last 14 days
SOURCE shopify.sales.orders AS orders GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "Order Velocity (14d)"

Average Order Value (AOV) Goals

AOV measures upsell and bundle effectiveness. A rising AOV with flat order count means more revenue per customer.

# Goal Viz Window Goal type Key SmashGL
15 Grow AOV 10% vs last period Metric Rolling 30d Relative GOAL grow aov by +10% over last 30 days
SOURCE shopify.sales.net_sales AS aov, shopify.sales.orders
SMASH metric WITH trend, alert TITLED "AOV Growth (30d)"
16 Hit a fixed target AOV Gauge Rolling 30d Absolute GOAL hit aov to >= $85 over last 30 days
SOURCE shopify.sales.net_sales AS aov, shopify.sales.orders
SMASH gauge TITLED "AOV Target"
17 AOV trend — is upselling working? Sparkline Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sales.net_sales AS aov, shopify.sales.orders GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "AOV Trend (30d)"
18 AOV vs same month last year Metric This month Relative GOAL grow aov by +5% this month
COMPARE previousYear
SOURCE shopify.sales.net_sales AS aov, shopify.sales.orders
SMASH metric WITH alert TITLED "AOV vs Last Year"
19 AOV floor during a promotion Metric Fixed range Absolute GOAL hit aov to >= $65 from 2026-11-25 to 2026-11-30
SOURCE shopify.sales.net_sales AS aov, shopify.sales.orders
SMASH metric WITH alert, gap TITLED "Promo AOV Floor"

Gross Profit, COGS & Margin Goals

Prerequisite: The gross_profit and cost_of_goods_sold fields are only populated if you have cost of goods (COGS) entered in Shopify for your products (Products → variant cost). If values return zero, configure COGS in your Shopify product catalog first.

# Goal Viz Window Goal type Key SmashGL
20 Hit gross profit target this month Metric This month Absolute GOAL hit gp to >= $20,000 this month
SOURCE shopify.sales.gross_profit AS gp
SMASH metric WITH alert TITLED "Gross Profit This Month"
21 Grow gross profit 15% vs last period Metric Rolling 30d Relative GOAL grow gp by +15% over last 30 days
SOURCE shopify.sales.gross_profit AS gp
SMASH metric WITH trend, alert TITLED "GP Growth (30d)"
22 Annual gross profit target Gauge This year Absolute GOAL hit gp to >= $250,000 this year
SOURCE shopify.sales.gross_profit AS gp
SMASH gauge TITLED "Annual Gross Profit"
23 Gross profit trend — are margins improving? Sparkline Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sales.gross_profit AS gp GROUP BY day ORDER BY day ASC
SMOOTH rolling7
SMASH sparkline WITH trend TITLED "GP Trend (30d)"
24 Gross profit vs same month last year Metric This month Relative GOAL grow gp by +10% this month
COMPARE previousYear
SOURCE shopify.sales.gross_profit AS gp
SMASH metric WITH alert TITLED "GP vs Last Year"
51 Monthly gross profit goal (Gauge) Gauge This month Absolute GOAL hit profit to >= $20,000 this month vs last year
FORMAT currency
SOURCE shopify.sales.gross_profit AS profit
SMASH gauge WITH alert TITLED "Monthly Gross Profit"
52 Quarterly profit growth vs same quarter last year Metric This quarter Relative GOAL grow profit by +20% this quarter vs same quarter last year
FORMAT currency
SOURCE shopify.sales.gross_profit AS profit
SMASH metric WITH alert, gap, risk TITLED "Quarterly Gross Profit"
53 Track Cost of Goods Sold (lower is better) Metric This month Absolute GOAL reduce cost by 5% this month
FORMAT currency
SOURCE shopify.sales.cost_of_goods_sold AS cost
SMASH metric WITH trend TITLED "Cost of Goods Sold"
54 COGS trend vs prior year — watch for cost creep Sparkline Rolling 30d None WINDOW over last 30 days
COMPARE previousYear
SMOOTH rolling7
FORMAT currency
SOURCE shopify.sales.cost_of_goods_sold AS cost GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "COGS Trend"

Goal 53 — COGS as a lower-is-better metric: Add DIRECTION lower (or use reduce cost by X%) to invert the Status bands. A COGS that drops vs. last period is good — the Trend pill turns green when costs fall and red when they rise.


Traffic & Session Goals

Store sessions measure top-of-funnel health. Running ads? Session trend tells you if the spend is working day by day.

# Goal Viz Window Goal type Key SmashGL
25 Grow store sessions 25% vs last period Metric Rolling 30d Relative GOAL grow sessions by +25% over last 30 days
SOURCE shopify.sessions.online_store_visitors AS sessions
SMASH metric WITH trend, alert TITLED "Session Growth (30d)"
26 Monthly traffic target Metric This month Absolute GOAL hit sessions to >= 10,000 this month
SOURCE shopify.sessions.online_store_visitors AS sessions
SMASH metric WITH alert TITLED "Monthly Sessions"
27 Traffic trend — see ad campaign impact Sparkline Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sessions.online_store_visitors AS sessions GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "Traffic Trend (30d)"
28 Sessions vs same period last year Metric This month Relative GOAL grow sessions by +20% this month
COMPARE previousYear
SOURCE shopify.sessions.online_store_visitors AS sessions
SMASH metric WITH alert TITLED "Sessions vs Last Year"
29 Campaign traffic window Metric Fixed range Absolute GOAL hit sessions to >= 5,000 from 2026-04-01 to 2026-04-14
SOURCE shopify.sessions.online_store_visitors AS sessions
SMASH metric WITH alert, forecast, gap TITLED "Campaign Traffic"

Items Sold Goals

Items sold is a good proxy for product volume and unit economics. A rising items-sold count with flat revenue signals decreasing AOV.

# Goal Viz Window Goal type Key SmashGL
30 Monthly items sold target Metric This month Absolute GOAL hit items to >= 2,000 this month
SOURCE shopify.sales.net_items_sold AS items
SMASH metric WITH alert TITLED "Items Sold This Month"
31 Grow items sold 10% vs last period Metric Rolling 30d Relative GOAL grow items by +10% over last 30 days
SOURCE shopify.sales.net_items_sold AS items
SMASH metric WITH trend, alert TITLED "Items Growth (30d)"
32 Items sold trend — which days ship the most Sparkline Rolling 14d None WINDOW over last 14 days
SOURCE shopify.sales.net_items_sold AS items GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "Items Sold Trend (14d)"
33 Product launch velocity Gauge Since launch date Absolute GOAL hit items to >= 500 from 2026-03-01
SOURCE shopify.sales.net_items_sold AS items
SMASH gauge TITLED "Launch Velocity"

Goal 33 tip: Use the product's launch date as the window start. The Gauge fills toward your target as units accumulate since day one.


Top Product Goals

Top Products answers "which ones?" rather than "how much?" Table is the only appropriate visualization for all of these goals because the query returns multiple ranked rows.

# Goal Viz Window Goal type Key SmashGL
34 Top 10 revenue drivers this quarter Table This quarter None WINDOW this quarter
SOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10
SMASH table TITLED "Top Products This Quarter"
35 Top 10 products over last 90 days Table Rolling 90d None WINDOW over last 90 days
SOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10
SMASH table TITLED "Top Products (90d)"
36 New arrivals — early sales leaders Table Rolling 14d None WINDOW over last 14 days
SOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10
SMASH table TITLED "New Arrival Leaders (14d)"
37 Campaign top performers Table Fixed range None WINDOW from 2026-11-25 to 2026-11-30
SOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10
SMASH table TITLED "Campaign Top Sellers"
38 Top products by units sold Table Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sales.net_items_sold AS items GROUP BY product_title ORDER BY net_items_sold DESC LIMIT 10
SMASH table TITLED "Top Products by Units"

Tip: Run goals 35 and 36 side by side. The 90-day table shows your established best sellers; the 14-day table shows which new products are gaining traction fastest.


Seasonal & Campaign Goals

Fixed date ranges are the key tool for seasonal and campaign tracking. The card shows live data while the campaign is running, then freezes when it ends.

# Goal Viz Window Goal type Key SmashGL
39 Black Friday single-day revenue Metric Fixed (one day) Absolute GOAL hit revenue to >= $20,000 from 2026-11-27 to 2026-11-27
SOURCE shopify.sales.net_sales AS revenue, shopify.sales.orders
SMASH metric WITH alert, forecast, gap TITLED "Black Friday Revenue"
40 BFCM weekend total Gauge Fixed (4 days) Absolute GOAL hit revenue to >= $50,000 from 2026-11-27 to 2026-11-30
SOURCE shopify.sales.net_sales AS revenue
SMASH gauge TITLED "BFCM Weekend Total"
41 Q4 holiday season cumulative Metric Fixed (Oct–Dec) Absolute GOAL hit revenue to >= $200,000 from 2026-10-01 to 2026-12-31
SOURCE shopify.sales.net_sales AS revenue, shopify.sales.orders
SMASH metric WITH alert, forecast, risk, gap TITLED "Q4 Holiday Revenue"
42 Valentine's Day campaign Metric Fixed (Feb 7–14) Absolute GOAL hit revenue to >= $8,000 from 2027-02-07 to 2027-02-14
SOURCE shopify.sales.net_sales AS revenue, shopify.sales.orders
SMASH metric WITH alert, forecast, gap TITLED "Valentine's Day"
43 Back-to-school traffic surge Sparkline Fixed (Aug–Sep) None WINDOW from 2026-08-15 to 2026-09-05
SOURCE shopify.sessions.online_store_visitors AS sessions GROUP BY day ORDER BY day ASC
SMASH sparkline WITH trend TITLED "Back-to-School Traffic"
44 Post-sale revenue recovery Sparkline Rolling 14d None WINDOW over last 14 days
SOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASC
SMOOTH rolling7
SMASH sparkline WITH trend TITLED "Post-Sale Recovery (14d)"
45 Summer — hold the line vs last year Metric This month Relative (0%) GOAL grow revenue by +0% this month
COMPARE previousYear
SOURCE shopify.sales.net_sales AS revenue
SMASH metric WITH alert TITLED "Hold vs Last Year"
46 New year Q1 momentum vs last year Metric This quarter Relative GOAL grow revenue by +15% this quarter
COMPARE previousYear
SOURCE shopify.sales.net_sales AS revenue
SMASH metric WITH alert, risk TITLED "Q1 Momentum vs Last Year"

Goal 40 (BFCM Gauge) vs Goal 39 (BF Metric): Use Gauge for the full BFCM weekend to see the arc fill across the 4-day total. Use Metric for Black Friday specifically because you also want to compare vs. last Black Friday — Metric's vs-prior comparison pill delivers that; Gauge does not.


Operational & Retention Signals

Some goals are about maintaining health rather than growing. The right frame is often "don't fall below X" or "watch for unexpected drops."

# Goal Viz Window Goal type Key SmashGL
47 Low-stock inventory alerts Badge Live None Use the Inventory Health card type — configure low-stock and critical thresholds in card settings
48 Maintain order volume during off-season Metric Rolling 30d Relative (0%) GOAL grow orders by +0% over last 30 days
COMPARE previousYear
SOURCE shopify.sales.orders AS orders
SMASH metric WITH alert TITLED "Orders — Hold vs Last Year"
49 Weekly order pattern for staffing Chart Rolling 90d None WINDOW over last 90 days
SOURCE shopify.sales.orders AS orders GROUP BY day ORDER BY day ASC
SMOOTH rolling7
SMASH chart WITH trend TITLED "Order Pattern (90d)"
50 Items sold trend — watch for post-promo drop Sparkline Rolling 30d None WINDOW over last 30 days
SOURCE shopify.sales.net_items_sold AS items GROUP BY day ORDER BY day ASC
SMOOTH rolling7
SMASH sparkline WITH trend TITLED "Items Sold Trend (30d)"

Goal 48 tip: A +0% relative goal against previousYear is a "don't lose ground" OKR — the Alert goes red if you fall below last year's pace, amber when you're close, and green when you're ahead.


Turning a ShopifyQL Query into a Goal Card

If you already use Shopify Analytics and have reports you check manually, you can turn any of them into a live goal card in a few steps.

Step 1 — Copy your query from Shopify Analytics

In your Shopify admin, go to Analytics → Reports, open a report, and copy the ShopifyQL query body:

FROM sales
SHOW net_sales, gross_sales, orders
SINCE -30d UNTIL today

Step 2 — Open the Code tab on a new card

Add a card to any dashboard and switch immediately to the Code tab.

Step 3 — Paste into SOURCE and add a SMASH line

Plain field names work without the shopify.* namespace:

SOURCE    net_sales, gross_sales, orders
          FROM sales
          SINCE -30d UNTIL today
SMASH metric TITLED "Revenue (test)"

Save the card. If a number appears, the query is returning data.

Step 4 — Add a GOAL clause

GOAL      hit net_sales to >= $50,000 over last 30 days
SOURCE    net_sales, gross_sales, orders
          FROM sales
          SINCE -30d UNTIL today
SMASH metric WITH alert TITLED "Monthly Revenue"

Step 5 — Switch to a calendar window (recommended)

Replace the rolling SINCE -30d UNTIL today with a SmashGL calendar window to unlock Forecast and Time Left:

GOAL      hit net_sales to >= $50,000 this month
SOURCE    net_sales, gross_sales, orders
          FROM sales
SMASH metric WITH alert, forecast TITLED "Monthly Revenue"

Step 6 — Add flags to complete the card

GOAL      hit net_sales to >= $50,000 this month
SOURCE    net_sales, gross_sales, orders
          FROM sales
SMASH metric WITH alert, forecast, gap, trend TITLED "Monthly Revenue"

The card now shows: hero number · OKR goal statement · progress bar · vs-prior Trend pill · Forecast band · Gap to goal · Time Left.


OKR Dashboard Layout Patterns

Monthly OKR layout — your 3–5 most important Key Results on one dashboard with "This month" windows:

  1. Revenue (Metric) — monthly target with OKR progress bar
  2. Orders (Metric) — monthly order count goal
  3. AOV (Metric or Gauge) — average order value target
  4. Store Sessions (Metric) — traffic target

Growth Tracking layout — rolling windows that give a continuous read on momentum:

  1. Revenue (Sparkline, 30d) — is the trend accelerating?
  2. Orders (Sparkline, 14d) — daily order velocity
  3. Sessions (Sparkline, 30d) — traffic trend with smoothing

Year-in-Review layout — long-horizon targets for annual planning:

  1. Revenue (Gauge, this year) — annual revenue target arc
  2. Gross Profit (Gauge, this year) — annual profit target arc
  3. Orders (Metric, this year, compare previous year) — YoY order volume
  4. Top Products (Table, this year) — which products drove the year

Still need help?