How to build Webflow dashboards in Metabase
Webflow is a visual-first website platform whose CMS collections, forms, and e-commerce power design-led marketing sites. Metabase is where you turn that site data into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Webflow MCP server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that syncs Webflow stats into a database so you can build dashboards anyone can read.
How do you connect Webflow to Metabase?
Most teams combine both routes: use MCP and CLI uploads for a fast first pass, then move recurring site reporting to a warehouse-backed model.
Live data in, quick analysis out
Pair the Webflow MCP server with the Metabase CLI. Use MCP for live lookups, write a scoped result to CSV, then load it into Metabase as a ready-to-query table and model.
- Quick lookups such as "show me content inventory by collection and status"
- Loading a Webflow export into Metabase in seconds
- Spot-checks and one-off analyses without a warehouse
- Great for exploration, not governed recurring reporting
- Use read-only or least-privilege credentials — CMS MCP servers often include write tools
- CSV uploads are snapshots — refresh or move to a durable route for history
Durable dashboards with history
Sync Webflow stats and entities into a database or warehouse with a connector, script, or API, then point Metabase at it.
- Webflow reporting that content and commerce teams depend on
- Joining Webflow data with analytics, search, and revenue data
- Long-run trends for content inventory by collection and status and form submissions by form and week
- You own the refresh schedule and the rollup grain
- Platform APIs cap what's exposed — and sometimes how much history
- Hosted-plan rate limits shape how often you can sync
What can you analyze from Webflow data in Metabase?
- Content inventory by collection and status — built from CMS items and form submissions and the related collections, e-commerce orders, site publishes data your connection exposes.
- Form submissions by form and week — built from CMS items and form submissions and the related collections, e-commerce orders, site publishes data your connection exposes.
- Publishing cadence and site updates — built from CMS items and form submissions and the related collections, e-commerce orders, site publishes data your connection exposes.
- E-commerce orders and revenue — built from CMS items and form submissions and the related collections, e-commerce orders, site publishes data your connection exposes.
- Traffic per page from Analyze (where enabled) — built from CMS items and form submissions and the related collections, e-commerce orders, site publishes data your connection exposes.
Which Webflow dashboards should you build in Metabase?
CMS inventory
What lives in the collections, and its state.
- Items by collection and status (stacked bar)
- Draft vs. published vs. archived mix (bar)
- Items created and published by week (combo)
- Stale items: not published in 6+ months (table)
Form conversions
What the site captures.
- Submissions by form by week (stacked bar)
- Top converting pages by submissions (table)
- Submission-to-lead match rate (line)
- Field completion quality (table)
Store performance
Orders flowing through the platform.
- Orders and revenue by week (combo)
- Average order value trend (line)
- Fulfillment status mix (bar)
- Revenue by currency (table)
Site activity
Publishing rhythm and page performance.
- Items created vs. published by week (bar)
- Traffic per page from Analyze, where enabled (table)
- Collection growth over time (area)
- Items per collection (bar)
How do you use the Webflow MCP server with the Metabase CLI?
Pair the Webflow MCP server with the Metabase CLI for fast, hands-on analysis. MCP is useful for scoped lookups and summarized exports; the Metabase CLI's upload command loads CSV data into Metabase and creates a ready-to-query table and model.
Example workflow
- Ask the MCP server for an inventory of CMS items and form submissions with created, published, and updated dates.
- Export the result as CSV, keeping stable IDs, statuses, and dates as columns.
- 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
- MCP lookups are excellent for exploration, not scheduled reporting.
- A CSV upload is a snapshot; refresh it with
mb upload replaceor move to a durable route for real history. - Item timestamps support inventory and cadence analysis from day one; traffic trends need the Analyze add-on or an external analytics tool.
mb upload csvneeds an uploads database configured under Admin → Settings → Uploads.
How do you set up Webflow MCP and the Metabase CLI?
Webflow MCP serverofficial
- Transport
- Hosted remote MCP via Streamable HTTP
- Auth
- OAuth (one workspace per authorization)
- Best for
- Live scoped lookup and export
Metabase CLIofficial
- Install
npm install -g @metabase/cli- Auth
mb auth login- Load data
mb upload csv --file data.csv- Requires
- An uploads database (Admin → Settings → Uploads)
{
"mcpServers": {
"webflow": {
"url": "https://mcp.webflow.com/mcp"
}
}
}Legacy clients can connect through npx mcp-remote https://mcp.webflow.com/sse, and a local webflow/mcp-server package exists. OAuth installs a small MCP Bridge App into the workspace you authorize.
# 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 a CMS-items-and-form-submissions export — creates a table AND a model
mb upload csv --file webflow-CMS-items-and-form-submissions.csv --collection root
# Refresh that same table later from a new export
mb upload replace <table-id> --file webflow-CMS-items-and-form-submissions.csvCan you generate a Webflow dashboard with AI?
Yes. Use the prompt below with any assistant that can run the Webflow MCP server and the Metabase CLI. It works end to end: if Webflow tables already exist in Metabase it analyzes those; otherwise it pulls scoped, summarized data over MCP, loads it with mb upload csv, then builds the dashboard and caveats any metric that needs missing history.
Create a polished Metabase dashboard for Webflow content operations analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.
Goal: Help site and content owners understand CMS inventory health, form conversions, e-commerce orders, and publishing cadence from Webflow data.
Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for webflow tables and
models). If durable Webflow data is already present — synced from a warehouse or uploaded earlier — use it and skip to Step 2.
- If nothing is there, pull a scoped, summarized export with the Webflow MCP server:
CMS items and form submissions, plus collections, e-commerce orders, site publishes.
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:
Do not assume exact table or column names. Inspect available content types,
statuses, dates, and whether daily history exists before creating trend cards.
Important:
- Build on whatever data is present; don't claim Metabase connects natively to
the Webflow API — it reads a database or CLI-uploaded tables.
- Exclude revisions, autosaves, and test entries from headline content counts.
- Only compute rates (conversion, open rate, paid share) when both numerator
and denominator exist in the data.
- 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: Webflow Content Operations Overview
Sections:
1. Executive summary: Items by status; Submissions this month; Orders;
Items published this month.
2. Inventory: Items by collection and status; stale items not published in 6+ months.
3. Forms: Submissions by form and page by week.
4. Commerce: Orders, revenue, and AOV by week — only where Webflow Ecommerce is enabled.
5. Cadence: Items created vs. published by week.
Note: traffic data exists only for sites on the Analyze add-on; otherwise pull
sessions from GA4 or Plausible instead of inventing them.
Filters: Date range, Content type/Collection, Status, Author/Editor.
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.How do you sync Webflow data into a database or warehouse?
For dashboards that need history and reliability, land Webflow stats and entities in a database first, then connect Metabase to that database.
Connector options
- Managed ETL — use a connector when one covers the objects you need.
- Custom pipeline — use the Webflow Data & Analyze APIs for control over grain, fields, and refresh cadence.
- MCP + CSV — use this for quick exploration and one-off slices.
Skip the Airbyte Webflow source — it targets the v1 API, deprecated since March 2025, and new v1 tokens can no longer be created. Script the v2 Data API for CMS items, forms, and orders; sites on the Analyze add-on can also pull traffic time-series from the Analyze API (beta since June 2026).
Notes
- Land raw entity tables first, then build clean Metabase models on top.
- Normalize collection, item status, created, published, and updated dates fields.
- Keep platform stats (views, sessions) separate from measured analytics tools' numbers — definitions differ, and gaps are normal.
How should you model Webflow data in Metabase?
Core tables
| Table | Grain | Key columns |
|---|---|---|
webflow_cms_items | one row per CMS item | item_id, collection_id, created_on, last_published, is_draft, is_archived, name, slug |
webflow_form_submissions | one row per submission | submission_id, form_name, submitted_at, page_url, fields_json |
webflow_orders | one row per e-commerce order | order_id, accepted_on, customer_email, total, currency, fulfillment_status |
Modeling advice
- Build a clean
cms_item_inventorymodel with consistent columns, so dashboards survive schema changes and plugin swaps. - Filter out revisions, autosaves, drafts-of-drafts, and internal test entries once, in the model — not in every question.
- Normalize URLs (lowercase, no protocol, no trailing slash) so CMS content joins cleanly to analytics and Search Console data.
- Store dates in UTC and convert at display time; CMS installs often run in site-local timezones.
Which Webflow metrics should you track in Metabase?
| Metric | Definition | Notes |
|---|---|---|
| Conversion rate | Form submissions divided by page sessions. | Join form data to analytics by page URL. |
| Cost per lead | Spend divided by leads captured through site forms. | Attribute with UTM fields captured on submission. |
| Organic clicks & impressions | Search performance per page from Search Console. | The CMS holds content; search data explains reach. |
| Average order value | Revenue divided by orders, where e-commerce is enabled. | Currency-normalize before aggregating. |
What SQL powers Webflow dashboards in Metabase?
These assume Webflow data synced into a warehouse (PostgreSQL dialect). Adjust table and column names to match your pipeline.
Items, drafts, archived, and stale counts.
SELECT
collection_id,
COUNT(*) AS items,
COUNT(*) FILTER (WHERE is_draft) AS drafts,
COUNT(*) FILTER (WHERE is_archived) AS archived,
COUNT(*) FILTER (
WHERE NOT is_draft
AND NOT is_archived
AND last_published < CURRENT_DATE - INTERVAL '6 months'
) AS stale_items
FROM webflow_cms_items
GROUP BY 1
ORDER BY items DESC;What the site captures, trended.
SELECT
date_trunc('week', submitted_at) AS week,
form_name,
COUNT(*) AS submissions
FROM webflow_form_submissions
GROUP BY 1, 2
ORDER BY 1, 3 DESC;Paid store performance from Webflow e-commerce orders.
SELECT
date_trunc('week', accepted_on) AS week,
currency,
COUNT(*) AS orders,
ROUND(SUM(total), 2) AS revenue,
ROUND(SUM(total) / NULLIF(COUNT(*), 0), 2) AS avg_order_value
FROM webflow_orders
WHERE payment_status = 'PAID'
GROUP BY 1, 2
ORDER BY 1, 2;