Stigg × Metabase

How to build Stigg monetization dashboards in Metabase

Stigg is a pricing, packaging, and entitlement platform: it defines your plans, gates features, and meters usage. Metabase is where you turn that into monetization dashboards — plan adoption, entitlement usage, and upgrade paths — and join it with product and billing data. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Stigg MCP server and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable pipeline route that syncs Stigg into a database so you can build monetization dashboards anyone can read.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Stigg connector. For dashboards that need history and reliability, you'll sync Stigg into a database first (covered below). Hard revenue often lives in your billing provider — join it in.

How do you connect Stigg to Metabase?

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

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair the Stigg MCP server (to look up live customers, subscriptions, plans, and entitlements) 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 "which customers are near their usage limit on the Pro plan?"
  • Loading a Stigg CSV export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed monetization reporting
  • Use a read-focused server API key so analysis can't trigger writes
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Stigg via its API and webhooks (and your billing provider's data) into a database, then point Metabase at it.

Best for
  • Plan adoption, packaging, and entitlement-usage dashboards
  • Upgrade/downgrade path and paywall-conversion analysis over time
  • Joining entitlement usage with product analytics and billing revenue
Trade-offs
  • Requires a destination database and a sync to maintain
  • Hard revenue often lives in your billing provider (e.g. Stripe) — join it
  • You own the plan/entitlement definitions and refresh schedule

What can you analyze from Stigg data in Metabase?

  • Plan adoption — active subscriptions and MRR by plan
  • Packaging — add-on attach rates and plan mix over time
  • Entitlement usage — usage against limits, by feature and plan
  • Upgrades and downgrades — migration paths and expansion MRR
  • Paywall conversion — trial/free-to-paid and feature-gate-driven upgrades
  • At-risk accounts — customers hitting limits or downgrading

Which Stigg dashboards should you build in Metabase?

For: Product, monetization

Plans & packaging

How customers distribute across your plans and add-ons.

  • Active subscriptions by plan (bar)
  • MRR by plan and add-on (bar)
  • Plan mix over time (stacked area)
  • Add-on attach rate by plan (table)
For: Product, growth

Entitlement usage

Where customers hit — or never touch — their limits.

  • Usage vs. entitlement limit by feature (bar)
  • Customers approaching a limit (table)
  • Metered-feature consumption over time (line)
  • Unused entitlements by plan (bar)
For: Growth, RevOps

Upgrades & downgrades

How customers move between plans and why.

  • Upgrade and downgrade counts by month (bar)
  • Plan migration paths (flow / table)
  • Expansion MRR from upgrades (line)
  • Time-on-plan before upgrade (histogram)
For: Growth, product-led

Paywalls & conversion

How well plans and paywalls convert.

  • Trial and free-to-paid conversion (line)
  • Checkout/paywall conversion by plan (bar)
  • Feature-gate hits that led to an upgrade (table)
  • Downgrade / cancel reasons (bar)

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

Pair the Stigg MCP server with the Metabase CLI for fast, hands-on analysis. Stigg hosts a first-party remote MCP server that looks up live customers, subscriptions, plans, and entitlements; the Metabase CLI'supload command loads a CSV into Metabase and creates a ready-to-query table and model. For analysis, use a read-focused server API key.

Example workflow

  • Ask the Stigg MCP which customers are near their usage limit on a plan, or which features are gated but rarely hit.
  • Export the customers, subscriptions, and entitlement usage 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 Stigg MCP is great for live lookups — not for scheduled or audited monetization reporting.
  • A CSV upload is a point-in-time snapshot; plan migrations and cohorts still need a warehouse sync, or refresh with mb upload replace.
  • Use a read-focused server API key so analysis can't trigger writes, and respect Stigg API rate limits.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

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

Stigg MCPofficial

Endpoint
https://mcp.stigg.io
Transport
Remote (Streamable HTTP)
Auth
X-API-KEY with a server API key
Local
@stigg/typescript-mcp (npm) via STIGG_API_KEY

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)
ClaudeClaude Code CLI
# Stigg (remote, X-API-KEY header)
claude mcp add --transport http stigg https://mcp.stigg.io \
  --header "X-API-KEY: <YOUR_STIGG_SERVER_API_KEY>"
