Etsy × Metabase

How to build Etsy dashboards in Metabase

Etsy is the marketplace for handmade, vintage, and craft sellers, holding the record of every receipt, listing, and buyer. Metabase is where you turn that activity into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with an Etsy MCP and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable pipeline route that syncs Etsy into a database so you can build dashboards anyone can read.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Etsy connector. For dashboards that need history and reliability, you'll sync Etsy into a database first (covered below).

How do you connect Etsy to Metabase?

Most sellers combine both routes: use the Etsy MCP and Metabase CLI route to pull live data and stand up a quick analysis, and the pipeline route for the profitability dashboards the shop depends on.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair an Etsy MCP server (to read live shop, listing, and order data) with the Metabase CLI, whose upload command loads a CSV into Metabase as a ready-to-query table and model.

Best for
  • Quick lookups like "best-selling listings this week?"
  • Loading an Etsy CSV export into Metabase in seconds
  • Spot-checks on orders, listings, and fees without a warehouse
Trade-offs
  • Great for exploration, not governed reporting
  • Use read-only mode on the Etsy MCP to avoid accidental writes
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Etsy into a database or warehouse with the Open API v3, dlt, or a managed connector, then point Metabase at it.

Best for
  • Profitability dashboards net of Etsy fees
  • Listing and shop-section performance
  • Seasonal and holiday sales comparisons
Trade-offs
  • You own the refresh schedule and the data model
  • Etsy fees (listing, transaction, payment) matter — model them
  • Rate limits apply — plan incremental syncs

What can you analyze from Etsy data in Metabase?

  • Sales — net proceeds, orders (receipts), and AOV
  • Listing performance — top sellers, units, and conversion
  • Fees & profitability — listing, transaction, and payment fees
  • Shop sections — revenue split across your catalog
  • Repeat purchase — buyers who come back
  • Shipping — cost charged vs. cost paid

Which Etsy dashboards should you build in Metabase?

For: Shop owners

Sales overview

The daily pulse of shop demand.

  • Net proceeds vs. prior period (number + trend)
  • Orders (receipts) per day (line)
  • Average order value (number + trend)
  • Revenue by shop section (bar)
For: Merchandising

Listing performance

What's selling and what's stuck.

  • Top listings by net proceeds (bar)
  • Units sold by listing (table)
  • Conversion by listing (views → sales) (table)
  • Return / cancellation rate by listing (bar)
For: Growth

Customers & repeat purchase

Are buyers coming back?

  • Repeat-purchase rate by cohort (line)
  • Orders per buyer distribution (bar)
  • New vs. returning revenue (bar)
  • Revenue by acquisition month (cohort table)
For: Finance

Fees & profitability

What Etsy keeps, and what's left.

  • Etsy fees as % of sales (line)
  • Listing vs. transaction vs. payment fees (bar)
  • Net margin by listing (table)
  • Shipping cost vs. charged (table)

How do you use the Etsy MCP server with the Metabase CLI?

Pair an Etsy MCP server with the Metabase CLI for fast, hands-on analysis. There's no first-party Etsy MCP, so most sellers use a managed server (e.g. Apideck exposes normalized products, orders, and stores) or a community Etsy API v3 server; the Metabase CLI's upload command loads a CSV into Metabase and creates a ready-to-query table and model. For analysis, connect Etsy in read-only mode.

Example workflow

  • Ask the Etsy MCP which listings drove the most net proceeds this week.
  • Export the receipts, listings, or fee data you want to keep as a CSV.
  • Run mb upload csv to load it into Metabase as a table and model, then build questions and dashboards on top.

Be honest about the limits

  • An Etsy MCP is great for live lookups — not for scheduled or audited reporting.
  • A CSV upload is a point-in-time snapshot; refresh it with mb upload replace or move to the pipeline for real history.
  • No first-party Etsy MCP exists; use read-only mode on managed or community servers so analysis can't trigger writes.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up the Etsy MCP server and the Metabase CLI?

Etsy via Apideckmanaged

Scope
Normalized products, orders, and stores
Auth
Connect Etsy inside Apideck
Alt
Community Etsy API v3 servers (listings, shops, orders)
Note
Confirm the current endpoint in provider docs.

Metabase CLIofficial

