Tally × Metabase

How to build Tally dashboards in Metabase

Tally is a free-first form builder popular with startups for surveys, waitlists, and feedback forms. 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 Tally MCP server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that syncs Tally 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 Tally 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 Tally.

How do you connect Tally 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 Tally 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 survey performance and completion"
  • Loading a Tally 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 Tally data into a database or warehouse with a connector, native export, or API pipeline, then point Metabase at it.

Best for
  • Tally reporting that product leadership depends on
  • Joining Tally data with CRM, support, product analytics, or revenue data
  • Long-run trends for survey performance and completion and submission volume by form
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 Tally data in Metabase?

  • Survey performance and completion — built from form submissions and the related forms and fields, answers, respondent metadata data your sync exposes.
  • Submission volume by form — built from form submissions and the related forms and fields, answers, respondent metadata data your sync exposes.
  • Drop-off by question — built from form submissions and the related forms and fields, answers, respondent metadata data your sync exposes.
  • Feedback themes from open text — built from form submissions and the related forms and fields, answers, respondent metadata data your sync exposes.
  • Waitlist and signup form conversion — built from form submissions and the related forms and fields, answers, respondent metadata data your sync exposes.

Which Tally dashboards should you build in Metabase?

For: Research, product ops

Survey performance

Whether surveys reach people and get finished.

  • Responses per survey per week (line)
  • Response rate by channel (bar)
  • Completion rate by survey (bar)
  • Median time to complete (number)
For: PMs, CX leads

NPS and CSAT program

The headline experience scores, trended honestly.

  • NPS trend by month (line)
  • Promoters, passives, detractors (stacked bar)
  • CSAT by touchpoint (bar)
  • Response volume behind each score (line)
For: Research

Question health

Where respondents drop off or answer poorly.

  • Drop-off by question position (bar)
  • Skip rate by question (table)
  • Open-text answer rate (line)
  • Suspiciously fast completions (table)
For: Leadership

Segment insight

How scores differ across the customers you care about.

  • NPS by plan or segment (bar)
  • Score by customer tenure cohort (line)
  • Verbatim theme counts by segment (table)
  • Survey coverage of active customers (number)

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

Pair the Tally 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 response-level exports for one survey, with started and submitted timestamps and completion status.
  • 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.
  • Invitation or view counts alongside responses are required for true response and completion rates.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

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

Tally MCP serverofficial

Transport
Hosted remote MCP via Streamable HTTP (beta)
Auth
OAuth through Tally, or a Bearer API key
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": {
    "tally": {
      "url": "https://api.tally.so/mcp"
    }
  }
}

The server is in beta but available on every plan, including free — unusual among survey tools. This is Tally the form builder (tally.so), not the Tally ERP accounting product. Endpoint verified July 2026.

TerminalLoad a Tally 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 form-submissions export — creates a table AND a model
mb upload csv --file tally-form-submissions.csv --collection root

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

Can you generate a Tally dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Tally MCP server and the Metabase CLI. It works end to end: if Tally 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 Tally Survey Overview dashboard
Create a polished Metabase dashboard for Tally survey analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help product teams understand response and completion rates, NPS and CSAT trends, question health, and segment differences from Tally data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for tally tables and
  models). If durable Tally 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 Tally MCP server:
  form submissions, plus forms and fields, answers, respondent metadata.
  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
  Tally — 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: Tally Survey Overview

Sections:
1. Executive summary: Responses last 30 days; Response rate; Completion
   rate; Current NPS; Current CSAT.
2. Performance: Responses by survey and week; response rate by channel.
3. Scores: NPS and CSAT trends with response volume; promoter/passive/
   detractor distribution; scores by segment.
4. Question health: Drop-off by question position; skip rates.
5. Verbatims: Open-text volume and themes where categorized.

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

For dashboards that need history and reliability, land Tally 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 Tally API for control over objects, fields, and refresh cadence.
  • MCP + CSV — use this for quick exploration and one-off slices.

No managed connector exists — script the Tally API for forms and submissions on a schedule, or use MCP + CSV for lightweight recurring pulls; volumes are usually small enough that a simple script covers it.

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 survey, question, respondent segment, channel, started-at, and submitted-at fields.

