Findymail × Metabase

How to build Findymail deliverability dashboards in Metabase

Findymail is where your email finding and verification run — searches, found contacts, and deliverability checks. Metabase is where you turn that into shared dashboards on match rate,verification quality, and credit cost. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Findymail 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.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Findymail connector. For dashboards that need history and reliability, sync Findymail into a database first (covered below).

How do you connect Findymail to Metabase?

Most teams combine both routes: use the Findymail 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.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair Findymail's managed MCP server (Gumloop, to look up finds and verification status) 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 "what share of this list verified clean?"
  • Loading a Findymail CSV export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed reporting
  • The managed connector acts with your Findymail account's permissions and credits — scope it tightly
  • CSV uploads are snapshots — refresh or move to the warehouse for history
2 · Warehouse route (durable reporting)

Durable dashboards with history

Sync Findymail into a database or warehouse with the Findymail API, exports, or a connector, then point Metabase at it.

Best for
  • Match-rate and deliverability dashboards the whole team relies on
  • Verification and credit trends over time
  • Joining found contacts with outbound outcomes and CRM pipeline
Trade-offs
  • 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 Findymail data in Metabase?

  • Match rate — emails found as a share of searches, by search type
  • Verification quality — valid, risky, invalid, and catch-all share
  • Deliverability — safe-to-send share by list
  • Credit usage — credits by week and per usable contact
  • List quality — usable contacts added and duplicates vs. CRM
  • ICP fit — share of finds that match your target profile

Which Findymail dashboards should you build in Metabase?

For: RevOps

Match rate

How often a search resolves an email.

  • Match rate by search type (bar)
  • Found vs. not found by week (line)
  • Match rate by domain size (bar)
  • Searches with no result (table)
For: Deliverability

Verification

Whether found emails are safe to send.

  • Valid vs. risky vs. invalid (donut)
  • Safe-to-send share by list (bar)
  • Catch-all rate (number)
  • Verification failures over time (line)
For: Finance / ops

Credits

What lead finding costs.

  • Credits used by week (line)
  • Credits per usable contact (number)
  • Wasted credits on unverified finds (number)
  • Credits by search type (bar)
For: Sales leaders

List quality

Whether the output is usable.

  • Usable contacts added by week (line)
  • Duplicate rate vs. CRM (number)
  • ICP-fit share of finds (number)
  • List readiness for sending (number)

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

Pair the Findymail MCP server with the Metabase CLI for fast, hands-on analysis. Findymail connects through a managed MCP server (Gumloop) that looks up finds 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 Findymail MCP what share of a new list verified clean.
  • Export the found contacts and verification results you want to keep as a CSV.
  • 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

  • The Findymail 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 replace or move to the warehouse for real history.
  • The managed connector acts with the connected Findymail account's permissions and consumes credits — scope it tightly.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

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

Findymail MCPmanaged

Provider
Gumloop (managed connector)
Endpoint
Gumloop-generated server URL
Auth
Connect your Findymail account in Gumloop (API key)
Note
No official first-party Findymail 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)
Cursor~/.cursor/mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "findymail": {
      "url": "https://your-gumloop-server-url/mcp"
    }
  }
}
TerminalLoad a Findymail 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 Findymail CSV export — creates a table AND a model
mb upload csv --file findymail-contacts.csv --collection root

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

Findymail doesn't publish a first-party MCP server, so the practical path is a managed connector: connect your account in Gumloop, then use its generated MCP URL. Because a third party brokers access, scope the connection tightly. 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 Findymail connector setup in Gumloop's Findymail MCP page.

Can you generate a Findymail dashboard with AI?

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

Prompt for creating a Findymail Deliverability Overview dashboard
Create a polished Metabase dashboard for Findymail 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, verification
quality, credit usage, and list quality from Findymail data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Findymail tables and
  models). If durable Findymail 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 Findymail MCP server: searches (finder
  requests), found contacts, verifications (valid/risky/invalid/catch-all),
  lists, 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:
Findymail CSV exports are usually flat (one row per found contact, with an email,
verification status, and credits used). 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
  Findymail — it reads a database or CLI-uploaded tables.
- Define match rate as found ÷ searched, and verified/safe-to-send share as
  valid ÷ verified — keep them distinct.
- Treat catch-all separately from valid; it is not a guarantee of deliverability.
- 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: Findymail Deliverability Overview

Sections:
1. Executive summary (KPI cards): Match rate; Valid email share; Catch-all rate;
   Credits used; Credits per usable contact; Usable contacts added.
2. Match rate: By search type; found vs. not found; by domain size.
3. Verification: Valid vs. risky vs. invalid; safe-to-send by list; catch-all.
4. Credits: By week; per usable contact; wasted credits.
5. List quality: Usable contacts added; duplicates vs. CRM; ICP fit.

Filters: Search type, List, Date range.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse)
create reusable models: modeled_findymail_searches, modeled_findymail_contacts,
modeled_findymail_verifications, and modeled_findymail_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
Findymail's own usage views. Keep it practical, dense, and executive-readable.