Install
npm install -g @metabase/cli
Auth
mb auth login (browser OAuth on v62+, or an API key)
Load data
mb upload csv --file data.csv
Requires
An uploads database (Admin → Settings → Uploads)
Cursor~/.cursor/mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "etsy": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.apideck.com/etsy"
      ]
    }
  }
}
TerminalLoad an Etsy CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load an Etsy CSV export — creates a table AND a model
mb upload csv --file etsy-orders.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file etsy-orders.csv

Connect your Etsy shop inside the managed provider first, then use its MCP URL — the exact endpoint varies by provider, so confirm in their docs. The Metabase CLI stores its credentials securely after mb auth login.

Verify before shipping: confirm an uploads database is enabled under Admin → Settings → Uploads (Metabase docs) and the current Etsy MCP setup in the Etsy developer docs.

Can you generate an Etsy dashboard with AI?

Yes. Use the prompt below with any assistant that can run an Etsy MCP server and the Metabase CLI. It works end to end: if Etsy tables already exist in Metabase it analyzes those; otherwise it pulls the data over the Etsy MCP, loads it with mb upload csv, then builds the dashboard — netting out Etsy fees and skipping cards it has no data for.

Prompt for creating an Etsy Shop Overview dashboard
Create a polished Metabase dashboard for Etsy shop analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help Etsy sellers understand sales, average order value, listing performance,
fees and profitability, and repeat purchase from Etsy data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Etsy tables and
  models). If durable Etsy data is already present — synced from a warehouse or
  uploaded earlier — use it and skip to Step 2.
- If nothing is there, pull it with an Etsy MCP server in read-only mode:
  receipts (orders), transactions (line items), listings, buyers, shop sections,
  and payments/fees. Write each result to a CSV, then load it with the Metabase
  CLI — run "mb upload csv --file <export>.csv" so each upload creates a table and
  a ready-to-query model. Use "mb upload replace <table-id> --file <export>.csv" to
  refresh an existing table instead of creating duplicates.

Step 2 — Inspect before querying:
Etsy CSV exports are usually flat and pre-aggregated (one row per listing or day,
with columns like units sold, gross sales, fees, and net proceeds). Warehouse
tables are raw and order-grained (a receipt is one order; transactions are line
items). Inspect the actual tables and column names first; do not assume exact
names. Map the available raw tables into these analytical concepts where possible:
Receipts (orders), Transactions (line items), Listings, Buyers, Shop sections, and
Payments/fees.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Etsy — it reads a database or CLI-uploaded tables.
- Report NET proceeds: subtract Etsy listing, transaction, and payment fees, and refunds.
- Use receipt-level grain for AOV (an Etsy receipt is one order).
- Only build conversion cards if listing view/stats data is present.
- Define a "repeat buyer" once (2+ paid orders) and reuse it everywhere.
- A single CSV is a point-in-time snapshot: only build trend cards if there is a
  usable date column or multiple periods have been uploaded.

Dashboard title: Etsy Shop Overview

Sections:
1. Executive summary (KPI cards): Net proceeds last 30 days; Orders; AOV; Repeat-
   purchase rate; Fees as % of sales.
2. Sales & demand: Net proceeds by day; Orders by day; AOV trend; Revenue by section.
3. Listing performance: Top listings by net proceeds; Units by listing; Conversion.
4. Customers & retention: Repeat-purchase rate by cohort; Orders per buyer.
5. Fees & profitability: Fees % of sales; Fee breakdown; Net margin by listing.

Filters: Date range, Shop section, Listing, Buyer type.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_etsy_receipts, modeled_etsy_transactions,
modeled_etsy_listings, and modeled_etsy_buyers.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. Include caveats for any metric
that cannot be calculated from the available data. Keep it practical, dense,
and executive-readable. Avoid vanity metrics.

How do you sync Etsy data into a database or warehouse?

For dashboards that need history and reliability, land Etsy data in a database first, then connect Metabase to that database.

Connector options

  • Etsy Open API v3(raw) — the source of truth; paginate receipts, transactions, and listings and upsert on a schedule.
  • dlt(code) — write a Python pipeline against the Etsy API for full control.
  • Managed ETL (verify) — check whether your ETL vendor offers an Etsy source; availability varies.
  • Include payments — sync the payment/ledger data to net out fees, not just sale prices.

Notes

  • An Etsy receipt is one order; transactions are line items.
  • Model listing, transaction, and payment fees for true margin.
  • Rate limits apply — sync incrementally by timestamp.

How should you model Etsy data in Metabase?