How should you model Tally data in Metabase?

Core tables

TableGrainKey columns
survey_responsesone row per submissionid, form_id, started_at, submitted_at, completed, source
survey_answersone row per answerresponse_id, field_id, field_label, answer_type, answer_value
tally_formsone row per formid, name, field_count, created_at, is_closed

Modeling advice

  • Build a clean survey_responses 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 Tally metrics should you track in Metabase?

MetricDefinitionNotes
Survey response rateResponses divided by invitations, opens, or views.Pin the denominator once — sends, opens, and views differ.
Survey completion rateCompleted responses divided by started responses.Falls fast with length; segment by question count.
Net Promoter ScorePercent promoters minus percent detractors on the 0-10 scale.Always report response volume next to the score.
CSATSatisfied responses over all satisfaction responses.Define the satisfied threshold once (usually 4-5 of 5).

What SQL powers Tally dashboards in Metabase?

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

NPS trend by monthPostgreSQL

Promoters minus detractors, with response volume.

SELECT
  date_trunc('month', submitted_at) AS month,
  COUNT(*) AS responses,
  ROUND(
    100.0 * (
      COUNT(*) FILTER (WHERE score >= 9)
      - COUNT(*) FILTER (WHERE score <= 6)
    ) / NULLIF(COUNT(*), 0), 1
  ) AS nps
FROM nps_responses
GROUP BY 1
ORDER BY 1;
Response and completion rate by surveyPostgreSQL

Reach and finish rates side by side.

SELECT
  s.name AS survey,
  s.invited_count,
  COUNT(r.id) AS responses,
  ROUND(
    100.0 * COUNT(r.id) / NULLIF(s.invited_count, 0), 1
  ) AS response_rate,
  ROUND(
    100.0 * COUNT(r.id) FILTER (WHERE r.completed)
    / NULLIF(COUNT(r.id), 0), 1
  ) AS completion_rate
FROM surveys s
LEFT JOIN survey_responses r ON r.survey_id = s.id
GROUP BY s.name, s.invited_count
ORDER BY response_rate DESC;
Answer rate by question positionPostgreSQL

Where respondents drop off inside a survey.

SELECT
  a.question_position,
  a.question_title,
  COUNT(DISTINCT a.response_id) AS answered,
  ROUND(
    100.0 * COUNT(DISTINCT a.response_id)
    / NULLIF(MAX(t.total_responses), 0), 1
  ) AS answer_rate
FROM survey_answers a
CROSS JOIN (
  SELECT COUNT(*) AS total_responses
  FROM survey_responses
  WHERE survey_id = {{survey_id}}
) t
WHERE a.survey_id = {{survey_id}}
GROUP BY a.question_position, a.question_title
ORDER BY a.question_position;

What are common mistakes when analyzing Tally in Metabase?

Syncing raw event or session streams into the warehouse.→ Land entities, votes, responses, and daily rollups. Raw streams belong in Tally; the warehouse is for trends and joins.
Reporting NPS without response volume.→ A score swing on a handful of responses is noise. Chart volume next to the score, and hold judgment below a minimum sample.
Comparing response rates with different denominators.→ Responses over sends, opens, and views are three different metrics. Pick one denominator per program and label it on the card.
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 Tally?
No. Metabase reads databases and warehouses. Sync Tally data into a database first, or upload a CSV with the Metabase CLI, then build Metabase models and dashboards on top.
Should Metabase replace Tally?
No — they answer different questions. Tally 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.
Can I compute NPS in Metabase from raw responses?
Yes. Land response-grain data with the 0-10 score, then compute percent promoters (9-10) minus percent detractors (0-6) — see the NPS metric guide for the SQL. Always chart response volume next to the score: a jump on 12 responses is noise, not signal.
How do I combine surveys from multiple tools?
Normalize everything into shared survey_responses and survey_answers models with consistent survey, question, segment, and timestamp fields. Keep tool-specific extras in extension tables so cross-tool response and completion rates stay comparable.