How to build Tomba deliverability dashboards in Metabase
Tomba is where your email finding and verification run — searches, found emails with confidence scores and sources, and deliverability checks. Metabase is where you turn that into shared dashboards on match rate,confidence, and deliverability. This guide covers two complementary paths: a lightweight MCP + CLI routethat pulls live data with the Tomba MCP server and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable warehouse route for reporting people depend on.
How do you connect Tomba to Metabase?
Most teams combine both routes: use the Tomba MCP server and Metabase CLI route to pull live data and stand up a quick analysis, and the warehouse route for the deliverability dashboards the team depends on.
Live data in, quick analysis out
Pair Tomba's managed MCP server (Pipedream, to look up finds, sources, and verification status) with the Metabase CLI, whose upload command loads a CSV into Metabase as a ready-to-query table and model.
- Quick lookups like "what confidence score did these finds get?"
- Loading a Tomba CSV export into Metabase in seconds
- Spot-checks and one-off analyses without a warehouse
- Great for exploration, not governed reporting
- The managed connector acts with your Tomba account's permissions and credits — scope it tightly
- CSV uploads are snapshots — refresh or move to the warehouse for history
Durable dashboards with history
Sync Tomba into a database or warehouse with the Tomba API, exports, or a connector, then point Metabase at it.
- Match-rate, confidence, and deliverability dashboards the whole team relies on
- Verification and credit trends over time
- Joining found contacts with outbound outcomes and CRM pipeline
- Requires a destination database and a sync to maintain
- You own the match and verified definitions and the refresh schedule
- Snapshot runs over time if you want credit and quality trends
What can you analyze from Tomba data in Metabase?
- Match rate — emails found as a share of searches, by search type
- Confidence — score distribution and deliverability by band
- Verification quality — deliverable, risky, undeliverable, and catch-all share
- Credit usage — credits by week and per usable contact
- List quality — usable contacts added and duplicates vs. CRM
- Source coverage — how many public sources back each find
Which Tomba dashboards should you build in Metabase?
Match rate
How often a search resolves an email.
- Match rate by search type (bar)
- Found vs. not found by week (line)
- Confidence-score distribution (histogram)
- Searches with no result (table)
Verification
Whether found emails are safe to send.
- Deliverable vs. risky vs. undeliverable (donut)
- MX and SMTP check pass rate (number)
- Catch-all / webmail rate (number)
- Verification failures over time (line)
Credits
What lead finding costs.
- Credits used by week (line)
- Credits per usable contact (number)
- Wasted credits on low-confidence finds (number)
- Credits by search type (bar)
List quality
Whether the output is usable.
- Usable contacts added by week (line)
- High-confidence share of finds (number)
- Duplicate rate vs. CRM (number)
- List readiness for sending (number)
How do you use the Tomba MCP server with the Metabase CLI?
Pair the Tomba MCP server with the Metabase CLI for fast, hands-on analysis. Tomba connects through a managed MCP server (Pipedream) that looks up finds, sources, and verification status; the Metabase CLI's upload command loads a CSV into Metabase and creates a ready-to-query table and model.
Example workflow
- Ask the Tomba MCP what confidence scores a batch of finds received.
- Export the found emails and verification results you want to keep as a CSV.
- 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
- The Tomba MCP is great for live lookups — not for scheduled or audited deliverability reporting.
- A CSV upload is a point-in-time snapshot; refresh it with
mb upload replaceor move to the warehouse for real history. - The managed connector acts with the connected Tomba account's permissions and consumes credits — scope it tightly.
mb upload csvneeds an uploads database configured under Admin → Settings → Uploads.
How do you set up the Tomba MCP server and the Metabase CLI?
Tomba MCPmanaged
- Provider
- Pipedream (managed connector)
- Endpoint
https://mcp.pipedream.net/v2- Auth
- Connect your Tomba account in Pipedream
- Note
- No official first-party Tomba MCP server yet
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)
{
"mcpServers": {
"tomba": {
"url": "https://mcp.pipedream.net/v2"
}
}
}# 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 Tomba CSV export — creates a table AND a model
mb upload csv --file tomba-emails.csv --collection root
# Refresh that same table later from a new export
mb upload replace <table-id> --file tomba-emails.csvTomba doesn't publish a first-party MCP server, so the practical path is a managed connector: connect your account in Pipedream, then use its static MCP URL. Because a third party brokers access, scope the connection tightly. The Metabase CLI stores its credentials securely after mb auth login.
Can you generate a Tomba dashboard with AI?
Yes. Use the prompt below with any assistant that can run the Tomba MCP server and the Metabase CLI. It works end to end: if Tomba tables already exist in Metabase it analyzes those; otherwise it pulls the data over the Tomba MCP, loads it with mb upload csv, then builds the dashboard — treating confidence as a quality band and skipping cards it has no data for.
Create a polished Metabase dashboard for Tomba lead-finding analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.
Goal: Help RevOps and deliverability teams understand match rate, confidence,
verification quality, credit usage, and list quality from Tomba data.
Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Tomba tables and
models). If durable Tomba 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 Tomba MCP server: searches (finder
requests), found emails (with confidence score and sources), verifications
(deliverable/risky/undeliverable, MX/SMTP checks, catch-all), and credit/usage
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:
Tomba CSV exports are usually flat (one row per found email, with a confidence
score, source count, and verification status). Warehouse tables are rawer, often
with a separate searches table and a per-verification row. Inspect the actual
tables and column names first; do not assume exact names or that a searches table
exists.
Important:
- Build on whatever data is present; don't claim Metabase connects natively to
Tomba — it reads a database or CLI-uploaded tables.
- Define match rate as found ÷ searched, and deliverable share as deliverable ÷
verified — keep them distinct.
- Use the confidence score as a quality band, not a guarantee, and treat
catch-all separately from deliverable.
- Report credits with a denominator (per usable contact) visible.
- Only build a card if its underlying column/metric exists 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: Tomba Deliverability Overview
Sections:
1. Executive summary (KPI cards): Match rate; Deliverable share; High-confidence
share; Credits used; Credits per usable contact; Usable contacts added.
2. Match rate: By search type; found vs. not found; confidence distribution.
3. Verification: Deliverable vs. risky vs. undeliverable; MX/SMTP pass; catch-all.
4. Credits: By week; per usable contact; wasted credits.
5. List quality: Usable contacts added; duplicates vs. CRM; high-confidence share.
Filters: Search type, Confidence band, Date range.
Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_tomba_searches, modeled_tomba_emails,
modeled_tomba_verifications, and modeled_tomba_credit_events.
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. Reconcile totals against
Tomba's own usage views. Keep it practical, dense, and executive-readable.How do you sync Tomba data into a database or warehouse?
For dashboards that need history and reliability, land Tomba data in a database first, then connect Metabase to that database.
Connector options
- Tomba API (raw) — pull searches, found emails (with confidence and sources), verification results, and credit usage.
- dlt (code) — write a Python pipeline against the Tomba API for incremental loads.
- Exports — scheduled exports can land the core objects on a cadence.
Notes
- Land raw tables first, then build clean models on top.
- Keep the search outcome (found/not found) so match rate is honest.
- Keep the confidence score and verification statusdistinct.
- Snapshot credit usage over time so cost trends are possible.
How should you model Tomba data in Metabase?
Core tables
| Table | Grain | Key columns |
|---|---|---|
searches | one row per search | id, search_type, found, searched_at |
emails | one row per found email | id, domain, confidence, sources_count, created_at |
verifications | one row per verification | email_id, status (deliverable/risky/undeliverable),mx_check, smtp_check, verified_at |
credit_events | one row per credit charge | email_id, credits, used_at |
Modeling advice
- Keep match rate (found ÷ searched) and deliverable share (deliverable ÷ verified) as distinct metrics.
- Band the confidence score for readable quality analysis.
- Treat catch-all separately — it's not a deliverability guarantee.
- Model
credit_eventsso cost per usable contact is easy to compute.
Which Tomba metrics should you track in Metabase?
| Metric | Definition | Notes |
|---|---|---|
| Match rate | Found ÷ searched. | Segment by search type. |
| Deliverable share | Deliverable ÷ verified. | Drives deliverability downstream. |
| High-confidence share | Confidence ≥ 90 ÷ found. | A quality band, not a guarantee. |
| Credits per usable contact | Credits used ÷ deliverable contacts. | An efficiency signal, not a target. |
| Duplicate rate | Finds matching an existing CRM contact. | Keeps quality honest. |
| Usable contacts added | Deliverable new contacts per period. | Read with match rate, not alone. |
What SQL powers Tomba dashboards in Metabase?
These assume the modeled tables above (PostgreSQL dialect). Adjust identifiers to match your warehouse.
Found as a share of searches over the last 90 days.
-- Match rate by search type over the last 90 days
SELECT
s.search_type,
COUNT(*) AS searches,
COUNT(*) FILTER (WHERE s.found) AS found,
ROUND(100.0 * COUNT(*) FILTER (WHERE s.found)
/ NULLIF(COUNT(*), 0), 1) AS match_rate_pct
FROM modeled_tomba_searches s
WHERE s.searched_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY s.search_type
ORDER BY searches DESC;Deliverable share across high, medium, and low confidence finds.
-- Deliverability by confidence band
SELECT
CASE
WHEN e.confidence >= 90 THEN 'high (90+)'
WHEN e.confidence >= 70 THEN 'medium (70-89)'
ELSE 'low (<70)'
END AS confidence_band,
COUNT(*) AS emails,
ROUND(100.0 * COUNT(*) FILTER (WHERE v.status = 'deliverable')
/ NULLIF(COUNT(*), 0), 1) AS deliverable_pct
FROM modeled_tomba_emails e
JOIN modeled_tomba_verifications v ON v.email_id = e.id
GROUP BY confidence_band
ORDER BY confidence_band;Cost efficiency by week, using deliverable emails as the usable base.
-- Credits per usable contact by week
SELECT
date_trunc('week', c.used_at) AS week,
SUM(c.credits) AS credits_used,
COUNT(DISTINCT e.id) FILTER (WHERE v.status = 'deliverable') AS usable_contacts,
ROUND(SUM(c.credits)::numeric
/ NULLIF(COUNT(DISTINCT e.id) FILTER (WHERE v.status = 'deliverable'), 0), 2)
AS credits_per_usable_contact
FROM modeled_tomba_credit_events c
LEFT JOIN modeled_tomba_emails e ON e.id = c.email_id
LEFT JOIN modeled_tomba_verifications v ON v.email_id = e.id
GROUP BY 1
ORDER BY 1;