Sign in

Blog · Finance metrics and formulas · Sales teams

Cost per qualified lead: formula and stage definitions

Cost per qualified lead depends on exactly which qualification stage you count. Calculate campaign spending per MQL and SQL, reconcile stage histories, and compare qualification rates with opportunity outcomes.

The short answerCost per qualified lead is eligible campaign spending divided by unique leads reaching a defined qualification stage. Specify whether the denominator is marketing-qualified leads or sales-qualified leads, and use the same acquisition cohort and observation cutoff. A campaign costing $18,000 with 90 MQLs and 30 SQLs costs $200 per MQL and $600 per SQL.

Cost per qualified lead is campaign spending divided by the unique leads that reach a named qualification stage. State whether that stage is MQL or SQL: the same $18,000 campaign can cost $200 per marketing-qualified lead and $600 per sales-qualified lead.

The formula needs a stage name

Cost per MQL = Eligible campaign spending / Unique marketing-qualified leads

Cost per SQL = Eligible campaign spending / Unique sales-qualified leads

MQL means marketing has judged the lead ready for sales; SQL means sales has qualified the lead as a potential customer. Those distinctions follow HubSpot's published lifecycle definitions. Your organization must still write its own acceptance criteria: company fit, role, intent, need, and any required sales review.

Record who owns each definition. Marketing operations can maintain the MQL rule, while sales leadership approves the SQL rule. Finance should agree the spending basis. A qualification threshold changed halfway through a comparison must be disclosed or applied consistently to the underlying records.

Use a contact denominator here. If your business evaluates buying organizations instead, label the measure cost per qualified account and use the B2B cost per lead workflow for account deduplication. Mixing contacts and accounts changes the question.

The export rows behind the calculation

The spending file needs campaign ID, service date, currency, cost category, and eligible amount. The CRM export needs lead ID, acquisition date, assigned campaign, and first dates reaching MQL, SQL, and opportunity. Keep rejection reasons and unmatched campaign IDs available for review.

Choose an acquisition cohort and an observation cutoff. This example follows leads created during May 2026 and records first stage entries through August 31, 2026. Both campaigns have the same follow-up window. Spending includes their agreed direct campaign costs in USD.

Use first-entry history rather than current stage. A lead that has become an opportunity has already passed qualification in this example, even if its current stage no longer says SQL. For the arithmetic below, the company's process requires every SQL to have passed MQL, and every opportunity to have passed SQL. If your actual process permits skipped stages, count the history honestly and explain the different path.

Worked example: equal CPL, different qualification

A US business services company compares Search and Webinar. Each valid lead belongs to one campaign, and every stage count is unique within that campaign cohort. Each lead has at most one opportunity in this example, so opportunity counts equal unique SQL leads reaching opportunity. For other exports, deduplicate SQL lead IDs before calculating conversion, even if a lead is linked to several deals.

Campaign Spend (USD) Valid leads MQLs SQLs Opportunities
Search 18,000 360 90 30 12
Webinar 12,000 240 120 24 6
Total 30,000 600 210 54 18

Divide the same spending by each relevant stage count. Dollar amounts below are rounded to cents only after division.

Campaign CPL calculation CPL (USD) Cost per MQL calculation Cost per MQL (USD) Cost per SQL calculation Cost per SQL (USD)
Search 18,000 / 360 50.00 18,000 / 90 200.00 18,000 / 30 600.00
Webinar 12,000 / 240 50.00 12,000 / 120 100.00 12,000 / 24 500.00
Total 30,000 / 600 50.00 30,000 / 210 142.86 30,000 / 54 555.56

The campaigns have identical initial CPL. Webinar costs less per MQL and per SQL, but the later-stage conversion deserves a separate check.

SQL-to-opportunity rate = Unique SQL leads reaching opportunity / Unique SQL leads

Campaign Lead to MQL MQL to SQL SQL to opportunity
Search 90 / 360 = 25.0% 30 / 90 = 33.3% 12 / 30 = 40.0%
Webinar 120 / 240 = 50.0% 24 / 120 = 20.0% 6 / 24 = 25.0%
Total 210 / 600 = 35.0% 54 / 210 = 25.7% 18 / 54 = 33.3%

Percentages are displayed to one decimal place. The generic cost per lead calculation cannot reveal these stage differences on its own.

