Metric · Marketing

What are net new leads, and how do you measure them in Metabase?

Net new leads is the count of genuinely new leads created in a period — leads created minus duplicates, junk, and disqualified records. It's the honest version of top-of-funnel volume: the number that should agree with cost per lead and hold up when sales audits it. Measure it in Metabase from CRM data synced from HubSpot, Salesforce, or Pipedrive.

TL;DRcreated − merged − disqualified, per month and source, with the dedup rule (email vs. person vs. account) written into one SQL model. The subtraction is the metric: without it you're counting CRM records, not demand.

What does a net new leads chart look like in Metabase?

Chart net new leads — created minus merged and disqualified — per month as bars, and trust the growth because the junk is already subtracted. A one-month drop like Feb 2026's often traces to a dedup cleanup or a paused campaign rather than shrinking demand, so check the merge counts before sounding the alarm.

Net new leads in Metabase: a bar chart of deduplicated new leads per month.
Net new leads as a Metabase card, built from CRM lead data. Figures are illustrative.

What net new leads measures

It measures how many new potential buyers actually entered the funnel. That makes it the volume input for everything downstream — conversion rates need a trustworthy denominator, capacity plans need a real inflow number, and channel comparisons need each source's count cleaned the same way. It also keeps marketing honest with itself: a list import or a viral junk-form day inflates leads created and leaves net new leads unmoved, which is exactly the point.

What counts as net new

Three rules define the metric, and all three belong in a versioned SQL model rather than in each analyst's head. First, the dedup level: same email, same person, or same account — each stricter level yields a smaller, more sales-shaped number. Second, the exclusion list: merged duplicates, spam and test submissions, competitors, and out-of-ICP records marked disqualified. Third, the timing convention: count the lead in its creation month regardless of when it's later merged or disqualified, or accept that history restates as hygiene catches up — either works, but the dashboard must say which. Teams that skip this step get a trend line that quietly shrinks backward every time someone cleans the CRM.

What data does it need?

  • A CRM leads table with created_at, source, status, and a merge pointer like merged_into_id — HubSpot, Salesforce, and Pipedrive all expose these through their standard sync schemas.
  • A meetings or activities table keyed by lead for follow-through analysis.
  • A fixed source-attribution rule, so "organic" and "paid" mean the same thing in every month of the trend.

SQL patterns

Monthly net new leads by source PostgreSQL
SELECT
  date_trunc('month', created_at) AS month,
  source,
  COUNT(*) AS leads_created,
  COUNT(*) FILTER (WHERE merged_into_id IS NOT NULL) AS duplicates,
  COUNT(*) FILTER (WHERE status = 'disqualified') AS disqualified,
  COUNT(*) FILTER (
    WHERE merged_into_id IS NULL
      AND status <> 'disqualified'
  ) AS net_new_leads
FROM leads
WHERE created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1, 2
ORDER BY 1, 2;
Lead-to-meeting follow-through by cohort PostgreSQL
WITH net_new AS (
  SELECT
    id,
    date_trunc('month', created_at) AS cohort_month
  FROM leads
  WHERE merged_into_id IS NULL
    AND status <> 'disqualified'
    AND created_at >= CURRENT_DATE - INTERVAL '12 months'
),
met AS (
  SELECT DISTINCT lead_id
  FROM meetings
  WHERE status = 'held'
)
SELECT
  n.cohort_month,
  COUNT(*) AS net_new_leads,
  COUNT(m.lead_id) AS leads_with_meeting,
  ROUND(
    100.0 * COUNT(m.lead_id) / NULLIF(COUNT(*), 0), 1
  ) AS lead_to_meeting_pct
FROM net_new n
LEFT JOIN met m ON m.lead_id = n.id
GROUP BY 1
ORDER BY 1;

Pitfalls

Counting CRM records instead of leads. → List imports, duplicate form fills, and bot submissions all create records. Subtract merges and junk in the model, or the metric rewards whoever uploads the biggest CSV.
Letting an MQL threshold change break the trend. → Rescoring reclassifies history. Keep raw net new leads as a stable series, report MQLs separately, and annotate any threshold change on the chart.
Inconsistent source attribution. → If paid leads get first-touch attribution and organic gets last-touch, the by-source split is fiction. One attribution rule, applied to every channel, dated when it changes.
Reporting volume without follow-through. → A source can deliver rising net new leads that never book a meeting. Pair the volume chart with lead-to-meeting conversion by cohort so quality decay shows up next to the growth it hides behind.

Where this metric applies

Metrics

Dashboards

FAQ

Net new leads vs. total leads created — why subtract anything?
Because raw creation counts reward noise. Every re-imported list, duplicate form fill, and spam submission creates a CRM record, so "leads created" can grow while real demand shrinks. Net new leads subtracts duplicates, junk, and disqualified records to leave the honest top-of-funnel number — the one that should reconcile with cost per lead math and feed pipeline forecasts. If marketing reports created and sales reports net new, the two teams are describing different funnels.
Should we dedup by email, person, or account?
Pick the level that matches what the funnel counts. Email-level dedup is the floor — the same address twice is never two leads. Person-level catches the same human across work and personal addresses. Account-level collapses five contacts from one company into one opportunity-shaped unit, which suits ABM motions but understates contact-level demand gen. Most teams report person-level net new leads and track accounts separately; whichever you choose, encode it in the SQL model so every chart dedups identically.
Our lead volume trend broke after we changed the MQL threshold — why?
Because the definition moved, not the demand. Tightening a scoring threshold reclassifies leads that would have counted last quarter, so the trend shows a cliff that never happened in the market. When the threshold changes, either restate history under the new rule or annotate the seam on the chart — and keep raw net new leads (pre-qualification) as a stable series alongside MQLs, so definition changes can't rewrite the lead funnel story.
How do you calculate net new leads?
Count leads created in the period, minus records merged as duplicates and records disqualified as junk or out-of-ICP: in SQL, a filtered count like COUNT(*) FILTER (WHERE merged_into_id IS NULL AND status <> 'disqualified') grouped by month and source. Two conventions matter: attribute the lead to its creation month even if it's disqualified later (so history doesn't silently shrink — or accept restatement and say so), and keep source attribution rules fixed across channels so the by-source split from HubSpot or Salesforce stays comparable.
How do you track net new leads in Metabase?
Metabase reads from your SQL database or warehouse, so sync CRM lead objects — with merge and status fields — from HubSpot, Salesforce, or Pipedrive using a pipeline tool like Airbyte or Fivetran. Model the dedup and disqualification rules once, chart net new leads by month and source, and pair it with meetings booked follow-through so volume never gets reported without quality.