Skip to content

Analytics & reports

Analytics is where you measure your store. It opens on an Overview dashboard, fans out into purpose-built dashboards for every part of the business, and lets you build, save, schedule, and export your own reports. High-volume standard metrics are served from pre-aggregated rollups so they stay fast on large stores. Reports whose math is not safely composable—such as exact Web Vital percentiles, five-minute live visitors, and signed customer/event ledgers—use bounded, indexed fact views at their documented grain instead of pretending a daily aggregate can answer them.

Find it under Analytics in the store sidebar.

Overview dashboard

The Overview is the first screen you see. At the top it shows today’s headline KPIs — sessions, orders, and sales — alongside a conversion summary (add-to-cart rate, checkout-start rate, and conversion rate) and a finance summary (revenue, COGS, gross profit, an operational contribution estimate, payment fees, and outstanding liabilities such as gift-card and store-credit balances).

Below the KPIs you get sales-over-time, visits-over-time, and conversion-over-time charts, plus ranked “top” lists:

  • Top products and top variants
  • Top collections
  • Top pages, top landing pages, and top referrers
  • Top searches (what shoppers typed into search)
  • Top countries

A date-range picker drives the whole page. Pick a preset (Today, Yesterday, Last 7 / 30 / 90 days, This/Last month, This/Last quarter, This/Last year) or a Custom range. Turn on a comparison to overlay the previous period or the previous year — every KPI then shows its percentage change against the comparison window.

The report catalog

Beyond Overview, Analytics ships a library of ready-made reports, grouped by area under Analytics → Reports. Each one is a curated view over the same semantic catalog. Most use composable daily rollups; reports that need exact entity, event, live-window, percentile, or customer-ledger grain use dedicated sources:

  • Sales — orders, units sold, gross/net/total sales, discounts, refunds, taxes, shipping, and average order value.

  • Products — views, add-to-cart rate, and conversion per product and variant; your best and worst performers.

  • Customers — new vs returning, repeat rate, and customer geography. Includes RFM (recency/frequency/monetary segmentation), lifetime value (LTV), and cohort/retention report families. See Customers & segments.

  • Cart & checkout — the funnel from cart to an order being placed: active carts, abandoned carts and their value, recovered carts, and step-by-step checkout drop-off. Paid-order and payment-failure fields remain separate payment measures.

  • Traffic — sessions, visitors, page views, bounce rate, and breakdowns by referrer, UTM source / medium / campaign, and landing page.

  • Finance — revenue, cost of goods, gross profit, operational contribution estimate, payment fees, and liabilities.

  • Fulfillment — fulfillment throughput and timing across your orders.

  • Inventory — stock movement and inventory-related reporting, including month-end inventory and ABC analysis families.

  • Search — what shoppers searched for and, importantly, zero-result terms so you can fix gaps in your catalog.

  • POS — in-person sales reporting for stores selling through point of sale.

  • Performance — page-speed and Web-Vitals reporting for your storefront.

  • Marketing — consent-qualified, model-aware channel attribution: which sources and campaigns drove sessions and event-net attributed total sales. It defaults to Last non-direct click and is not a relabeling of the operational Traffic report. See Marketing attribution.

  • Live — the real-time map (see below).

The customer lifecycle family counts only stable identified customers. It supports new customers over time, the non-time new-vs-returning donut, the new-vs-returning area series, returning-customer rate, customer acquisition by latest shipping location, and event-net first-time/returning sales. Guest orders and POS walk-in holder rows stay in ordinary sales but never become customers. The one-time and returning-customer detail lists use each customer’s complete eligible order history. They include current name/email, first and last order dates, order count, event-net amount spent, average amount per order, and the immutable accepted-marketing value from the most recent order. The checkout choice is persisted before a hosted-payment redirect, so webhook-created orders retain the same evidence as synchronous orders. These presets are executable but remain unreconciled against a paired Shopify export.

There is also a Health view that surfaces data freshness and the status of the background workers that build your rollups — useful when a number looks off.

Catalog visibility is not the same as parity evidence. A report may be defined, executable, or captured-reconciled. Unsupported fields are rejected instead of being silently ignored, and reports that depend on an unavailable primitive remain unavailable or explicitly approximate. See Reconciliation status.