Cursor~/.cursor/mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "stigg": {
      "url": "https://mcp.stigg.io",
      "headers": {
        "X-API-KEY": "<YOUR_STIGG_SERVER_API_KEY>"
      }
    }
  }
}

Stigg's Cursor docs also recommend a local bridge with the @stigg/typescript-mcp package:

Local Stigg MCP (STIGG_API_KEY)
{
  "mcpServers": {
    "stigg": {
      "command": "npx",
      "args": ["-y", "@stigg/typescript-mcp"],
      "env": { "STIGG_API_KEY": "<YOUR_STIGG_SERVER_API_KEY>" }
    }
  }
}
TerminalLoad a Stigg 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 Stigg CSV export — creates a table AND a model
mb upload csv --file stigg-subscriptions.csv --collection root

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

The Metabase CLI stores its credentials securely after mb auth login.

Verify before shipping: confirm an uploads database is enabled under Admin → Settings → Uploads (Metabase docs) and the current Stigg MCP setup in the Stigg docs. Use a read-focused server API key for analysis work.

Can you generate a Stigg dashboard with AI?

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

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

Goal: Help product and monetization leaders understand plan adoption, packaging,
entitlement usage, upgrades/downgrades, and paywall conversion from Stigg data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Stigg tables and
  models). If durable Stigg 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 Stigg MCP server using a server API key:
  customers, subscriptions, plans, add-ons, features, entitlements, and usage
  measurements. 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: Customers, Subscriptions, Plans, Add-ons,
Features, Entitlements, and Usage measurements. If billing amounts live in a
separate billing provider table (e.g. Stripe), join to it for revenue. Inspect
the actual tables and column names first.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Stigg — it reads a database or CLI-uploaded tables.
- Compute MRR by plan from active subscriptions and plan prices, normalized to a
  monthly amount; if hard revenue lives in the billing provider, prefer that and
  say so.
- Show entitlement usage against its limit, not raw usage alone.
- Separate metered (usage-based) features from boolean/config entitlements.
- Only build a card if its underlying column/metric exists in the data.
- A single CSV is a point-in-time snapshot: plan migrations and cohorts need
  history, so build trend cards only if a warehouse sync or multiple uploads
  provide it.

Dashboard title: Stigg Monetization Overview

Sections:
1. Executive summary (KPI cards): Active subscriptions; MRR; Net new MRR; Upgrade
   rate; Free/trial-to-paid conversion; Customers near a usage limit.
2. Plans & packaging: Subscriptions and MRR by plan and add-on; Plan mix over
   time; Add-on attach rate.
3. Entitlement usage: Usage vs. limit by feature; Customers approaching a limit;
   Metered consumption over time.
4. Upgrades & downgrades: Migration paths; Expansion MRR; Time-on-plan before
   upgrade.
5. Paywalls & conversion: Trial/free-to-paid conversion; Paywall conversion by
   plan; Feature-gate hits that led to upgrades.

Filters: Plan, Add-on, Feature, Billing period, Date range.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_stigg_subscriptions,
modeled_stigg_entitlement_usage, and modeled_stigg_mrr (a monthly
per-subscription MRR model by plan).

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 Stigg → Metabase pipeline?

For dashboards that need history and reliability, land Stigg 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

  • Stigg API (free, raw) — pull customers, subscriptions, plans, and entitlements into your own pipeline.
  • Webhooks (free, events) — stream subscription and entitlement events into a table for near-real-time dashboards.
  • Your billing provider — Stigg drives billing through a provider like Stripe; sync that for hard revenue and join on the customer/subscription id.

Notes

  • Land raw tables first, then build clean models on top.
  • Keep a stable customer id that maps across Stigg and your billing provider.
  • Distinguish metered (usage) entitlements from boolean/config ones — they chart differently.
  • MRR by plan is derived from active subscriptions and plan prices.

How should you model Stigg data in Metabase?

Core tables

ConceptGrainKey columns
customersone row per customercustomer_id, created_at, billing_id
subscriptionsone row per subscriptionid, customer_id, plan_id, status, started_at, canceled_at
plansone row per planid, name, price, billing_period
entitlementsone row per grantid, customer_id, feature_id, usage_limit, reset_period
featuresone row per featureid, name, type (boolean/metered/config)
usage_measurementsevents / current usagecustomer_id, feature_id, value, measured_at

