Pylon × Metabase

How to build Pylon support dashboards in Metabase

Pylon is an AI-native B2B support platform that unifies conversations from Slack, Microsoft Teams, email, and in-app chat with rich account context. 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 the Pylon MCP server and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable pipeline route that syncs Pylon 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 Pylon connector. For dashboards that need history and reliability, you'll sync Pylon into a database first (covered below).

How do you connect Pylon to Metabase?

Most teams combine both routes: use the Pylon MCP server and Metabase CLI route to pull live data and stand up a quick analysis, and the pipeline route for the dashboards people depend on.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair Pylon's official MCP server (to read live issues, accounts, and contacts) with the Metabase CLI, whose upload command loads a CSV into Metabase as a ready-to-query table and model.

Best for
  • Account-level questions like "which accounts have open escalations?"
  • Loading a Pylon CSV export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed reporting
  • Pylon's MCP is scoped to your user — keep the connection read-only so analysis can't update issues
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Pylon into a database or warehouse with dlt or the REST API, then point Metabase at it.

Best for
  • Account health and support-load dashboards for B2B teams
  • Joining support with CRM, product usage, and renewal data
  • Trends over quarters and per-account comparisons
Trade-offs
  • No first-party managed connector — plan on API or dlt-based sync
  • You own the data model and refresh schedule
  • Capture issue state changes for accurate time-in-status

What can you analyze from Pylon data in Metabase?

  • Issue volume — created vs. resolved by day and channel
  • Time to first response — overall and by account tier
  • Account health — open issues, escalations, and load by account
  • Backlog and aging — open work and how long it's been waiting
  • Contact drivers — volume by tag and feature requests
  • Channel mix — Slack vs. Teams vs. email
  • Team load — workload distribution across members

Which Pylon dashboards should you build in Metabase?

For: Support & CS leads

Support overview

The daily pulse across channels.

  • Issues created vs. resolved per day (dual line)
  • Median time to first response (number + trend)
  • Open backlog by status (bar)
  • Volume by channel (Slack, Teams, email) (bar)
For: Customer success

Account health

B2B support is account-shaped, not just ticket-shaped.

  • Open issues by account (table)
  • Accounts with rising issue volume (line)
  • Escalations by account (bar)
  • Top accounts by support load (table)
For: Support ops

Response time & SLA

Are we responding fast for key accounts?

  • First response time p50/p90 by week (line)
  • Response time by account tier (bar)
  • Aging open issues by days-open bucket (table)
  • Reopened issues by week (line)
For: Product & eng liaison

Drivers & feature requests

Turn support signal into product priorities.

  • Volume by tag/topic (bar)
  • Feature requests by account (table)
  • Issues linked to engineering work (number)
  • Top contact drivers this quarter (bar)

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

Pair the Pylon MCP server with the Metabase CLI for fast, hands-on analysis. Pylon hosts an official remote MCP server that reads live issues, accounts, and contacts; the Metabase CLI's upload command loads a CSV into Metabase and creates a ready-to-query table and model. For analysis, keep the Pylon connection read-only.

Example workflow

  • Ask the Pylon MCP which accounts have open escalations, summarized by owner.
  • Export the issues, accounts, and contacts you want to keep as CSVs.
  • Run mb upload csv to load them into Metabase as tables and models, then build questions and dashboards on top.

Be honest about the limits

  • The Pylon MCP is great for live lookups — not for scheduled or audited reporting.
  • A CSV upload is a point-in-time snapshot; trend and time-in-status analysis still needs a warehouse sync, or refresh with mb upload replace.
  • Access follows the authenticated user's permissions in Pylon; keep the connection read-only so analysis can't update issues.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

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

Pylon MCPofficial

Endpoint
https://mcp.usepylon.com
Transport
Remote (Streamable HTTP, stateless)
Auth
OAuth 2.0; access scoped to your Pylon user
Enable
Settings → AI Controls → MCP Server

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": {
    "pylon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.usepylon.com"]
    }
  }
}