Shopify catalog parity snapshot

As of 2026-07-13T16:45:00+05:30, the server-owned manifest records the current observed catalog, runnable presets, disabled reasons, and external evidence state:

Advertised
187
Observed
184
Concrete
184
Unresolved
3
Enabled
164
Disabled
20
Captured-reconciled
0

Captured-reconciled reports: none. Controlled internal fixtures count as captured evidence: no.

Support-status counts
StatusCatalog entries
Executable Unreconciled101
Needs Attribution Reconciliation15
Partial Sales Components11
Partial Gateway Scope6
Partial Reversal Types6
Requires Subscriptions5
Needs Funnel Reconciliation4
Requires Shop Channel4
Partial Taxonomy3
Unresolved Catalog Entry3
Needs Close Reconciliation2
Not Applicable Shopify Protect2
Partial Acceptance Denominator2
Partial Return Components2
Partial Row Fields2
Partial Shop Taxonomy2
Requires Agentic Commerce2
Requires Risk Provider2
Requires Shop Pay2
Missing Fields Or Preset1
Partial Finance Components1
Partial Low Engagement Threshold1
Partial Semantics1
Partial Sku Identity1
Partial Tracking Presence1
Proprietary Approximation1
Requires Autopilot Marketing1
Requires Historical Fx1
Requires Managed Markets1
Requires Markets1
Disabled-reason counts
ReasonReports
Requires Subscriptions5
Requires Shop Channel4
Not Applicable Shopify Protect2
Requires Agentic Commerce2
Requires Shop Pay2
Missing Fields Or Preset1
Requires Autopilot Marketing1
Requires Historical Fx1
Requires Managed Markets1
Requires Markets1
Disabled reports (20)
ReportCategoryStatusReason
shop_campaign_roas
Shop Campaign ROAS
Behavior Requires Shop Channel This report requires Shopify Shop-channel impression, campaign, order, and attribution primitives. Market does not relabel online-store traffic or orders as Shop activity.
managed_markets_taxes
Managed Markets taxes
Finances Requires Managed Markets This report requires Managed Markets tax, duty, filing, and fee primitives. Market's ordinary tax ledger must not be presented as Shopify Managed Markets activity.
shop_pay_payments
Shop Pay payments
Finances Requires Shop Pay This report requires Shop Pay's immutable checkout/payment classification. A generic gateway or wallet label is not a defensible Shop Pay substitute.
shop_pay_transactions
Shop Pay transactions
Finances Requires Shop Pay This report requires Shop Pay's immutable checkout/payment classification. A generic gateway or wallet label is not a defensible Shop Pay substitute.
shop_channel_orders
Shop channel orders
Finances Requires Shop Channel This report requires Shopify Shop-channel impression, campaign, order, and attribution primitives. Market does not relabel online-store traffic or orders as Shop activity.
shop_payments_by_type
Shop payments by type
Finances Requires Shop Channel This report requires Shopify Shop-channel impression, campaign, order, and attribution primitives. Market does not relabel online-store traffic or orders as Shop activity.
orders_covered_by_shopify_protect
Orders covered by Shopify Protect
Fraud Not Applicable Shopify Protect Shopify Protect is a Shopify product primitive and is not represented as a Market metric.
orders_protected_by_shopify_protect
Orders protected by Shopify Protect
Fraud Not Applicable Shopify Protect Shopify Protect is a Shopify product primitive and is not represented as a Market metric.
performance_by_autopilot_marketing_activities
Performance by Autopilot Marketing Activities
Marketing Requires Autopilot Marketing This report requires Shopify Autopilot marketing-activity identity and spend/performance facts. Market has no equivalent source and does not infer it from campaigns with similar names.
shop_channel_product_impressions
Shop channel product impressions
Marketing Requires Shop Channel This report requires Shopify Shop-channel impression, campaign, order, and attribution primitives. Market does not relabel online-store traffic or orders as Shop activity.
active_subscriptions_over_time
Active subscriptions over time
Sales Requires Subscriptions This report requires a subscription contract, recurring-order lineage, interval, activation, cancellation, and one-time-versus-subscription sale snapshots. Ordinary repeat orders are not subscriptions.
agentic_total_sales_by_channel
Agentic total sales by referring channel
Sales Requires Agentic Commerce This report requires an authoritative agentic-commerce referring channel and order classification. Market does not guess agentic sales from user agents, referrers, or free-form source labels.
agentic_total_sales_over_time
Agentic total sales over time
Sales Requires Agentic Commerce This report requires an authoritative agentic-commerce referring channel and order classification. Market does not guess agentic sales from user agents, referrers, or free-form source labels.
average_profit_margin_by_market
Average profit margin by market
Sales Requires Markets This report requires an immutable sale-time market identity and market-specific pricing/currency semantics. Shipping country or transaction currency is not substituted for a configured Market.
canceled_subscriptions_over_time
Canceled subscriptions over time
Sales Requires Subscriptions This report requires a subscription contract, recurring-order lineage, interval, activation, cancellation, and one-time-versus-subscription sale snapshots. Ordinary repeat orders are not subscriptions.
new_subscriptions_over_time
New subscriptions over time
Sales Requires Subscriptions This report requires a subscription contract, recurring-order lineage, interval, activation, cancellation, and one-time-versus-subscription sale snapshots. Ordinary repeat orders are not subscriptions.
sales_by_discount_codes
Sales by discount codes
Sales Missing Fields Or Preset Unavailable for strict parity: combinable discounts can affect the same line, but current refund and order-adjustment facts retain only a combined discount reversal, not an immutable per-reversal/per-discount-application allocation. Market also lacks a canonical sale-time taxonomy that distinguishes percentage, fixed, free-shipping, buy-X-get-Y, and app discounts. Proportional allocation or taxonomy guessing would fabricate results.
subscription_vs_one_time_sales
Subscription vs one-time sales
Sales Requires Subscriptions This report requires a subscription contract, recurring-order lineage, interval, activation, cancellation, and one-time-versus-subscription sale snapshots. Ordinary repeat orders are not subscriptions.
subscriptions_sales_over_time
Subscriptions sales over time
Sales Requires Subscriptions This report requires a subscription contract, recurring-order lineage, interval, activation, cancellation, and one-time-versus-subscription sale snapshots. Ordinary repeat orders are not subscriptions.
total_sales_by_currency
Total sales by currency
Sales Requires Historical Fx Shopify groups rows by checkout currency but converts Total sales to the store currency. Market can expose native-currency rows, but cannot reproduce Shopify's value without historical order-time FX rates.
Unresolved advertised slots (3)
  • #185: Shopify paginator advertised 187 reports, but the signed-in catalog rendered only 184; slug and name intentionally not fabricated.
  • #186: Shopify paginator advertised 187 reports, but the signed-in catalog rendered only 184; slug and name intentionally not fabricated.
  • #187: Shopify paginator advertised 187 reports, but the signed-in catalog rendered only 184; slug and name intentionally not fabricated.
