{
  "slug": "cost-per-lead-to-sql-funnel-calculator",
  "title": "Cost Per Lead to SQL Funnel Calculator",
  "heading": "Cost-Per-Lead-to-SQL Funnel Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/cost-per-lead-to-sql-funnel-calculator",
  "summary": "Translate raw lead cost into real cost per sales-qualified lead and opportunity.",
  "description": "Cost per lead is a vanity metric on its own because lead quality varies enormously by channel and campaign, and a cheap lead that never qualifies is more expensive per useful outcome than an expensive one that converts reliably. This calculator walks spend through the full funnel: raw leads, the share that become marketing-qualified leads (MQLs), the share of those that become sales-qualified leads (SQLs), and the share of SQLs that become opportunities, then computes true cost per SQL and cost per opportunity alongside the blended lead-to-opportunity conversion rate. This is the number that should actually drive channel budget decisions, not top-of-funnel CPL, since a channel with 2x the CPL but 3x the lead-to-SQL rate is cheaper per real sales outcome. It also flags where in the funnel you're losing the most volume proportionally, which tells you whether the fix is lead quality (upstream — targeting, offer, channel) or handoff process (downstream — MQL-to-SQL definitions, sales follow-up speed) rather than just 'we need more leads.'",
  "formula": "Cost per SQL = spend ÷ (leads × MQL rate × SQL rate); Cost per opportunity = cost per SQL ÷ opportunity rate; Blended conversion = MQL rate × SQL rate × opportunity rate.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=cost-per-lead-to-sql-funnel-calculator",
  "inputs": [
    {
      "id": "spend",
      "label": "Total campaign spend",
      "kind": "number",
      "hint": null,
      "default": 20000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "leads",
      "label": "Raw leads generated",
      "kind": "number",
      "hint": null,
      "default": 500,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "mqlRate",
      "label": "Lead-to-MQL rate",
      "kind": "number",
      "hint": null,
      "default": 50,
      "unit": "%",
      "min": 1,
      "max": 100
    },
    {
      "id": "sqlRate",
      "label": "MQL-to-SQL rate",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": "%",
      "min": 1,
      "max": 100
    },
    {
      "id": "oppRate",
      "label": "SQL-to-opportunity rate",
      "kind": "number",
      "hint": null,
      "default": 60,
      "unit": "%",
      "min": 1,
      "max": 100
    }
  ],
  "outputs": [
    {
      "id": "costPerSql",
      "label": "True cost per SQL",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "costPerOpp",
      "label": "Cost per opportunity",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "costPerLead",
      "label": "Cost per raw lead",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "costPerMql",
      "label": "Cost per MQL",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "blendedConversion",
      "label": "Blended lead-to-opportunity rate",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "opps",
      "label": "Opportunities generated",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total campaign spend: 20000 $",
      "Raw leads generated: 500",
      "Lead-to-MQL rate: 50 %",
      "MQL-to-SQL rate: 40 %",
      "SQL-to-opportunity rate: 60 %"
    ],
    "outputs": [
      "True cost per SQL: $200",
      "Cost per opportunity: $333",
      "Cost per raw lead: $40.00",
      "Cost per MQL: $80.00",
      "Blended lead-to-opportunity rate: 12.00%",
      "Opportunities generated: 60"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total campaign spend ($).",
      "Enter raw leads generated.",
      "Enter lead-to-mql rate (%).",
      "Enter mql-to-sql rate (%).",
      "Enter sql-to-opportunity rate (%).",
      "Read your true cost per sql on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "spend": 12000,
        "leads": 300,
        "mqlRate": 30,
        "sqlRate": 24,
        "oppRate": 36
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "spend": 20000,
        "leads": 500,
        "mqlRate": 50,
        "sqlRate": 40,
        "oppRate": 60
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "spend": 32000,
        "leads": 800,
        "mqlRate": 80,
        "sqlRate": 64,
        "oppRate": 96
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "Why is cost per SQL a better metric than cost per lead for budget decisions?",
      "a": "Cost per lead only measures top-of-funnel efficiency and ignores whether those leads are any good. A channel generating cheap, unqualified leads that die in the funnel is wasting sales team time and produces a worse cost per real outcome than a pricier channel with a much higher qualification rate. Cost per SQL or opportunity reflects what you actually paid for a lead sales can work."
    },
    {
      "q": "How do I know if my problem is lead quality or funnel process?",
      "a": "Compare your MQL and SQL rates against channel-level benchmarks or your own historical averages. If a specific channel has a much lower MQL rate than others, that's a targeting/offer problem upstream. If MQL-to-SQL rate is uniformly low across all channels, that's more likely a sales follow-up speed or lead routing problem, not a marketing sourcing problem."
    },
    {
      "q": "What's a typical MQL-to-SQL conversion rate benchmark?",
      "a": "B2B SaaS commonly sees 30-50% MQL-to-SQL rates when lead scoring and sales alignment are reasonably tight; below 20% usually signals a scoring threshold set too low, letting too many low-intent leads through as 'qualified.'"
    },
    {
      "q": "Should I compare cost per SQL across channels with very different volumes?",
      "a": "Yes, that's the point — it normalizes channels with wildly different CPLs and volumes down to a comparable unit economics figure. Just make sure sample sizes are large enough (generally 30+ SQLs per channel) before drawing firm conclusions, since small-sample conversion rates swing a lot."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/webinar-cost-per-sql-calculator",
    "https://www.revenuelab.fyi/toolbox/marketing-budget-payback-allocator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Cost Per Lead to SQL Funnel Calculator (https://www.revenuelab.fyi/toolbox/cost-per-lead-to-sql-funnel-calculator)"
}