A Pylon admin enables the MCP server under Settings → AI Controls → MCP Server, and each user needs the MCP Access role. On first connection the server opens a browser window to authorize.

TerminalLoad a Pylon 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 a Pylon CSV export — creates a table AND a model
mb upload csv --file pylon-issues.csv --collection root

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

The Metabase CLI stores its credentials securely after mb auth login. Pylon's MCP is scoped to your user, so keep the connection read-only for analysis.

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

Can you generate a Pylon dashboard with AI?

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

Prompt for creating a Pylon Support Overview dashboard
Create a polished Metabase dashboard for Pylon B2B support analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help support and customer success leaders understand volume, responsiveness,
account health, and contact drivers from Pylon data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Pylon tables and
  models). If durable Pylon 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 Pylon MCP server (keep the connection
  read-only): issues, accounts, contacts, and users. 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 names. Map the available raw tables into these
analytical concepts where possible: Issues, Accounts, Contacts, Users (team
members), Channels, Tags, and custom fields. Inspect the actual tables and column
names first.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Pylon — it reads a database or CLI-uploaded tables.
- Use medians (p50) and p90 for response times, never averages.
- B2B support is account-shaped — roll metrics up to the account where useful.
- If issue state history is missing, do not calculate reopen rate or
  time-in-status. Use a caveat instead.
- Only build a card if its underlying column/metric exists in the data.
- A single CSV is a point-in-time snapshot: reopen rate and time-in-status need
  history, so build trend cards only if a warehouse sync or multiple uploads
  provide it.

Dashboard title: Pylon Support Overview

Sections:
1. Executive summary (KPI cards): Issues created last 7 days; Resolved last 7
   days; Open backlog; Median time to first response; Accounts with open
   escalations; Volume by channel.
2. Volume & backlog: Created vs resolved by day; Open by status; Backlog aging;
   Volume by channel.
3. Account health: Open issues by account; Accounts with rising volume; Top
   accounts by load; Escalations by account.
4. Response time: First response p50/p90 by week; Response time by account tier;
   Reopened by week (only if history exists).
5. Drivers: Volume by tag; Feature requests by account; Top contact drivers.

Filters: Account, Channel, Tag, Assignee, Status, Date range.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_pylon_issues, modeled_pylon_accounts,
modeled_pylon_contacts, and modeled_pylon_users.

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 build the Pylon → Metabase pipeline?

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

No paid tool required. A fully free stack: a small dlt or hand-written script (extract) → a free Postgres database like Neon or Supabase (load) → a scheduler such as GitHub Actions cron (host) → Metabase (visualize). For hosting and scheduling details, see our data pipeline guide.

Connector options

  • dlt (free, code) — write a Python pipeline against the Pylon REST API; the most reliable route since there's no first-party managed connector.
  • Pylon REST API (free, raw) — the source of truth; paginate issues, accounts, and contacts and upsert on a schedule.
  • Managed ETL (paid, verify) — check whether your ETL vendor offers a Pylon connector; availability varies, so confirm before relying on it.

Notes

  • Land raw tables first, then build clean models on top.
  • Sync accounts and their custom fields — account context is what makes B2B support analytics useful.
  • Capture issue state changes if you want accurate reopen rate and time-in-status.

How should you model Pylon data in Metabase?

Core tables

TableGrainKey columns
issuesone row per issueid, state, channel, account_id, assignee_id, requester_id, created_at, first_response_at, closed_at
accountsone row per account (company)id, name, domain, owner_id, tier (custom field)
contactsone row per contactid, email, account_id
usersone row per team memberid, name

Modeling advice

  • Roll issues up to the account for most B2B support dashboards.
  • Normalize state (new/open/on-hold/closed) and channel so charts stay stable.
  • Bring account custom fields (tier, ARR, owner) into your model so you can segment load by account value.
  • Treat tags as a bridge table so an issue can carry many tags.
  • Define "closed" once and reuse it everywhere.