Catalog captured 2026-07-13T16:45:00+05:30; generated summary schema v2.

The captured-reconciled number is intentionally narrow. It increases only when the same scenario has both a genuine captured Shopify export and a captured production Sellerlane report export, and the provenance-checked comparison passes. A captured Shopify export compared with an internal controlled generator can validate fields and filters, but it does not prove the production report’s numbers. Sellerlane’s internal fixtures test financial semantics; they do not count as production parity evidence. An enabled report is runnable; it is not automatically an exact Shopify match.

The funnel & drop-off

The conversion funnel is tracked as discrete stages so you can see exactly where shoppers fall away:

Session → product view → add to cart → checkout started → contact → address → shipping → payment info → purchase.

The Cart & checkout dashboard shows the count at each step and the drop-off between steps, plus headline figures for abandoned carts, abandoned cart value, recovered carts, and the checkout completion rate. Tie this back to abandonment recovery in Automations.

Custom report builder

When the built-in dashboards don’t slice the data the way you need, build your own report. Reports draw metrics and dimensions from a server-side catalog (an allowlist) — you never write SQL.

  1. Go to Analytics → Reports and choose New exploration (or start from a ready-made template and edit it).

  2. In Freeform, pick a metric first. The metric’s physical source and financial definition determine the compatible report family. Dimensions, visualization, and filters remain visible but disabled until that first metric resolves the source; incompatible fields are never silently joined.

  3. Choose additional metrics and dimensions from the compatible catalog. Each metric carries its own allowed aggregations (sum, count, distinct count, average, min, max, median, percentile, rate).

  4. Add filters. Each filter is a catalog field plus an operator — EQ, NEQ, IN, NOT_IN, CONTAINS, STARTS_WITH, ENDS_WITH, GT, GTE, LT, LTE, BETWEEN, IS_NULL, or NOT_NULL.

  5. Set the granularity — day, week, month, quarter, or year. Selected store-metrics families also support hour for ranges of at most seven days. Minute is a Live View clock and is not available in report explorations.

  6. Choose a comparison — none, previous period, or previous year.

  7. Pick a visualization — KPI, table, line, bar, stacked bar, area, pie, funnel, or heatmap. Geographic maps are a dedicated Live View/location surface, not a freeform report visualization. Area means a stacked area: each band retains its category and the height is the combined value. Area and stacked-bar views therefore require metrics with one physical unit; money, counts, percentages, and durations are never added together.

  8. Save the report with a name.