How do you sync Findymail data into a database or warehouse?

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

Connector options

  • Findymail API (raw) — pull searches, found contacts, verification results, lists, and credit usage.
  • dlt (code) — write a Python pipeline against the Findymail API for incremental loads.
  • Exports — scheduled list 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 verification status distinct (valid/risky/invalid/catch-all).
  • Snapshot credit usage over time so cost trends are possible.

How should you model Findymail data in Metabase?

Core tables

TableGrainKey columns
searchesone row per searchid, search_type, found, searched_at
contactsone row per found contactid, list_name, email, domain, created_at
verificationsone row per verificationcontact_id, status (valid/risky/invalid/catch_all),verified_at
credit_eventsone row per credit chargecontact_id, credits, used_at

Modeling advice

  • Keep match rate (found ÷ searched) and verified share (valid ÷ verified) as distinct metrics.
  • Treat catch-all separately — it's not a deliverability guarantee.
  • Model credit_events so cost per usable contact is easy to compute.
  • Join to your CRM to measure duplicate rate and downstream use.

Which Findymail metrics should you track in Metabase?

MetricDefinitionNotes
Match rateFound ÷ searched.Segment by search type and domain size.
Valid email shareValid ÷ verified.Drives deliverability downstream.
Catch-all rateCatch-all ÷ verified.Not a guarantee of deliverability.
Credits per usable contactCredits used ÷ valid contacts.An efficiency signal, not a target.
Duplicate rateFinds matching an existing CRM contact.Keeps quality honest.
Usable contacts addedValid new contacts per period.Read with match rate, not alone.

What SQL powers Findymail dashboards in Metabase?

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

Match rate by search typePostgreSQL

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_findymail_searches s
WHERE s.searched_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY s.search_type
ORDER BY searches DESC;
Verification breakdown by listPostgreSQL

Valid, catch-all, and invalid share per list.

-- Verification breakdown by list
SELECT
  c.list_name,
  COUNT(*)                                              AS emails,
  ROUND(100.0 * COUNT(*) FILTER (WHERE v.status = 'valid')
    / NULLIF(COUNT(*), 0), 1)                           AS valid_pct,
  ROUND(100.0 * COUNT(*) FILTER (WHERE v.status = 'catch_all')
    / NULLIF(COUNT(*), 0), 1)                           AS catch_all_pct,
  ROUND(100.0 * COUNT(*) FILTER (WHERE v.status = 'invalid')
    / NULLIF(COUNT(*), 0), 1)                           AS invalid_pct
FROM modeled_findymail_contacts c
JOIN modeled_findymail_verifications v ON v.contact_id = c.id
GROUP BY c.list_name
ORDER BY emails DESC;
Credits per usable contactPostgreSQL

Cost efficiency by week, using valid emails as the usable base.

-- Credits per usable contact by week
SELECT
  date_trunc('week', e.used_at) AS week,
  SUM(e.credits)                AS credits_used,
  COUNT(DISTINCT c.id) FILTER (WHERE v.status = 'valid') AS usable_contacts,
  ROUND(SUM(e.credits)::numeric
    / NULLIF(COUNT(DISTINCT c.id) FILTER (WHERE v.status = 'valid'), 0), 2)
    AS credits_per_usable_contact
FROM modeled_findymail_credit_events e
LEFT JOIN modeled_findymail_contacts c      ON c.id = e.contact_id
LEFT JOIN modeled_findymail_verifications v ON v.contact_id = c.id
GROUP BY 1
ORDER BY 1;

What are common mistakes when analyzing Findymail in Metabase?

Treating a found email as a deliverable one.→ Keep verification status — a found email can still be invalid or risky.
Counting catch-all as valid.→ Catch-all domains accept anything; report them separately from valid.
Reporting credits without a denominator.→ Credits used alone is meaningless; show cost per usable contact.
Ignoring duplicates against the CRM.→ Overlapping contacts inflate list growth and coverage; de-duplicate before reporting.
Trending rates without run history.→ If searches and verifications aren't captured over time, show a snapshot with a caveat rather than a misleading trend.

Related analytics

Related metrics

Related integrations

FAQ

Does Metabase connect natively to Findymail?
No. Metabase reads databases and warehouses. Sync Findymail into a database first (the Findymail API, dlt, or exports), then connect Metabase to that database.
Is there an official Findymail MCP server?
Not a first-party one. The practical path is a managed connector such as Gumloop: connect your account, then use its generated MCP URL. Use MCP for live lookups, not governed reporting.
How do I quickly load Findymail data without a warehouse?
Export a CSV from Findymail 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 warehouse route when you need history.
What's the difference between match rate and valid rate?
Match rate is how often a search resolves an email at all (found ÷ searched). Valid rate is how many of those emails pass verification (valid ÷ verified). A high match rate with a low valid rate still means a risky list.