MQL vs SQL: a RevOps guide to the lead lifecycle
The MQL vs SQL distinction is one of those B2B definitions that sounds simple, gets argued about in QBRs, and quietly causes more pipeline damage than it should. Marketing measures one thing. Sales measures another. The handoff in between is where deals die.
This is a working guide to the difference, the stages between them, and how to make the framework hold up in practice. It’s written for RevOps and Marketing Ops practitioners who already know what these acronyms stand for and need a clearer model for using them.
What is an MQL?
A Marketing Qualified Lead is a contact who has demonstrated enough interest, fit, or both to warrant a sales-led conversation, but hasn’t yet been validated by sales. The definition has two pieces:
Fit: the lead matches your ICP. Right title, right company, right size, right vertical.
Interest: the lead has done something that signals real consideration of buying. Demo request, trial signup, repeated pricing-page visits, a direct sales-related question on a form.
An MQL is marketing’s bet that this contact is worth a sales touch. Marketing makes the bet using whatever scoring or qualification framework they have. The bet is settled when sales either accepts the lead (it converts to SAL or SQL) or rejects it.
The single most common MQL definition mistake is overweighting interest at the expense of fit. A lead who downloads three whitepapers but works at a 5-person company you don’t sell to is not an MQL. A lead who fills out one demo request from a perfect-fit account is. The “qualified” part of MQL means qualified for your product, not just engaged with your content.
What is an SQL?
A Sales Qualified Lead is a contact who has been validated by sales as a real, near-term buying opportunity. Sales has either had a conversation with them, reviewed the contact and account in detail, or run them through a discovery framework like BANT (Budget, Authority, Need, Timeline) or MEDDIC.
An SQL is sales’ agreement that the lead is worth their time. The implicit contract: an SQL has a real chance of becoming a closed-won deal in a defined window (usually 90 days, sometimes 180).
The MQL→SQL transition is where the marketing-sales handoff actually happens. Up to MQL, marketing is responsible. After SQL, sales is responsible. In the gap between, both teams are responsible, and that’s where things go wrong.
The SAL stage that most teams skip
A lot of teams jump directly from MQL to SQL and find that the conversion rate is mysteriously low. The missing stage is SAL: Sales Accepted Lead.
A SAL is a lead that sales has acknowledged but not yet validated. The acknowledgment is meaningful: it’s sales saying “I see this lead, I agree it’s worth a first touch.” The SAL stage has two functions.
First, it forces accountability. If you only have MQL and SQL, leads can disappear into the void between marketing handoff and sales touch. With a SAL stage, you can measure how many MQLs are actually being looked at (MQL→SAL conversion), separately from how many are being converted (SAL→SQL conversion). When MQL→SQL is dropping, the diagnosis splits cleanly: is sales not looking at the leads, or are they looking and rejecting them?
Second, it surfaces the alignment problem. If your MQL→SAL conversion is 95% (sales accepts almost everything marketing sends), your MQL bar is probably too low. If it’s 30%, you have a marketing/sales alignment issue: marketing thinks these are good leads, sales disagrees on sight.
Most B2B teams should run the four-stage funnel: Subscriber → MQL → SAL → SQL → Opportunity → Closed. HubSpot’s default lifecycle stages don’t include SAL; you add it as a custom stage or a separate “Sales Accepted Date” property layered onto the standard lifecycle.
How the handoff actually works
The lifecycle stages are easy to draw on a whiteboard. The handoff in practice is where most B2B revenue teams have unresolved problems.
A working MQL→SQL handoff looks like this:
- Trigger: the lead crosses an MQL threshold (usually a score threshold or a specific action like a demo request)
- Notification: the right SDR or AE is notified within minutes, with score context
- First touch: sales attempts contact within an SLA window (usually 1 hour for high-intent inbound, 24 hours for slower signals)
- Acceptance or rejection: the SDR marks the lead as Accepted (becomes SAL) or Rejected (back to nurture, with a reason code)
- Qualification: SDR runs discovery on Accepted leads; either qualifies them as SQL (with a real opportunity attached) or disqualifies them with a reason
Three common breakdowns:
Time to first touch is too long. Inbound demo requests cool fast. If your median time to first touch is measured in days instead of hours for high-intent signals, you’re losing leads that scoring already qualified for you.
No rejection reasons. When sales rejects a lead, the reason matters. “Doesn’t fit ICP” is different from “Not in our region” is different from “Already evaluated us last year.” Without rejection reason codes, you can’t see whether the leak is in your scoring (bad fit), your geo (out of market), or your timing (too soon).
No closed loop on disqualified leads. Disqualified leads should go back to nurture, not the trash. A rep saying “not a real buyer right now” doesn’t mean the lead won’t be a buyer in two quarters.
How to set MQL/SQL definitions in HubSpot
HubSpot ships with a default Lifecycle Stage property that includes Subscriber, Lead, Marketing Qualified Lead, Sales Qualified Lead, Opportunity, Customer, and a few others. The easy mistake is using the default stages without defining what each one means for your business.
A working setup:
Define the criteria in writing. What specifically makes a lead an MQL? Score threshold? Specific actions? Fit + interest combination? Write it down, get sign-off from the VP of Sales, and post it in a shared doc your team references.
Build the trigger. Use a workflow that sets Lifecycle Stage to MQL when the criteria are met (typically: Combined score crosses a threshold, or a specific high-intent action fires). The full HubSpot lead scoring setup guide walks the workflow build step by step.
Don’t let backwards transitions happen accidentally. HubSpot will not move a contact backward through lifecycle stages by default, but custom workflows can. Make sure you’re not accidentally demoting MQLs to Subscribers when they unsubscribe from one email.
Measure the conversion rate. Build a HubSpot Custom Report tracking MQL→SQL conversion over a rolling 90-day window. This is the single most important metric for the health of your scoring system.
Add a SAL stage if you don’t have one. Either as a custom Lifecycle Stage value (HubSpot supports custom stages) or as a separate property like “Sales Accepted Date.” The SAL stage is what lets you diagnose handoff health separately from scoring health.
The conversion rate that actually matters
Industry benchmarks for MQL→SQL conversion vary wildly depending on how each company defines MQL. Reported numbers range from the low teens (very loose MQL definitions) up to 60%+ (very tight definitions, typically enterprise teams with high-fit-only filters). Reading those benchmarks is mostly useless because they’re comparing apples to oranges.
The number that actually matters is your own MQL→SQL trend over time, holding your definitions constant. If you’ve defined MQL the same way for two years and the conversion rate is dropping, something has changed. Three usual suspects:
- ICP drift. Your wins are coming from a segment your scoring no longer rewards. Run a calibration check against closed-won data.
- Channel mix shift. A new channel (paid social, partner referrals, organic) is generating MQLs that look qualified on paper but convert worse. Check conversion by source.
- Sales capacity. SDRs are overloaded and triaging by gut, ignoring lower-scored MQLs that would have converted if worked. Check SAL acceptance rate by SDR.
If MQL→SQL is dropping, don’t immediately rebuild the scoring model. Run the diagnostic above first.
When the framework breaks
A few common failure modes worth flagging:
MQL gaming. When marketing’s bonus is tied to MQL volume, MQL volume goes up and conversion drops. Tie marketing’s incentive to SAL or SQL volume instead, with a quarterly true-up against closed-won attribution.
The “everyone’s an MQL” problem. If your MQL volume is high and SAL acceptance is low, your bar is too low. Tighten the definition, lose volume, gain quality. The conversation with the CMO is a hard one but it’s the right one.
The SQL bottleneck. If SAL→SQL conversion is high but SQL→Opportunity is low, the problem is qualification quality, not lead quality. Sales is accepting and qualifying leads that don’t have a real near-term opportunity. Tighten the SQL criteria.
The single-source funnel. If 80% of your MQLs come from one channel (say, organic search or paid LinkedIn), the framework is fragile. The day that channel underperforms, your funnel cracks. Diversify deliberately, even if it costs short-term efficiency.
No sales feedback loop. This is the failure mode that quietly kills the rest. The framework only calibrates if sales feeds structured data back into it: rejection reasons at SAL, disqualification reasons at SQL, and closed-won outcomes tied back to the original score. If reps just work leads and never record why they passed or what actually happened, there’s no signal to tune MQL definitions against. The model drifts and nobody sees it, because the only evidence it stopped predicting revenue is sitting in reps’ heads instead of in your data. Every other fix in this post assumes a closed loop; without sales capturing outcomes, you’re tuning a model with the feedback wire cut. Make outcome capture a required field, not an optional one, and review it by score band every quarter.
A working summary
Stripped to the essentials:
- MQL = marketing’s bet that this lead is worth a sales touch. Defined by fit + interest, not just engagement.
- SAL = sales’ acknowledgment that the lead is worth a first touch. Optional in name, essential in function.
- SQL = sales’ validation that the lead is a real near-term buyer. Defined by discovery, not by score.
- The conversion rate that matters is your own trend over time, not industry benchmarks. Watch MQL→SAL and SAL→SQL separately to diagnose where the leak is.
The lifecycle is a working framework, not a finished system. Calibrate quarterly. Watch the conversion trends. Run a SAL stage if you don’t already.
A note on tooling
The framework above runs on whatever scoring system you already have, in HubSpot or anywhere else. If your MQL→SQL conversion is dropping and you trace it to scoring that’s coarse, opaque, or impossible to validate against closed-won data, that’s the problem kenbun was built for.
See kenbun on your HubSpot data. Calibration and conversion lift validation are built in, so when MQL definitions stop being predictive you find out from data, not from a CRO meeting.