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.
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.
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.
- 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
- 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
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.
- Profitability dashboards net of eBay fees
- Listing and inventory performance across categories
- Fulfillment and shipping SLA tracking
- 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?
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)
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)
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)
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 csvto 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 replaceor 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 csvneeds 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)
{
"mcpServers": {
"ebay": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apideck.com/ebay"
]
}
}
}# 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.csvConnect 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.
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.
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
| Table | Grain | Key columns |
|---|---|---|
orders | one row per order | order_id, creation_date, order_payment_status, fulfillment_status, total_amount |
line_items | one row per item | order_id, listing_id, title, quantity, line_item_cost |
listings | one row per listing | listing_id, title, category_id, available_quantity |
fees | one row per fee | order_id, fee_type, amount |
Modeling advice
- Filter on
order_payment_statusto 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?
| Metric | Definition | Notes |
|---|---|---|
| Net proceeds | Gross sales − fees − refunds. | Model final value + store fees. |
| Average order value (AOV) | Gross sales ÷ orders. | Order grain; segment by category. |
| Sell-through rate | Units sold ÷ units listed. | Flags dead inventory. |
| On-time shipment rate | On-time ÷ fulfilled orders. | Protects seller standards. |
| Fee ratio | eBay 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.
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;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;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;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;