Switch the Exploration method tab to Cohorts for repeat-customer analysis. That workspace exposes its contract explicitly as Metric → Cohort definition → Visualization → Interval → Filters. Cohort membership is fixed to the first eligible merchandise order; unavailable cohort filters are disabled rather than accepted and ignored. Every result remains at exact cohort date × period × interval grain: omitted interval filters default to monthly, and removing either cell dimension is rejected because summing retention cells would count the same customer in more than one period. Headline totals, comparisons, and time series are intentionally omitted for the same reason. Revenue mode means signed net merchandise sales, not cash receipts or order total sales; a period can be negative after processed reversals.

Saved reports & dashboards

Saved explorations appear in Analytics → Reports, where you can re-open, edit, Save copy, or delete them and pin favourites. You can also assemble your own dashboard: under Analytics → Dashboard, add report cards, reorder them, and update or remove cards so the layout matches how you actually work.

The Reports lifecycle table follows the captured Shopify structure: Name, Category, Last viewed, Created by, and Pinned. Search, Category and Created by filters, stable sorting, and pin/unpin are server-backed lifecycle controls. Never-viewed reports display an em dash and sort after dated rows in either last-viewed direction.

The Overview supports manual refresh, one-minute auto-refresh, full screen, customization, date/comparison controls, and displays the immutable reporting currency. Card definition controls expose the server-owned metric meaning. Currency switching is intentionally unavailable until historical order-time FX exists; showing a selectable currency that relabels native amounts would be a financial error.

Dashboard targets

Use Analytics → Customize overview → Add dashboard target to set a durable threshold for an enabled canonical report metric. Choose At least for a floor such as sales or orders, or At most for a ceiling such as a defect or refund rate. The target appears on Overview with its current value, threshold, attainment ratio, fixed period, and whether the threshold is met.

Target periods are snapshots, not rolling labels. For example, This month created during August resolves to the complete August 1–31 civil period in the store reporting timezone. Those dates and that timezone remain fixed even if the store timezone later changes. A custom period uses the inclusive start and end dates you enter.

The metric decides the target’s unit:

  • money is an integer number of the store currency’s true minor unit;
  • a count is a whole, non-negative integer;
  • a rate is basis points, where 10,000 = 100%; and
  • a general number is a decimal with at most six fractional digits.

Money targets require the configured reporting currency. There is no target currency picker and unlike currencies are never combined. The displayed Current / target percentage is canonical current value ÷ target value; it is unavailable for a zero target or an undefined report ratio. For At most targets, a lower ratio is better. Threshold success uses the selected direction, not the ratio alone.

You may update only the typed threshold. Metric identity, unit, currency, direction, and resolved period are immutable because changing them would rewrite what prior progress meant. Delete and recreate a target to change those fields. Deletion retires the target from the dashboard; create, update, and delete writes retain the acting store user and before/after audit snapshots. A dashboard can have up to 12 active targets.

Scheduled (emailed) reports

