eBay × Metabase

How to build eBay dashboards in Metabase

eBay's Sell APIs expose your account's orders, listings, fulfillments, and fees across marketplaces. Metabase is where you turn that data into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the eBay MCP and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable pipeline route that syncs eBay data 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 eBay connector. For dashboards that need history and reliability, you'll sync eBay data into a database first (covered below).

How do you connect eBay to Metabase?

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

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair an eBay MCP server (a managed server like Apideck or a community eBay Sell API server, to read live selling 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 "orders awaiting shipment today?"
  • Loading an eBay CSV export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed reporting
  • Use read-only mode on the eBay 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 eBay into a database or warehouse with the Sell APIs, dlt, or a managed connector, then point Metabase at it.

Best for
  • Profitability dashboards net of eBay fees
  • Listing and inventory performance across categories
  • Fulfillment and shipping SLA tracking
Trade-offs
  • You own the refresh schedule and the data model
  • eBay final value and store fees matter — model them
  • Rate limits apply — plan incremental syncs

What can you analyze from eBay data in Metabase?

  • Sales — net proceeds, orders, and AOV over time
  • Listing performance — top sellers, units, and sell-through
  • Fulfillment — on-time shipment and handling time
  • Fees & profitability — final value and store fees
  • Categories — revenue split across your catalog
  • Marketplaces — revenue across regions and currencies

Which eBay dashboards should you build in Metabase?

For: Sellers & owners

Sales overview

The daily pulse of selling demand.

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

Listing performance

What's selling and what's stuck.

  • Top listings by net proceeds (bar)
  • Units sold by listing (table)
  • Sell-through rate by listing (bar)
  • Return / cancellation rate (line)
For: Ops

Fulfillment

Ship fast, keep the metrics green.

  • Orders awaiting shipment (number)
  • On-time shipment rate (line)
  • Handling time distribution (histogram)
  • Late-shipment / defect rate (line)
For: Finance

Fees & profitability

What eBay keeps, and what's left.

  • eBay fees as % of sales (line)
  • Final value vs. store/insertion fees (bar)
  • Net margin by category (table)
  • Shipping cost vs. charged (table)

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

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

Example workflow

  • Ask the eBay MCP which orders are awaiting shipment or how listings sold this week.
  • Export the orders, listings, or fees 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

  • The eBay 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 MCP exists; managed and community servers fill the gap — use read-only mode so analysis can't trigger writes.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

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

eBay via Apideckmanaged

Scope
Normalized products, orders, and stores
Auth
Connect eBay inside Apideck
Alt
Community eBay Sell API servers (orders, inventory)
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 ebay-orders.csv
Requires
An uploads database (Admin → Settings → Uploads)
Cursor~/.cursor/mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "ebay": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.apideck.com/ebay"
      ]
    }
  }
}
TerminalLoad an eBay 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 eBay CSV export — creates a table AND a model
mb upload csv --file ebay-orders.csv --collection root

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

Connect your eBay account 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 and needs an uploads database enabled.

Verify before shipping: confirm an uploads database is enabled under Admin → Settings → Uploads (Metabase docs) and the eBay Sell API reference in the eBay developer docs.

Can you generate an eBay dashboard with AI?

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

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

Goal: Help eBay sellers understand sales, average order value, listing performance,
fulfillment, and fees/profitability from eBay Sell API data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for eBay tables and
  models). If durable eBay 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 the eBay MCP server in read-only mode:
  orders, line items, listings/inventory, fulfillments/shipments, and
  fees/payouts. 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:
eBay CSV exports are often flat (one row per order or listing, with columns like
total amount, quantity, fees, and fulfillment status). Warehouse tables are raw
and order-grained (orders, line items, listings, fees). Inspect the actual tables
and column names first; do not assume exact names. Map the available raw tables
into these analytical concepts where possible: Orders, Line items,
Listings/inventory items, Categories, Fulfillments/shipments, and Fees/payouts.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  eBay — it reads a database or CLI-uploaded tables.
- Report NET proceeds: subtract eBay final value and store fees, and refunds.
- Use order-level grain for AOV.
- Only build fulfillment SLA cards if shipment/handling data is present.
- Separate marketplaces (US, UK, etc.) and currencies.
- 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: eBay Seller Overview

Sections:
1. Executive summary (KPI cards): Net proceeds last 30 days; Orders; AOV; Fees as %
   of sales; On-time shipment rate.
2. Sales & demand: Net proceeds by day; Orders by day; AOV trend; Revenue by category.
3. Listing performance: Top listings by net proceeds; Units by listing; Sell-through.
4. Fulfillment: Orders awaiting shipment; On-time rate; Handling time.
5. Fees & profitability: Fees % of sales; Fee breakdown; Net margin by category.