Which Pylon metrics should you track in Metabase?

MetricDefinitionNotes
Time to first responseCreated → first response.Report median and p90; segment by account tier.
Issue volumeCreated vs. resolved in a period.Segment by channel and account.
Open issues by accountBacklog rolled up to the account.Core B2B health signal.
EscalationsIssues flagged or escalated, by account.Watch concentration in key accounts.
Backlog agingHow long open issues have waited.Bucket by days open.
Feature-request volumeIssues tagged as requests, by account.Feeds product prioritization.

What SQL powers Pylon dashboards in Metabase?

These assume the modeled tables above (PostgreSQL dialect). Adjust identifiers to match your warehouse.

Issues created vs. resolved per dayPostgreSQL

The basic volume trend over the last 30 days.

SELECT
  date_trunc('day', i.created_at) AS day,
  COUNT(*)                                        AS created,
  COUNT(*) FILTER (WHERE i.state = 'closed')      AS resolved
FROM issues i
WHERE i.created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;
Open issues by accountPostgreSQL

Where the support load concentrates across B2B accounts.

SELECT
  a.name             AS account,
  COUNT(*)           AS open_issues
FROM issues i
JOIN accounts a ON a.id = i.account_id
WHERE i.state <> 'closed'
GROUP BY a.name
ORDER BY open_issues DESC
LIMIT 25;
Time to first response by weekPostgreSQL

Median from the issue's first-response timestamp.

SELECT
  date_trunc('week', i.created_at) AS week,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (i.first_response_at - i.created_at)) / 60.0
  ) AS median_first_reply_min
FROM issues i
WHERE i.first_response_at IS NOT NULL
GROUP BY 1
ORDER BY 1;
Volume by channelPostgreSQL

Slack vs. Teams vs. email over the last 30 days.

SELECT
  i.channel,
  COUNT(*)           AS issues
FROM issues i
WHERE i.created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY i.channel
ORDER BY issues DESC;

What are common mistakes when analyzing Pylon in Metabase?

Treating a live MCP lookup or a one-off CSV as governed reporting.→ Use the Pylon MCP and CSV uploads for triage and exploration; build warehouse-backed Metabase dashboards for anything people depend on.
Reporting only at the issue grain.→ B2B support is account-shaped — roll metrics up to the account to see real health.
Ignoring account custom fields.→ Bring tier and ARR into your model so load is weighted by account value.
Using averages for response time.→ Report medians and p90 — these durations are heavily right-skewed.
Expecting reopen rate without state history.→ Sync issue state changes if you want accurate reopen and time-in-status metrics.

Related analytics

Related integrations

FAQ

Does Metabase connect natively to Pylon?
No. Metabase reads SQL databases and warehouses. Sync Pylon into a database first (dlt or the REST API), then connect Metabase to that database.
Is the Pylon MCP server official?
Yes. Pylon hosts an official remote MCP server at https://mcp.usepylon.com over Streamable HTTP with OAuth, exposing tools to read and update issues, accounts, and contacts. Enable it under Settings → AI Controls → MCP Server, and keep the connection read-only for analysis.
How do I quickly analyze Pylon data without a warehouse?
Pull the issues, accounts, and contacts you need with the Pylon MCP server (keep the connection read-only), export them to CSV, and run `mb upload csv --file data.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.
Do I need a paid connector to sync Pylon?
No. Pylon has no first-party managed connector, so a free stack is the natural fit: a small dlt or hand-written script against the Pylon REST API, a free Postgres tier (Neon or Supabase), and GitHub Actions cron to run it on a schedule.
Why roll metrics up to the account?
Pylon is built for B2B support, where the meaningful unit is the customer account, not the individual ticket. Account-level open issues, escalations, and load surface churn and renewal risk that ticket counts hide.