Any report can be delivered to an inbox on a schedule.

  1. Open the report and choose Schedule (managed under Analytics → Scheduled).

  2. Set the cadencedaily, weekly, or monthly.

  3. Set the hour of day. For weekly, also pick the day of week; for monthly, the day of month (1–28).

  4. Set the timezone (defaults to your store’s reporting timezone).

  5. Enter one or more recipient emails.

  6. Choose the export format — CSV, XLSX, or JSON.

  7. Save. The schedule shows its next run, last run, and last status so you can confirm it’s working.

Exports (CSV / XLSX / JSON)

You can export any report on demand to CSV, XLSX, or JSON. Exports run asynchronously: Sellerlane queues the job, processes it in the background, and produces a downloadable artifact. Track and download finished files — and cancel ones still running — under Analytics → Exports, where each export shows its status (pending, running, completed, failed, or canceled).

Live view

Analytics → Live is a real-time map of your store right now. It’s built on MapLibre with OpenFreeMap tiles, and you can toggle between two modes:

  • Globe — a lightweight 3D globe for an at-a-glance world view.
  • 2D map — the detailed flat basemap (OpenFreeMap Liberty), with pan, zoom, and a location search box.

On the map you’ll see active sessions as city-level points, clustered when zoomed out. Dot color represents the latest activity, not visitor identity. The current API returns new/returning visitor and session totals separately, but the map does not yet split its points or clusters into new vs returning segments; that visual split remains an explicit Shopify parity blocker. Alongside the map, Live surfaces carts in progress and orders as they happen, plus a live behavior funnel.

Windows are rolling: visitors “right now” use a ~5-minute window and the behavior funnel a ~10-minute window, so the view always reflects the immediate present rather than the whole day.

The New vs returning customers panel includes only orders linked to a stable customer identity. Guest orders, guest sales, and their later reversals still affect the overall Orders and Total sales headlines, but are never guessed into either customer bucket.

Session location is audience geography from trusted edge/IP data. It is not the customer’s shipping address, POS selling location, or fulfillment location. See Location has three meanings.

Data freshness & rollups

Most dashboards and standard reports use pre-aggregated rollups rather than scanning raw events on every load. Background workers build those rollups, so figures can lag the newest accepted event by a few minutes. A freshness indicator reports fresh, delayed, stale, failed, or unknown, with per-source lag and last-success time on the Health view.

An exact-source report is the deliberate exception. It reads a bounded, validated, indexed fact view when rolling the data up would destroy its meaning: an average of daily P75 values is not a range P75, and a current five-minute visitor window is not a daily visitor count. The report catalog identifies its source and applies the applicable currency, consent, test, staff, preview, and bot rules for that population. Unbounded raw-event browsing remains a support/debug surface, not an everyday report executor.

Sellerlane analytics respect buyer consent end to end:

  • Visitors who decline analytics tracking are not persisted or counted, and analytics identity cookies are cleared. Sellerlane does not manufacture an anonymous session that could not be reconciled to the consented event stream.
  • IP addresses are stored hashed (ip_hash); the raw IP is never persisted.
  • User agents are hashed too.
  • Location is never more precise than the city level. Geo accuracy is recorded as ip_city, ip_region, or country_only; postal and metro codes are not collected.

Consent state flows from your storefront consent banner into every visit, so opting out genuinely stops profiling rather than just hiding a number. Configure the banner and tracking destinations in Pixels & tracking.

Troubleshooting

  • My numbers differ from my payment provider. Analytics counts sessions, orders, and sales as recorded in Sellerlane; your gateway reports settled money after fees, refunds, and chargebacks. Compare like for like (orders vs orders, gross vs net) and account for the rollup lag.
  • A report family says it isn’t implemented. Use the report catalog in the builder — only families exposed there are available to run; pick a supported one from the report catalog above.
  • The live map is empty. No sessions in the rolling window, ad-blockers, or visitors who declined tracking. Wait for live traffic or widen the map.
  • A scheduled report didn’t arrive. Check the recipient emails and the schedule’s last status / last error; a failed run records why.
  • A number looks stale. Check the freshness indicator on Analytics → Health — if the pipeline is delayed or stale, figures will catch up once the rollup workers recover.

Next steps