Modeling advice

  • Build a modeled_stigg_mrr table by plan — one row per subscription per month with a normalized monthly amount.
  • Model entitlement usage as usage-vs-limit so "80% of limit" is a first-class column.
  • Track plan changes as an event stream so upgrade/downgrade paths are queryable.
  • Join to your billing provider on a shared customer id when you need audited revenue.
  • Reconcile MRR by plan against your billing provider's totals.

Which Stigg metrics should you track in Metabase?

MetricDefinitionNotes
MRR by planActive subscriptions' normalized monthly amount per plan.Reconcile with the billing provider.
Add-on attach rateSubscriptions with an add-on ÷ total on the plan.Signals packaging fit.
Entitlement utilizationUsage ÷ limit for a feature.High utilization = upgrade signal.
Upgrade rateUpgrades ÷ active subscriptions.Pair with downgrade rate.
Paywall conversionPaid conversions ÷ paywall/trial starts.Segment by plan and gate.
Expansion MRRMRR added from upgrades and add-ons.Feeds net revenue retention.

What SQL powers Stigg dashboards in Metabase?

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

MRR and active subscriptions by planPostgreSQL

Plan adoption and the revenue behind it.

-- Requires a monthly MRR model built from Stigg subscriptions + plan prices
SELECT
  plan_name,
  COUNT(*)                 AS active_subscriptions,
  ROUND(SUM(mrr), 2)       AS mrr,
  ROUND(SUM(mrr) * 12, 2)  AS arr
FROM modeled_stigg_mrr
WHERE month = date_trunc('month', CURRENT_DATE)
GROUP BY plan_name
ORDER BY mrr DESC;
Customers approaching a usage limitPostgreSQL

Metered entitlements at 80%+ of their limit — upgrade candidates.

-- Customers close to hitting a metered entitlement limit
SELECT
  c.customer_id,
  f.feature_name,
  e.usage_limit,
  u.current_usage,
  ROUND(100.0 * u.current_usage / NULLIF(e.usage_limit, 0), 1) AS pct_of_limit
FROM entitlement_usage u
JOIN entitlements e ON e.id = u.entitlement_id
JOIN features f     ON f.id = e.feature_id
JOIN customers c    ON c.customer_id = u.customer_id
WHERE e.usage_limit IS NOT NULL
  AND u.current_usage >= 0.8 * e.usage_limit
ORDER BY pct_of_limit DESC;
Upgrades and downgrades by monthPostgreSQL

Plan-change direction over the last year.

SELECT
  date_trunc('month', changed_at) AS month,
  COUNT(*) FILTER (WHERE change_type = 'upgrade')   AS upgrades,
  COUNT(*) FILTER (WHERE change_type = 'downgrade') AS downgrades
FROM subscription_changes
WHERE changed_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1
ORDER BY 1;

What are common mistakes when analyzing Stigg in Metabase?

Treating a live MCP lookup or a one-off CSV as governed monetization reporting.→ Use the Stigg MCP and CSV uploads for lookups and triage; build warehouse-backed Metabase dashboards for anything the team depends on.
Reading usage without its limit.→ Raw usage is noise — chart usage against the entitlement limit so "near cap" is obvious.
Assuming Stigg holds hard revenue.→ Stigg governs packaging and entitlements; audited revenue usually lives in your billing provider — join it.
Ignoring plan-change history.→ Model plan changes as events, or you can't see upgrade/downgrade paths.
Mixing metered and boolean features.→ They mean different things — separate usage-based entitlements from on/off ones.

Related analytics

Related metrics

Related integrations

FAQ

Does Metabase connect natively to Stigg?
No. Metabase reads SQL databases and warehouses. Sync Stigg into a database first (its API and webhooks), then connect Metabase to that database.
How do I quickly analyze Stigg data without a warehouse?
Pull the objects you need with the Stigg MCP server (use a server API key), 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.
Where does revenue come from — Stigg or my billing provider?
Stigg governs plans, packaging, and entitlements and can compute plan-based MRR, but audited revenue usually lives in your billing provider (e.g. Stripe). Join both on a shared customer id and reconcile.
How do I find upsell candidates?
Model entitlement usage against its limit. Customers consistently near a metered cap are prime upgrade candidates — surface them in a table with their plan and current usage.