Pendo × Metabase

How to build Pendo dashboards in Metabase

Pendo is a product experience platform that tracks feature and page usage, runs in-app guides, and collects NPS feedback across your applications. Metabase is where you turn those customer signals into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Pendo MCP server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that syncs Pendo 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 Pendo connector, and a BI warehouse is the wrong home for raw event or session streams. Sync entities and aggregates — requests, responses, votes, daily usage rollups — and leave the raw firehose in Pendo.

How do you connect Pendo to Metabase?

Most teams combine both routes: use MCP and CLI uploads for a fast first pass, then move recurring product reporting to a warehouse-backed model.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair the Pendo 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.

Best for
  • Quick lookups such as "show me feature adoption and engagement"
  • Loading a Pendo export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed recurring reporting
  • Use read-only/scoped credentials wherever the MCP server supports them
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Pendo data into a database or warehouse with a connector, native export, or API pipeline, then point Metabase at it.

Best for
  • Pendo reporting that product leadership depends on
  • Joining Pendo data with CRM, support, product analytics, or revenue data
  • Long-run trends for feature adoption and engagement and nps trend by account segment
Trade-offs
  • You own the refresh schedule and the modeling layer
  • Sync entities and rollups — not raw event or session firehoses
  • Metric definitions must be consistent across teams and tools

What can you analyze from Pendo data in Metabase?

  • Feature adoption and engagement — built from feature and page usage rollups and the related NPS responses, guide engagement, accounts and visitors data your sync exposes.
  • NPS trend by account segment — built from feature and page usage rollups and the related NPS responses, guide engagement, accounts and visitors data your sync exposes.
  • Guide performance and reach — built from feature and page usage rollups and the related NPS responses, guide engagement, accounts and visitors data your sync exposes.
  • Account health from usage breadth — built from feature and page usage rollups and the related NPS responses, guide engagement, accounts and visitors data your sync exposes.
  • Activation funnel by cohort — built from feature and page usage rollups and the related NPS responses, guide engagement, accounts and visitors data your sync exposes.

Which Pendo dashboards should you build in Metabase?

For: PMs, growth

Feature adoption

Which features get used, by whom, how often.

  • Adoption rate by feature (bar)
  • Weekly active users per feature (line)
  • Features used per account (line)
  • Unused features by segment (table)
For: Product, design

Frustration signals

Where the product fights its users.

  • Rage clicks per 1,000 sessions by page (bar)
  • Dead and error clicks by flow (line)
  • Frustrated-session share (number + trend)
  • Top frustration pages this week (table)
For: Growth, onboarding owners

Activation and funnels

How new users reach value.

  • Activation rate by signup cohort (line)
  • Funnel conversion by step (bar)
  • Time to first key action (line)
  • Biggest drop-off steps (table)
For: Leadership, customer success

Account engagement

Usage as a leading indicator for retention.

  • Usage breadth and depth by account (table)
  • Engagement trend for top accounts (line)
  • Accounts with declining usage (table)
  • Usage by plan tier (bar)

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

Pair the Pendo 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 a daily rollup of feature and page usage rollups for the flows or features you care about.
  • Export the result as CSV, keeping stable IDs, statuses, segments, and timestamps.
  • 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

  • MCP lookups are excellent for exploration, not scheduled reporting.
  • A CSV upload is a snapshot; refresh it with mb upload replace or move to the pipeline for real history.
  • Daily rollups are required for adoption and frustration trends — a single snapshot can't show direction.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up Pendo MCP and the Metabase CLI?

Pendo MCP serverofficial

Transport
Hosted remote MCP via Streamable HTTP (open beta)
Auth
OAuth through Pendo (or a service account); an admin must enable it
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)
MCPExample MCP client config
{
  "mcpServers": {
    "pendo": {
      "url": "https://app.pendo.io/mcp/v0/shttp"
    }
  }
}

Subscriptions in other regions swap the host — us1.app.pendo.io, app.eu.pendo.io, app.au.pendo.io, or app.jpn.pendo.io. It's also listed in the Claude connectors directory for one-click setup. Don't confuse this analytics server with Pendo's separate /mcp/visitor/shttp guide-delivery beta, which serves in-app content rather than data. Endpoint verified July 2026.