Reproduce the counts in a spreadsheet

Prepare a deduplicated Leads sheet with campaign ID in A, acquisition date in B, first MQL date in C, and first SQL date in D. In a summary sheet, A2 contains the campaign ID, H1 the cohort start, I1 the next-period start, and J1 the observation cutoff.

In Excel, the MQL count is:

=COUNTIFS(Leads!$A$2:$A$10000,A2,Leads!$B$2:$B$10000,">="&$H$1,Leads!$B$2:$B$10000,"<"&$I$1,Leads!$C$2:$C$10000,">0",Leads!$C$2:$C$10000,"<"&($J$1+1))

For SQLs, replace both references to column C with column D. The positive-date test excludes blanks, and the upper boundary includes timestamps throughout the cutoff date. Use actual spreadsheet dates, not date-looking text, and extend the ranges to cover the whole file.

Microsoft documents COUNTIFS as counting records meeting all specified criteria. It counts qualifying rows, so a stage-history export with repeated rows per lead must be reduced to first-entry dates before this calculation.

If summary B2 contains spending, C2 contains MQLs, and D2 contains SQLs, use:

=IF(C2=0,"N/A",B2/C2)
=IF(D2=0,"N/A",B2/D2)

These return cost per MQL and cost per SQL respectively. Covirage is not affiliated with Microsoft or HubSpot.

Prove the number with the conversion identity

The same cohort supports an independent reconstruction:

Cost per SQL = CPL / Lead-to-MQL rate / MQL-to-SQL rate

For the total, retain the exact fractions: $50 divided by (210 / 600), then divided by (54 / 210), equals $555.56 after rounding. The lead and MQL counts cancel, leaving $30,000 divided by 54 SQLs. Using displayed rounded percentages instead would introduce a rounding difference.

Also tie stage totals to the distinct lead IDs: 90 plus 120 gives 210 MQLs, and 30 plus 24 gives 54 SQLs. In this example, SQL IDs must be a subset of MQL IDs, and opportunity IDs must link to SQL leads. Investigate stage dates that precede acquisition or appear in the wrong order.

Use the result for the next budget decision

Webinar's lower cost per SQL is useful, but Search has stronger SQL-to-opportunity conversion in the observed data. Review opportunity value, eventual wins, and capacity before scaling either campaign. This is a qualification report, not proof of superior customer profitability.

Keep broader selling costs in customer acquisition cost, and use cost per lead by channel when the spending allocation itself needs review. A changed qualification rule or a newly mature cohort can alter the apparent ranking without any change in media efficiency.

Where it goes wrong

  • An unnamed qualified stage. MQL and SQL are different denominators and need separate labels.
  • Current status counted as history. Leads that progress out of SQL still belong in their earlier qualification cohort.
  • Recycled leads counted repeatedly. First-entry dates prevent repeated stage changes from creating extra acquired leads.
  • Different maturity or thresholds. Campaigns need comparable follow-up and acceptance rules.
  • Unreconciled stage paths. Skipped stages and missing dates require explanation rather than invented qualification events.

Calculate qualification costs on your own file in Covirage

Bring your campaign spending and a sample of your own CRM rows with qualification dates. Covirage maps the columns, its tools compute and check the figures, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account, then set up your business and bring a sample of your own data.

See Covirage for sales teams for the supporting context.

Questions people ask

What is the difference between cost per MQL and cost per SQL?

Both divide the same agreed spending by a stage count. Cost per MQL uses leads accepted under marketing's qualification rules. Cost per SQL uses leads accepted under sales' rules. Because those populations differ, the figures answer different questions about campaign efficiency.

Should qualified leads be counted once or every time they qualify?

For an acquisition-cohort report, count each unique lead once at its first qualifying entry into the named stage. Recycled leads and repeated stage changes need a separate rule. Counting every status update would make activity look like additional lead generation.

Can a lower cost per MQL hide weaker results?

Yes. A campaign may create many marketing-qualified leads that sales later rejects or that rarely become opportunities. Compare cost per SQL and opportunity conversion before treating a lower cost per MQL as evidence that the campaign deserves more budget.

What if there are no qualified leads?

Keep the campaign spending visible and report the stage count as zero. Show the cost per qualified lead as undefined rather than zero. Confirm that qualification history and the observation window are complete before judging the campaign.