Filters: Date range, Marketplace, Category, Listing, Fulfillment status.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_ebay_orders, modeled_ebay_line_items,
modeled_ebay_listings, and modeled_ebay_fees.

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 eBay data into a database or warehouse?

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

Connector options

  • eBay Sell APIs(raw) — the source of truth (Fulfillment, Inventory, Finances); paginate and upsert on a schedule.
  • dlt(code) — write a Python pipeline against the Sell APIs for full control.
  • Managed ETL (verify) — check whether your ETL vendor offers an eBay source; availability varies.
  • Include finances — sync the Finances API to net out fees, not just order totals.

Notes

  • Land raw tables first, then build clean models on top.
  • Model final value and store fees for true net proceeds.
  • Keep marketplace and currency columns to avoid blending regions.

How should you model eBay data in Metabase?

Core tables

TableGrainKey columns
ordersone row per orderorder_id, creation_date, order_payment_status, fulfillment_status, total_amount
line_itemsone row per itemorder_id, listing_id, title, quantity, line_item_cost
listingsone row per listinglisting_id, title, category_id, available_quantity
feesone row per feeorder_id, fee_type, amount

Modeling advice

  • Filter on order_payment_status to count only paid orders.
  • Compute net proceeds = gross sales − fees − refunds.
  • Compute AOV at the order grain; model fees by type.
  • Keep marketplace and currency; don't sum across regions blindly.

Which eBay metrics should you track in Metabase?

MetricDefinitionNotes
Net proceedsGross sales − fees − refunds.Model final value + store fees.
Average order value (AOV)Gross sales ÷ orders.Order grain; segment by category.
Sell-through rateUnits sold ÷ units listed.Flags dead inventory.
On-time shipment rateOn-time ÷ fulfilled orders.Protects seller standards.
Fee ratioeBay fees ÷ gross sales.Track as fees change.

What SQL powers eBay dashboards in Metabase?

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

Gross sales and orders per dayPostgreSQL

Paid orders over the last 30 days.

SELECT
  date_trunc('day', o.creation_date)                  AS day,
  COUNT(*)                                            AS orders,
  SUM(o.total_amount)                                 AS gross_sales
FROM orders o
WHERE o.order_payment_status = 'PAID'
  AND o.creation_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;
Average order value by weekPostgreSQL

AOV at the order grain, on paid orders.

SELECT
  date_trunc('week', o.creation_date) AS week,
  COUNT(*)                            AS orders,
  ROUND(SUM(o.total_amount) / NULLIF(COUNT(*), 0), 2) AS aov
FROM orders o
WHERE o.order_payment_status = 'PAID'
GROUP BY 1
ORDER BY 1;
Top listings by revenuePostgreSQL

Units and gross revenue by listing over 90 days.

SELECT
  li.title                         AS listing,
  SUM(li.quantity)                 AS units,
  SUM(li.line_item_cost)           AS gross_revenue
FROM line_items li
JOIN orders o ON o.order_id = li.order_id
WHERE o.order_payment_status = 'PAID'
  AND o.creation_date >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY li.title
ORDER BY gross_revenue DESC
LIMIT 20;
On-time shipment rate by weekPostgreSQL

Fulfillment SLA performance over time.

SELECT
  date_trunc('week', o.creation_date) AS week,
  ROUND(100.0 * COUNT(*) FILTER (WHERE o.shipped_on_time = true)
    / NULLIF(COUNT(*) FILTER (WHERE o.fulfillment_status = 'FULFILLED'), 0), 2)
    AS on_time_rate_pct
FROM orders o
GROUP BY 1
ORDER BY 1;

What are common mistakes when analyzing eBay in Metabase?

Reporting gross sales as profit.→ eBay's final value and store fees add up — net them out.
Counting unpaid orders as sales.→ Filter on payment status so only real orders count.
Summing across marketplaces and currencies.→ Keep marketplace and currency columns and convert before combining.
Ignoring fulfillment SLAs.→ Late shipments hurt seller standards; track on-time rate and handling time.
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 eBay?
No. Metabase reads SQL databases and warehouses. Sync eBay into a database first (the Sell APIs, dlt, or a managed connector), then connect Metabase to that database.
Is there an official eBay MCP server?
Not today. There's no first-party eBay MCP, so sellers use a managed server (e.g. Apideck exposes normalized products, orders, and stores) or a community eBay Sell API server. Use read-only mode for analysis.
How do I quickly load eBay data without a warehouse?
Export a CSV of your eBay orders and run `mb upload csv --file ebay-orders.csv` with the Metabase CLI. It creates a table and a model you can build questions on right away. You'll need an uploads database enabled under Admin → Settings → Uploads. Refresh later with `mb upload replace`, or move to the pipeline route when you need history.
How do I calculate true profitability on eBay?
Start from gross sales, subtract final value and store/insertion fees and refunds, and reconcile against the Finances API. Model fees by type so you can see net margin per category.