Overview
Use these queries as starting points for analysis in BigQuery. Replaceyour_project with your BigQuery project ID (e.g., sm-yourcompany) and your-sm_store_id with your store identifier.
If you’re not sure which table to use, start with: obt_orders and obt_order_lines.
Quick Links
| Section | What’s inside |
|---|---|
| Marketing & Ads | CAC, ROAS by platform, ROAS trends |
| Messaging | Email/SMS performance, flows vs campaigns, list growth |
| Funnel | Funnel step counts, conversion rates, top converting pages |
| Journeys & Lead Capture | Lead capture → purchase timing, landing pages, first vs last touch (MTA) |
| Customers & Retention | First vs repeat orders, repeat rates by source, new vs repeat trends |
| Products | Top products by revenue/units, gateway products, product combos |
| Orders & Revenue | AOV by channel, subscription revenue, refund rates, sales channel mix |
| LTV & Retention | Cohort LTV, payback period, LTV:CAC, repeat purchase rates, 90-day LTV by product |
| Attribution & Data Health | Table freshness, UTM coverage, fallback signals, click-id coverage, tracking regressions |
| Customer Support | Ticket volume, one-touch rate, resolution time, CSAT |
sm_store_id scoping when needed.Marketing & Ads
Average CAC (last 30 days)
Average CAC (last 30 days)
Highest ROAS by platform + campaign type (last 30 days)
Highest ROAS by platform + campaign type (last 30 days)
ROAS trends over time (monthly, last 6 months)
ROAS trends over time (monthly, last 6 months)
Messaging
Messaging performance by channel + message type (last 30 days)
Messaging performance by channel + message type (last 30 days)
platform_reported_* metrics are platform-attributed, not incremental lift. Use them for directional comparisons and monitoring, not causal claims.Top campaigns by platform-attributed order revenue (last 30 days)
Top campaigns by platform-attributed order revenue (last 30 days)
List subscribes vs unsubscribes trend by channel (weekly, last 12 weeks)
List subscribes vs unsubscribes trend by channel (weekly, last 12 weeks)
Messaging performance by provider + channel + message type (last 30 days)
Messaging performance by provider + channel + message type (last 30 days)
Flow vs campaign performance trend (weekly, last 12 weeks)
Flow vs campaign performance trend (weekly, last 12 weeks)
Deliverability health (bounce + drop rates) by provider and channel (weekly, last 12 weeks)
Deliverability health (bounce + drop rates) by provider and channel (weekly, last 12 weeks)
Highest click-rate messages (last 30 days, minimum receives threshold)
Highest click-rate messages (last 30 days, minimum receives threshold)
Funnel
Daily session-based funnel conversion (last 30 days)
Daily session-based funnel conversion (last 30 days)
Top pages by on-page add-to-cart session rate (last 7 days)
Top pages by on-page add-to-cart session rate (last 7 days)
Funnel conversion by UTM source/medium (last 30 days)
Funnel conversion by UTM source/medium (last 30 days)
rpt_funnel_events_performance_hourly.Funnel tracking health by event source system (last 30 days)
Funnel tracking health by event source system (last 30 days)
source_system) appears to be missing critical steps (e.g., begin checkout) relative to other sources. This is a fast “do we have tracking regressions?” check.Hourly funnel anomaly detector (hour-over-hour deltas, last 7 days)
Hourly funnel anomaly detector (hour-over-hour deltas, last 7 days)
Lead-gen to purchase (email signups vs purchases) by UTM source/medium (last 30 days)
Lead-gen to purchase (email signups vs purchases) by UTM source/medium (last 30 days)
Cart drop-off signals (add-to-cart vs remove-from-cart vs checkout) trend (daily, last 30 days)
Cart drop-off signals (add-to-cart vs remove-from-cart vs checkout) trend (daily, last 30 days)
Journeys & Lead Capture
sm_transformed_v2.obt_funnel_event_historyfor event-level lead capture + timing analysis, andsm_experimental.obt_purchase_journeys_with_mta_modelsfor purchase-journey first-touch vs last-touch analysis (MTA).
Lead capture event discovery (top event names, last 30 days)
Lead capture event discovery (top event names, last 30 days)
Lead capture → first purchase timing (hours) by lead UTM source/medium (last 90 days)
Lead capture → first purchase timing (hours) by lead UTM source/medium (last 90 days)
Lead capture → purchase conversion rate (last 90 days)
Lead capture → purchase conversion rate (last 90 days)
event_user_id). Useful for directional lead-to-purchase monitoring.MTA: First-touch vs last-touch marketing channel mix (purchases, last 30 days)
MTA: First-touch vs last-touch marketing channel mix (purchases, last 30 days)
MTA: Time to conversion (days) by first-touch marketing channel (purchases, last 30 days)
MTA: Time to conversion (days) by first-touch marketing channel (purchases, last 30 days)
MTA landing pages: Top first-touch landing pages by attributed revenue (purchases, last 30 days)
MTA landing pages: Top first-touch landing pages by attributed revenue (purchases, last 30 days)
Zero-party attribution: Revenue by post-purchase survey source (new vs repeat, last 90 days)
Zero-party attribution: Revenue by post-purchase survey source (new vs repeat, last 90 days)
Last-touch Klaviyo orders: New vs repeat × subscription sequence (last 90 days)
Last-touch Klaviyo orders: New vs repeat × subscription sequence (last 90 days)
sm_utm_source/sm_utm_medium (last-click) from the order attribution hierarchy.sm_utm_source = 'klaviyo' in your tenant, run the “UTM source/medium discovery” template and choose the exact source values for your messaging stack.Customers & Retention
First valid vs repeat orders (last 30 days)
First valid vs repeat orders (last 30 days)
Which source/mediums drive repeat purchases? (cohorted on first order in last 12 months)
Which source/mediums drive repeat purchases? (cohorted on first order in last 12 months)
New vs repeat customer ratio trend (weekly, YTD)
New vs repeat customer ratio trend (weekly, YTD)
Customer acquisition trend (monthly new customers, last 12 months)
Customer acquisition trend (monthly new customers, last 12 months)
Products
Top 10 products by net revenue (last 30 days)
Top 10 products by net revenue (last 30 days)
Top products by units sold (last 30 days)
Top products by units sold (last 30 days)
Products most common with new customers (first valid orders, last 90 days)
Products most common with new customers (first valid orders, last 90 days)
Most commonly ordered product combinations
Most commonly ordered product combinations
Orders & Revenue
Average order value (AOV) by marketing channel (last 30 days)
Average order value (AOV) by marketing channel (last 30 days)
Revenue in the last 30 days from customers who have ever had a subscription
Revenue in the last 30 days from customers who have ever had a subscription
Refund rate by marketing channel (last 90 days)
Refund rate by marketing channel (last 90 days)
Distribution of orders and revenue by sales channel (last 30 days)
Distribution of orders and revenue by sales channel (last 30 days)
LTV & Retention
These templates cover cohort analysis, payback periods, and repeat purchase behavior. Some use the pre-aggregated cohort table for efficiency.rpt_cohort_ltv_by_first_valid_purchase_attribute_no_product_filters):- Always filter one cohort dimension (e.g.,
acquisition_order_filter_dimension = 'source/medium') - Always include
sm_order_line_type = 'all_orders'unless you explicitly want a subset
Cohort table: available dimensions
Cohort table: available dimensions
source/medium, discount_code, order_type_(sub_vs._one_time)).3m/6m retention + 6m LTV by acquisition source/medium (last 12 cohort months)
3m/6m retention + 6m LTV by acquisition source/medium (last 12 cohort months)
Payback period by acquisition source/medium (cohort table, last 12 cohort months)
Payback period by acquisition source/medium (cohort table, last 12 cohort months)
cost_per_acquisition). Only interpret rows where your cohort model populates CAC for that cohort.LTV:CAC ratio by acquisition source/medium (6m net LTV vs CAC, last 12 cohort months)
LTV:CAC ratio by acquisition source/medium (6m net LTV vs CAC, last 12 cohort months)
Top discount-code cohorts by 6m retention + 12m LTV (last 12 cohort months)
Top discount-code cohorts by 6m retention + 12m LTV (last 12 cohort months)
Subscription vs one-time cohorts: 6m retention + 12m LTV (last 12 cohort months)
Subscription vs one-time cohorts: 6m retention + 12m LTV (last 12 cohort months)
Repeat purchase rate (paid orders only) within 30/60/90 days by acquisition source/medium (first valid orders in last 12 months)
Repeat purchase rate (paid orders only) within 30/60/90 days by acquisition source/medium (first valid orders in last 12 months)
order_net_revenue > 0 (so $0 replacements/comp orders don’t inflate “purchase” rates).Repeat purchase rate (paid orders only) within 30/60/90 days by subscription vs one-time first order (first valid orders in last 12 months)
Repeat purchase rate (paid orders only) within 30/60/90 days by subscription vs one-time first order (first valid orders in last 12 months)
order_net_revenue > 0.Repeat purchase rate (paid orders only) within 30/60/90 days by first-order AOV bucket (first valid orders in last 12 months)
Repeat purchase rate (paid orders only) within 30/60/90 days by first-order AOV bucket (first valid orders in last 12 months)
order_net_revenue > 0 so that $0 orders don’t inflate “purchase” rates.90‑day LTV by first-order source/medium (dynamic, last 12 months)
90‑day LTV by first-order source/medium (dynamic, last 12 months)
90‑day LTV by first-order discount code (single-code only + no-code baseline, last 12 months)
90‑day LTV by first-order discount code (single-code only + no-code baseline, last 12 months)
First-order refund rate by acquisition source/medium (first valid orders in last 12 months)
First-order refund rate by acquisition source/medium (first valid orders in last 12 months)
90‑day LTV by first-order source system and sales channel (last 12 months)
90‑day LTV by first-order source system and sales channel (last 12 months)
source_system) and sales channel (sm_channel) of the first valid order. This helps separate marketplace/POS behavior from online DTC without mixing attribution concepts.Cohort-table vs dynamic reconciliation (6m vs 180d) for source/medium (last 6 cohort months)
Cohort-table vs dynamic reconciliation (6m vs 180d) for source/medium (last 6 cohort months)
obt_orders. Differences can indicate mismatched cohort definitions or expectation gaps (month buckets vs day windows).Which initial products lead to the highest 90‑day LTV? (primary first‑order SKU, last 12 months)
Which initial products lead to the highest 90‑day LTV? (primary first‑order SKU, last 12 months)
90‑day LTV by first-order product type (primary first‑order attribute, last 12 months)
90‑day LTV by first-order product type (primary first‑order attribute, last 12 months)
90‑day LTV by first-order product vendor (primary first‑order attribute, last 12 months)
90‑day LTV by first-order product vendor (primary first‑order attribute, last 12 months)
Typical time between orders for non-subscription customers (last 12 months)
Typical time between orders for non-subscription customers (last 12 months)
Attribution & Data Health
These templates help you assess attribution coverage and basic data health before doing deeper analysis. If you want table-level freshness/coverage metadata, start with:dim_data_dictionary.
Which tables are stale or missing data?
Which tables are stale or missing data?
Attribution column coverage on orders
Attribution column coverage on orders
When UTMs are missing, what other attribution signals exist?
When UTMs are missing, what other attribution signals exist?
Top referrer domains for orders missing UTMs
Top referrer domains for orders missing UTMs
Key join-key completeness (customers + SKU coverage)
Key join-key completeness (customers + SKU coverage)
Attribution health trend (weekly)
Attribution health trend (weekly)
Attribution health by store and sales channel
Attribution health by store and sales channel
Discount code parsing (top codes by revenue)
Discount code parsing (top codes by revenue)
Top landing pages for orders missing UTMs
Top landing pages for orders missing UTMs
Click-id coverage vs UTM coverage (gclid/fbclid)
Click-id coverage vs UTM coverage (gclid/fbclid)
$0 / negative net-revenue order share by source/medium (last 90 days)
$0 / negative net-revenue order share by source/medium (last 90 days)
Unattributed share by source system and sales channel (last 90 days)
Unattributed share by source system and sales channel (last 90 days)
Top landing pages for direct traffic orders (last 90 days)
Top landing pages for direct traffic orders (last 90 days)
sm_utm_source_medium)—and whether landing page capture is missing. This helps diagnose tracking gaps (e.g., missing UTMs or missing landing-page capture on key entry flows).Attribution health trend with week-over-week deltas (weekly)
Attribution health trend with week-over-week deltas (weekly)
UTM source/medium discovery (top normalized values, last 90 days)
UTM source/medium discovery (top normalized values, last 90 days)
source/medium values actually look like in practice (normalized with LOWER(TRIM())). Use this to discover the exact strings you should filter on—without guessing.Join-key coverage trend (weekly missing customer keys + missing SKUs)
Join-key coverage trend (weekly missing customer keys + missing SKUs)
sm_customer_key (orders) or missing sku (order lines) will break customer-level and product-level analysis.Multiple discount codes prevalence (double-counting risk, last 90 days)
Multiple discount codes prevalence (double-counting risk, last 90 days)
Customer Support
Ticket volume + one-touch rate by communication channel (last 30 days)
Ticket volume + one-touch rate by communication channel (last 30 days)
Resolution time + CSAT coverage by assignee team (last 90 days)
Resolution time + CSAT coverage by assignee team (last 90 days)
Support backlog aging by team and channel (open tickets)
Support backlog aging by team and channel (open tickets)
Unread open-ticket share by team and channel (ops triage)
Unread open-ticket share by team and channel (ops triage)
Top support tags by ticket volume + one-touch + resolution time (last 90 days)
Top support tags by ticket volume + one-touch + resolution time (last 90 days)
Support workload by priority × channel × team (last 30 days)
Support workload by priority × channel × team (last 30 days)