TerminalLoad a Pendo 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 feature-and-page-usage-rollups export — creates a table AND a model
mb upload csv --file pendo-feature-and-page-usage-rollups.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file pendo-feature-and-page-usage-rollups.csv

Can you generate a Pendo dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Pendo MCP server and the Metabase CLI. It works end to end: if Pendo 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.

Prompt for creating a Pendo Product Experience Overview dashboard
Create a polished Metabase dashboard for Pendo product experience analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help product teams understand feature adoption, frustration signals, activation funnels, and account engagement from Pendo data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for pendo tables and
  models). If durable Pendo 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 Pendo MCP server:
  feature and page usage rollups, plus NPS responses, guide engagement, accounts and visitors.
  Prefer aggregated or rollup views over raw events. 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 fields, statuses,
segments, and timestamps, and whether history exists before creating duration
or trend cards.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Pendo — it reads a database or CLI-uploaded tables.
- Never load raw event or session streams into Metabase; use rollups, entity
  tables, and response- or request-grain data.
- Compute NPS as % promoters (9-10) minus % detractors (0-6) on the 0-10 scale,
  and always show response volume next to the score.
- Only compute durations (time to close, time to complete) when the required
  timestamps exist.
- Exclude internal, test, and anonymous-preview activity from headline cards,
  and segment by plan or customer segment where the field exists.
- 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: Pendo Product Experience Overview

Sections:
1. Executive summary: Weekly active users; Adoption rate of key features;
   Frustrated-session share; Activation rate.
2. Adoption: Active accounts by feature; usage breadth per account.
3. Frustration: Rage, dead, and error clicks by page and flow.
4. Activation: Cohort funnel by step; time to first key action.
5. Accounts: Engagement trends; accounts with declining usage.

Filters: Date range, Product area, Segment, Status, Survey or Feature.

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

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

Connector options

  • Managed ETL or native export — use a connector or the vendor's own warehouse sync when one covers the objects you need.
  • Custom pipeline — use the Pendo REST API for control over objects, fields, and refresh cadence.
  • MCP + CSV — use this for quick exploration and one-off slices.

Pendo's native Data Sync exports raw events and metadata on a schedule — directly to Snowflake, or to BigQuery and other warehouses via cloud storage. Fivetran, Airbyte, and dlt all also ship Pendo connectors for feature, page, guide, and NPS data.

Notes

  • Decide the grain first — request, response, or daily rollup — it drives every trend card and the warehouse bill.
  • Land raw entity tables first, then build clean Metabase models on top.
  • Normalize account, feature or flow, segment, usage-date, event-count, and user-count fields.

How should you model Pendo data in Metabase?

Core tables

TableGrainKey columns
pendo_feature_usageone row per feature per account per dayfeature_id, feature_name, account_id, usage_date, event_count, visitor_count
pendo_nps_responsesone row per NPS responseid, visitor_id, account_id, score, verbatim, responded_at, segment
pendo_accountsone row per accountid, name, plan, arr, created_at, id_last_updated_at

Modeling advice

  • Build a clean product_usage_rollups model with common columns across tools, so multi-source dashboards don't fork definitions.
  • Separate entity tables (requests, surveys, features, accounts) from time-series rollups and event-grain tables.
  • Exclude internal users, test workspaces, and preview traffic from headline metrics; keep segment as an explicit column.
  • Use stable IDs for account, request, and survey joins; display names change.

Which Pendo metrics should you track in Metabase?

MetricDefinitionNotes
Feature adoption rateAccounts or users using a feature over all active accounts or users.Pair adoption with frequency — one visit isn't adoption.
Rage-click rateRage clicks per session or per 1,000 sessions.Normalize by traffic before comparing pages.
Activation rateNew signups reaching the product's value moment.Define the value moment per product, then hold it stable.
Net Promoter ScorePercent promoters minus percent detractors on the 0-10 scale.In-app NPS pairs naturally with usage segments.

What SQL powers Pendo dashboards in Metabase?

These assume a cleaned analytical model in a warehouse (PostgreSQL dialect). Adjust table and column names to match your pipeline.

Feature adoption across active accountsPostgreSQL

Trailing 28-day adoption per feature.

