{
  "slug": "webinar-cost-per-sql-calculator",
  "title": "Webinar Cost Per SQL Calculator",
  "heading": "Webinar Cost Per SQL Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/webinar-cost-per-sql-calculator",
  "summary": "Turn webinar registrations into a real cost-per-sales-qualified-lead number.",
  "description": "Webinar programs get judged on registration counts far too often, when the number that actually matters to a B2B pipeline is cost per sales-qualified lead (SQL) — a lead sales has accepted as worth working, not just someone who filled out a form or showed up live. This calculator walks the full funnel: registrations to live attendees, attendees to marketing-qualified leads (MQLs) based on engagement or fit criteria, and MQLs to SQLs based on your sales team's acceptance rate, then divides total program cost by resulting SQLs. It's common for a webinar with an impressive 2,000 registrations to produce fewer than 15 SQLs once you apply realistic show-up rates (35-50% for most B2B webinars) and MQL-to-SQL conversion (often 20-35%), which changes the entire cost-per-result conversation with stakeholders expecting cost-per-registration math. Include the fully loaded program cost — platform fees, promotion spend, speaker time, and content production — not just the media budget, since underweighting production cost is the most common way webinar ROI gets overstated in marketing reporting.",
  "formula": "Attendees = registrations × show rate; MQLs = attendees × MQL rate; SQLs = MQLs × SQL acceptance rate; cost per SQL = total program cost ÷ SQLs.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=webinar-cost-per-sql-calculator",
  "inputs": [
    {
      "id": "registrations",
      "label": "Registrations",
      "kind": "number",
      "hint": null,
      "default": 1800,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "showRate",
      "label": "Live show-up rate",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": "%",
      "min": 1,
      "max": 100
    },
    {
      "id": "mqlRate",
      "label": "Attendee to MQL rate",
      "kind": "number",
      "hint": null,
      "default": 25,
      "unit": "%",
      "min": 0,
      "max": 100
    },
    {
      "id": "sqlRate",
      "label": "MQL to SQL acceptance rate",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": "%",
      "min": 0,
      "max": 100
    },
    {
      "id": "programCost",
      "label": "Total fully loaded program cost",
      "kind": "number",
      "hint": null,
      "default": 14000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "avgDealSize",
      "label": "Average closed-won deal size",
      "kind": "number",
      "hint": null,
      "default": 18000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "sqlToWinRate",
      "label": "SQL to closed-won rate",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": "%",
      "min": 0,
      "max": 100
    }
  ],
  "outputs": [
    {
      "id": "costPerSql",
      "label": "Cost per SQL",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "sqls",
      "label": "SQLs generated",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "costPerMql",
      "label": "Cost per MQL",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "wins",
      "label": "Expected closed-won deals",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "roi",
      "label": "Program ROI from expected closed revenue",
      "format": "percent",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Registrations: 1800",
      "Live show-up rate: 40 %",
      "Attendee to MQL rate: 25 %",
      "MQL to SQL acceptance rate: 30 %",
      "Total fully loaded program cost: 14000 $",
      "Average closed-won deal size: 18000 $",
      "SQL to closed-won rate: 18 %"
    ],
    "outputs": [
      "Cost per SQL: $259",
      "SQLs generated: 54",
      "Cost per MQL: $78",
      "Expected closed-won deals: 9.72",
      "Program ROI from expected closed revenue: 1150%"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter registrations.",
      "Enter live show-up rate (%).",
      "Enter attendee to mql rate (%).",
      "Enter mql to sql acceptance rate (%).",
      "Enter total fully loaded program cost ($).",
      "Enter average closed-won deal size ($).",
      "Enter sql to closed-won rate (%).",
      "Read your 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": {
        "registrations": 1080,
        "showRate": 24,
        "mqlRate": 15,
        "sqlRate": 18,
        "programCost": 8500,
        "avgDealSize": 11000,
        "sqlToWinRate": 11
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "registrations": 1800,
        "showRate": 40,
        "mqlRate": 25,
        "sqlRate": 30,
        "programCost": 14000,
        "avgDealSize": 18000,
        "sqlToWinRate": 18
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "registrations": 2880,
        "showRate": 64,
        "mqlRate": 40,
        "sqlRate": 48,
        "programCost": 22500,
        "avgDealSize": 29000,
        "sqlToWinRate": 29
      }
    }
  ],
  "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": "What show-up rate should I expect?",
      "a": "35-50% is typical for B2B webinars promoted mainly to your own database. Cold-promoted webinars to purchased or partner lists often run lower, 20-30%, since registration intent is weaker and reminder emails land with less-engaged recipients."
    },
    {
      "q": "Why do so few registrations turn into SQLs?",
      "a": "Each funnel stage compounds: if only 40% show up, then 25% of those qualify as MQLs, then 30% of those get accepted by sales, you're down to 3% of original registrations becoming an SQL. This isn't a sign the webinar failed — it's normal top-of-funnel math that raw registration counts hide."
    },
    {
      "q": "What should count as fully loaded program cost?",
      "a": "Platform/tooling fees, any paid promotion or list rental, speaker fees or internal team hours valued at a reasonable rate, and content/slide production. Leaving out internal labor cost is the most common way webinar ROI gets overstated when presented to leadership."
    },
    {
      "q": "How do I improve cost per SQL without spending more?",
      "a": "The biggest lever is usually MQL and SQL qualification rates, not registration volume — tighter targeting on who you promote to, better lead scoring criteria, and faster sales follow-up while interest is fresh typically move these rates more than adding registration budget."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/marketing-budget-payback-allocator",
    "https://www.revenuelab.fyi/toolbox/brand-lift-survey-sample-size"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Webinar Cost Per SQL Calculator (https://www.revenuelab.fyi/toolbox/webinar-cost-per-sql-calculator)"
}