Core tables

TableGrainKey columns
receiptsone row per orderreceipt_id, buyer_user_id, total_price, was_paid, created_timestamp
transactionsone row per line itemreceipt_id, listing_id, quantity, price
listingsone row per listinglisting_id, title, shop_section_id, state
paymentsone row per payment/feereceipt_id, fee_type, amount

Modeling advice

  • Treat the receipt as the order; compute AOV at the receipt grain.
  • Filter on was_paid so unpaid carts don't count as sales.
  • Model fees by type (listing, transaction, payment) for net margin.
  • Join transactions to listings for listing-level performance.

Which Etsy metrics should you track in Metabase?

MetricDefinitionNotes
Net proceedsGross sales − fees − refunds.Model listing/transaction/payment fees.
Average order value (AOV)Gross sales ÷ receipts.Receipt grain.
Listing conversionOrders ÷ listing views.Needs listing stats/views.
Repeat-purchase rateBuyers with 2+ paid orders ÷ all.Fixed window; watch by cohort.
Fee ratioEtsy fees ÷ gross sales.Track as fees change.

What SQL powers Etsy dashboards in Metabase?

These assume synced Etsy tables in a warehouse (PostgreSQL dialect). Adjust identifiers to match your connector.

Gross sales and orders per dayPostgreSQL

Paid receipts and shipping over the last 30 days.

SELECT
  date_trunc('day', r.created_timestamp)              AS day,
  COUNT(*)                                            AS orders,
  SUM(r.total_price)                                  AS gross_sales,
  SUM(COALESCE(r.total_shipping_cost, 0))             AS shipping
FROM receipts r
WHERE r.was_paid = true
  AND r.created_timestamp >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;
Average order value by weekPostgreSQL

AOV at the receipt grain, on paid receipts.

SELECT
  date_trunc('week', r.created_timestamp) AS week,
  COUNT(*)                                AS orders,
  ROUND(SUM(r.total_price) / NULLIF(COUNT(*), 0), 2) AS aov
FROM receipts r
WHERE r.was_paid = true
GROUP BY 1
ORDER BY 1;
Top listings by revenuePostgreSQL

Units and gross revenue by listing over 90 days.

SELECT
  l.title                          AS listing,
  SUM(t.quantity)                  AS units,
  SUM(t.price * t.quantity)        AS gross_revenue
FROM transactions t
JOIN receipts r ON r.receipt_id = t.receipt_id
JOIN listings l ON l.listing_id = t.listing_id
WHERE r.was_paid = true
  AND r.created_timestamp >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY l.title
ORDER BY gross_revenue DESC
LIMIT 20;
Repeat-purchase ratePostgreSQL

Share of buyers with two or more paid orders.

WITH buyer_orders AS (
  SELECT buyer_user_id, COUNT(*) AS paid_orders
  FROM receipts
  WHERE was_paid = true
    AND buyer_user_id IS NOT NULL
  GROUP BY buyer_user_id
)
SELECT
  ROUND(100.0 * COUNT(*) FILTER (WHERE paid_orders >= 2)
    / NULLIF(COUNT(*), 0), 2) AS repeat_purchase_rate_pct
FROM buyer_orders;

What are common mistakes when analyzing Etsy in Metabase?

Reporting sale price as profit.→ Etsy's listing, transaction, and payment fees add up — net them out.
Counting transactions instead of receipts for AOV.→ A receipt is the order; compute AOV at the receipt grain.
Including unpaid receipts as sales.→ Filter on was_paid so only real orders count.
Ignoring shipping cost vs. charged.→ Under-charging shipping quietly erodes margin — compare the two.
Treating MCP answers as governed reporting.→ Use MCP for live exploration; build warehouse-backed dashboards for anything people depend on.

Related analytics

Related integrations

FAQ

Does Metabase connect natively to Etsy?
No. Metabase reads SQL databases and warehouses. Sync Etsy into a database first (the Open API v3, dlt, or a managed connector), then connect Metabase to that database.
Is there an official Etsy MCP server?
Not today. There's no first-party Etsy MCP, so sellers use a managed server (e.g. Apideck exposes normalized products, orders, and stores) or a community Etsy API v3 server.
What counts as an order on Etsy?
An Etsy receipt represents one order and can contain multiple transactions (line items). Compute order-level metrics like AOV at the receipt grain, and use transactions for listing-level analysis.