Overview · Integrations

How do you analyze e-commerce data in Metabase?

Store platforms like Shopify, WooCommerce, and BigCommerce hold the record of every order, product, and customer. To analyze them in Metabase, you get the data into a SQL database — synced for hosted platforms, or read directly for self-hosted WooCommerce — map its objects to a shared commerce model, and build dashboards on top.

TL;DR — Every store shares the same shape: orders, order line items, products, customers, and refunds. Model that shape once and most dashboards and metrics — AOV, repeat-purchase rate, refund rate — port across platforms. Only source-specific fields differ.

Which tools does this cover?

This pattern applies to hosted and self-hosted store platforms, including:

  • Shopify — orders, line items, products, customers, refunds; sync via managed connector, dlt, or the Admin API
  • WooCommerce — runs on WordPress/MySQL, so Metabase can query the store database directly (HPOS + analytics lookup tables)
  • BigCommerce — open-SaaS orders, order products, customers, and channels; sync via connector, dlt, or the REST/GraphQL API
  • commercetools — headless, composable commerce; sync via the Export API, GraphQL, or dlt
  • Medusa — open-source headless commerce on PostgreSQL, so Metabase can query the database directly
  • VTEX — enterprise commerce and marketplace; sync via the OMS and Catalog APIs or dlt

Marketplaces follow the same model, with fees and settlements added:Amazon Seller (SP-API), Etsy, and eBay.

Support, payments, and marketing data pairs naturally with store data — see Klaviyo for email/SMS revenue attribution and Gorgias for e-commerce support tied to orders.

What is the shared commerce data model?

Almost every platform maps onto these entities. Model them as clean tables, not raw connector JSON:

ConceptShopify termWooCommerce termUsed for
OrderOrderOrder (shop_order)The unit of sale
Line itemLine itemOrder itemProduct & basket analysis
ProductProduct / variantProductCatalog performance
CustomerCustomerCustomerRepeat purchase, cohorts
DiscountDiscount / price ruleCouponPromo depth and ROI
RefundRefundRefundNet revenue

The single most important decision is a consistent definition of net revenue (gross − discounts − refunds, with an explicit stance on taxes and shipping) and a fixed set of order statuses that count as "paid." Define both once and reuse them everywhere.

How do you connect a store to Metabase?

  1. Direct database (WooCommerce) — because WooCommerce data lives in MySQL, Metabase can query a read replica directly, no ETL required.
  2. Pipeline route (hosted platforms) — sync Shopify or BigCommerce into a database with a managed connector, dlt, or the API, then build durable dashboards.
  3. MCP route (AI-assisted) — pair the platform's MCP server (official or managed) with the Metabase MCP server for fast, exploratory questions. Treat it as exploratory, not governed reporting.

See the per-tool setup on the Shopify, WooCommerce, and BigCommerce pages, or the e-commerce analytics overview for the full pattern.

What can you analyze across store platforms?

  • Sales — net revenue, orders, and AOV over time
  • Retention — repeat-purchase rate and customer cohorts
  • Catalog — top products, units, and refund rate by SKU
  • Promotions — discount depth and coupon ROI
  • Margin leaks — refunds, returns, and shipping costs

Which dashboards should you build?

Common mistakes

Reporting gross revenue as if it were net.→ Subtract discounts and refunds, and be explicit about taxes and shipping.
Counting test, draft, or unpaid orders.→ Fix a set of order statuses that count as paid and reuse it everywhere.
Averaging line-item prices for AOV.→ Compute AOV at the order grain, or multi-item baskets skew the number.
Comparing week-over-week through seasonal peaks.→ Compare like periods — this Black Friday vs. last — instead.

Analytics

Integrations

Dashboards

Metrics

FAQ

Can I use the same dashboards for Shopify and WooCommerce?
Mostly yes, if you model both onto the shared commerce schema. Metric definitions and chart structure port across; only source-specific fields (e.g. Shopify variants, WooCommerce order statuses) differ.
Does Metabase connect natively to these platforms?
Metabase reads SQL databases and warehouses. WooCommerce already lives in MySQL, so you can query it directly. Shopify and BigCommerce are hosted, so sync them into a database first, then connect Metabase to that database.
How should I define net revenue?
Start from gross sales, subtract discounts and refunds, and decide explicitly whether to include taxes and shipping. Define it once as a Metabase model so every store dashboard agrees.