WITH eligible_accounts AS (
  -- One eligible population, used on BOTH sides of the ratio.
  -- Add plan/entitlement filters here if the feature ships on some plans only.
  SELECT id AS account_id
  FROM accounts
  WHERE is_active
    AND NOT is_internal
), adoption AS (
  SELECT
    r.feature_name,
    COUNT(DISTINCT r.account_id) AS adopting_accounts
  FROM product_usage_rollups r
  JOIN eligible_accounts e ON e.account_id = r.account_id
  WHERE r.usage_date >= CURRENT_DATE - INTERVAL '28 days'
  GROUP BY r.feature_name
)
SELECT
  a.feature_name,
  a.adopting_accounts,
  (SELECT COUNT(*) FROM eligible_accounts) AS eligible_accounts,
  ROUND(
    100.0 * a.adopting_accounts
    / NULLIF((SELECT COUNT(*) FROM eligible_accounts), 0), 1
  ) AS adoption_pct
FROM adoption a
ORDER BY adoption_pct DESC;
Rage clicks per 1,000 sessionsPostgreSQL

Frustration normalized by traffic, by page and week.

SELECT
  page_or_flow,
  date_trunc('week', usage_date) AS week,
  ROUND(
    1000.0 * SUM(rage_clicks) / NULLIF(SUM(sessions), 0), 2
  ) AS rage_clicks_per_1k_sessions
FROM session_rollups
GROUP BY 1, 2
ORDER BY 1, 2;
Accounts with declining usagePostgreSQL

Trailing 28 days vs. the prior 28 days.

WITH recent AS (
  SELECT account_id, SUM(event_count) AS events_28d
  FROM product_usage_rollups
  WHERE usage_date >= CURRENT_DATE - INTERVAL '28 days'
  GROUP BY account_id
), prior AS (
  SELECT account_id, SUM(event_count) AS events_prior_28d
  FROM product_usage_rollups
  WHERE usage_date >= CURRENT_DATE - INTERVAL '56 days'
    AND usage_date < CURRENT_DATE - INTERVAL '28 days'
  GROUP BY account_id
)
SELECT
  p.account_id,
  p.events_prior_28d,
  COALESCE(r.events_28d, 0) AS events_28d,
  ROUND(
    100.0 * (COALESCE(r.events_28d, 0) - p.events_prior_28d)
    / NULLIF(p.events_prior_28d, 0), 1
  ) AS change_pct
FROM prior p
LEFT JOIN recent r USING (account_id)
WHERE p.events_prior_28d > 0
ORDER BY change_pct ASC
LIMIT 20;

What are common mistakes when analyzing Pendo in Metabase?

Syncing raw event or session streams into the warehouse.→ Land entities, votes, responses, and daily rollups. Raw streams belong in Pendo; the warehouse is for trends and joins.
Comparing raw frustration counts across pages.→ High-traffic pages always lead raw counts. Normalize rage and dead clicks per session or per 1,000 sessions before ranking pages.
Counting internal and test users in adoption numbers.→ Your own team is often a feature's heaviest user. Exclude internal domains and test accounts from headline adoption and engagement.
Building dashboards from live MCP lookups only.→ MCP is useful for exploration; durable dashboards need a database-backed model with history.

Related analytics

Related dashboards

Related integrations

FAQ

Does Metabase connect natively to Pendo?
No. Metabase reads databases and warehouses. Sync Pendo data into a database first, or upload a CSV with the Metabase CLI, then build Metabase models and dashboards on top.
Should Metabase replace Pendo?
No — they answer different questions. Pendo is built for collecting and acting on the signals it captures. Metabase is where you build governed, shareable reporting on top of the same data, and join it with CRM, support, product, and revenue data.
Should I sync raw Pendo session events into my warehouse?
No. Sync daily rollups per page, flow, feature, and account — plus defined events and segment snapshots. Raw session and event streams are expensive to store and unnecessary for trend reporting; keep replay and event-level drill-downs in the source tool.
Can Metabase replace session replay?
No — replay is for watching individual sessions; Metabase is for the aggregate picture. The strong pattern is both: a Metabase dashboard flags a page whose rage-click rate doubled after a release, and the replay tool shows you exactly what users hit.