Card Types — What Each Metric Tracks
~8 min readCard 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 asnet_sales ÷ ordersautomatically 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:
- Viz — recommended visualization (Metric, Sparkline, Chart, Gauge, Badge, Table)
- Window — the time period that best fits the goal
- Goal type — Absolute (hit a fixed number) or Relative (grow by a %)
- Key SmashGL — a minimal working query showing the GOAL, SOURCE, and SMASH clauses
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 monthSOURCE shopify.sales.net_sales AS revenueSMASH 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 daysSOURCE shopify.sales.net_sales AS revenue, shopify.sales.gross_sales, shopify.sales.ordersSMASH 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 monthCOMPARE previousYearSOURCE shopify.sales.net_sales AS revenueSMASH metric WITH alert TITLED "Revenue vs Last Year" |
| 4 | Annual revenue target | Gauge | This year | Absolute | GOAL hit revenue to >= $600,000 this yearSOURCE shopify.sales.net_sales AS revenueSMASH gauge TITLED "Annual Revenue Target" |
| 5 | Hit a quarterly revenue target | Metric | This quarter | Absolute | GOAL hit revenue to >= $150,000 this quarterSOURCE shopify.sales.net_sales AS revenueSMASH metric WITH alert TITLED "Quarterly Revenue" |
| 6 | Revenue trend — is growth accelerating? | Sparkline | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASCSMOOTH rolling7SMASH 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-30SOURCE shopify.sales.net_sales AS revenue, shopify.sales.ordersSMASH metric WITH alert, forecast, gap TITLED "Campaign Revenue" |
| 8 | Daily revenue run rate | Sparkline | Rolling 7d | None | WINDOW over last 7 daysSOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASCSMASH 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 monthSOURCE shopify.sales.orders AS ordersSMASH 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 daysSOURCE shopify.sales.orders AS ordersSMASH 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 monthCOMPARE previousYearSOURCE shopify.sales.orders AS ordersSMASH 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-14SOURCE shopify.sales.orders AS ordersSMASH metric WITH alert, forecast, gap TITLED "Campaign Orders" |
| 13 | Weekly order pace | Metric | This week | Absolute | GOAL hit orders to >= 125 this weekSOURCE shopify.sales.orders AS ordersSMASH metric WITH alert, risk TITLED "Weekly Orders" |
| 14 | Daily order velocity trend | Sparkline | Rolling 14d | None | WINDOW over last 14 daysSOURCE shopify.sales.orders AS orders GROUP BY day ORDER BY day ASCSMASH 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 daysSOURCE shopify.sales.net_sales AS aov, shopify.sales.ordersSMASH 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 daysSOURCE shopify.sales.net_sales AS aov, shopify.sales.ordersSMASH gauge TITLED "AOV Target" |
| 17 | AOV trend — is upselling working? | Sparkline | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sales.net_sales AS aov, shopify.sales.orders GROUP BY day ORDER BY day ASCSMASH sparkline WITH trend TITLED "AOV Trend (30d)" |
| 18 | AOV vs same month last year | Metric | This month | Relative | GOAL grow aov by +5% this monthCOMPARE previousYearSOURCE shopify.sales.net_sales AS aov, shopify.sales.ordersSMASH 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-30SOURCE shopify.sales.net_sales AS aov, shopify.sales.ordersSMASH metric WITH alert, gap TITLED "Promo AOV Floor" |
Gross Profit, COGS & Margin Goals
Prerequisite: The
gross_profitandcost_of_goods_soldfields 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 monthSOURCE shopify.sales.gross_profit AS gpSMASH 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 daysSOURCE shopify.sales.gross_profit AS gpSMASH metric WITH trend, alert TITLED "GP Growth (30d)" |
| 22 | Annual gross profit target | Gauge | This year | Absolute | GOAL hit gp to >= $250,000 this yearSOURCE shopify.sales.gross_profit AS gpSMASH gauge TITLED "Annual Gross Profit" |
| 23 | Gross profit trend — are margins improving? | Sparkline | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sales.gross_profit AS gp GROUP BY day ORDER BY day ASCSMOOTH rolling7SMASH 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 monthCOMPARE previousYearSOURCE shopify.sales.gross_profit AS gpSMASH 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 yearFORMAT currencySOURCE shopify.sales.gross_profit AS profitSMASH 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 yearFORMAT currencySOURCE shopify.sales.gross_profit AS profitSMASH 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 monthFORMAT currencySOURCE shopify.sales.cost_of_goods_sold AS costSMASH 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 daysCOMPARE previousYearSMOOTH rolling7FORMAT currencySOURCE shopify.sales.cost_of_goods_sold AS cost GROUP BY day ORDER BY day ASCSMASH 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 daysSOURCE shopify.sessions.online_store_visitors AS sessionsSMASH metric WITH trend, alert TITLED "Session Growth (30d)" |
| 26 | Monthly traffic target | Metric | This month | Absolute | GOAL hit sessions to >= 10,000 this monthSOURCE shopify.sessions.online_store_visitors AS sessionsSMASH metric WITH alert TITLED "Monthly Sessions" |
| 27 | Traffic trend — see ad campaign impact | Sparkline | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sessions.online_store_visitors AS sessions GROUP BY day ORDER BY day ASCSMASH sparkline WITH trend TITLED "Traffic Trend (30d)" |
| 28 | Sessions vs same period last year | Metric | This month | Relative | GOAL grow sessions by +20% this monthCOMPARE previousYearSOURCE shopify.sessions.online_store_visitors AS sessionsSMASH 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-14SOURCE shopify.sessions.online_store_visitors AS sessionsSMASH 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 monthSOURCE shopify.sales.net_items_sold AS itemsSMASH 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 daysSOURCE shopify.sales.net_items_sold AS itemsSMASH 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 daysSOURCE shopify.sales.net_items_sold AS items GROUP BY day ORDER BY day ASCSMASH 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-01SOURCE shopify.sales.net_items_sold AS itemsSMASH 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 quarterSOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10SMASH table TITLED "Top Products This Quarter" |
| 35 | Top 10 products over last 90 days | Table | Rolling 90d | None | WINDOW over last 90 daysSOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10SMASH table TITLED "Top Products (90d)" |
| 36 | New arrivals — early sales leaders | Table | Rolling 14d | None | WINDOW over last 14 daysSOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10SMASH table TITLED "New Arrival Leaders (14d)" |
| 37 | Campaign top performers | Table | Fixed range | None | WINDOW from 2026-11-25 to 2026-11-30SOURCE shopify.sales.gross_sales AS products GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10SMASH table TITLED "Campaign Top Sellers" |
| 38 | Top products by units sold | Table | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sales.net_items_sold AS items GROUP BY product_title ORDER BY net_items_sold DESC LIMIT 10SMASH 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-27SOURCE shopify.sales.net_sales AS revenue, shopify.sales.ordersSMASH 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-30SOURCE shopify.sales.net_sales AS revenueSMASH 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-31SOURCE shopify.sales.net_sales AS revenue, shopify.sales.ordersSMASH 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-14SOURCE shopify.sales.net_sales AS revenue, shopify.sales.ordersSMASH 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-05SOURCE shopify.sessions.online_store_visitors AS sessions GROUP BY day ORDER BY day ASCSMASH sparkline WITH trend TITLED "Back-to-School Traffic" |
| 44 | Post-sale revenue recovery | Sparkline | Rolling 14d | None | WINDOW over last 14 daysSOURCE shopify.sales.net_sales AS revenue GROUP BY day ORDER BY day ASCSMOOTH rolling7SMASH 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 monthCOMPARE previousYearSOURCE shopify.sales.net_sales AS revenueSMASH 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 quarterCOMPARE previousYearSOURCE shopify.sales.net_sales AS revenueSMASH 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 daysCOMPARE previousYearSOURCE shopify.sales.orders AS ordersSMASH metric WITH alert TITLED "Orders — Hold vs Last Year" |
| 49 | Weekly order pattern for staffing | Chart | Rolling 90d | None | WINDOW over last 90 daysSOURCE shopify.sales.orders AS orders GROUP BY day ORDER BY day ASCSMOOTH rolling7SMASH chart WITH trend TITLED "Order Pattern (90d)" |
| 50 | Items sold trend — watch for post-promo drop | Sparkline | Rolling 30d | None | WINDOW over last 30 daysSOURCE shopify.sales.net_items_sold AS items GROUP BY day ORDER BY day ASCSMOOTH rolling7SMASH 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:
- Revenue (Metric) — monthly target with OKR progress bar
- Orders (Metric) — monthly order count goal
- AOV (Metric or Gauge) — average order value target
- Store Sessions (Metric) — traffic target
Growth Tracking layout — rolling windows that give a continuous read on momentum:
- Revenue (Sparkline, 30d) — is the trend accelerating?
- Orders (Sparkline, 14d) — daily order velocity
- Sessions (Sparkline, 30d) — traffic trend with smoothing
Year-in-Review layout — long-horizon targets for annual planning:
- Revenue (Gauge, this year) — annual revenue target arc
- Gross Profit (Gauge, this year) — annual profit target arc
- Orders (Metric, this year, compare previous year) — YoY order volume
- Top Products (Table, this year) — which products drove the year
Still need help?