In this guide:
Learn to measure every stage of your sales-led funnel—from Lead Acquisition to Revenue Expansion. This comprehensive playbook covers key metrics, benchmarks, SQL examples, and actionable steps for RevOps teams, Data teams, and Leadership at mid-market SaaS companies.
In a mid-market SaaS company with a sales-led go-to-market motion, success hinges on a clear understanding of your sales funnel metrics. Revenue Operations (RevOps), Data teams, and Leadership must work together to track each stage of the funnel – from the first lead touch to closed deals and expansion revenue.
This guide breaks down each funnel stage (Lead Acquisition, MQL, SQL, Opportunity, Pipeline, Win/Loss, and Expansion), explaining what to measure, how to interpret the numbers, benchmarks to gauge performance, and actions to improve. We also highlight how to combine data across your CRM, marketing automation platform, billing system, and even product usage data to get a complete picture.
Use this guide as a practical playbook for building a predictable and scalable sales funnel. Each section includes real SQL examples you can adapt to your data warehouse, plus specific benchmarks and actionable recommendations based on mid-market SaaS best practices.
Measuring a sales-led funnel end-to-end requires connecting data from multiple systems. Marketing captures leads and MQLs (often in a marketing automation platform), Sales handles SQLs and opportunities (in a CRM), Finance tracks revenue and expansion (in a billing/subscription system), and Product data might signal upsell potential.
To achieve a single source of truth, data teams should integrate these sources (e.g., via a data warehouse or BI tool) so that every stage of the funnel can be analyzed together. This unified dataset lets RevOps and leadership see the whole customer journey and identify where handoffs or bottlenecks occur.
Critical for Success: Breaking down data silos is essential. Ensure your CRM, marketing automation, billing, and product analytics data are linked by common identifiers (lead or account IDs, emails, etc.). This full-funnel visibility enables accurate metrics and helps align Sales, Marketing, and Customer Success on one view of the truth.
With integrated data in place, let's walk through each stage of the sales funnel, key metrics to track, benchmarks to consider, and how to take action on the insights.
What it is:
Lead acquisition is the top-of-funnel stage where prospects become leads by expressing interest (filling out a form, subscribing to a newsletter, or contacting sales). This stage is all about attracting and capturing as many qualified leads as possible at a reasonable cost.
Monitor lead volume in context of quality. A surge in leads is great, but if the lead-to-MQL conversion is low, it means many leads are unqualified or not ready to engage. For example, if you acquired 1,000 leads from a new eBook campaign but only 5% converted to MQL, you may be attracting the wrong audience or need better follow-up.
Cost Per Lead is another lens on efficiency – a high CPL might be justified for very high-quality leads, but generally you'll want to compare CPL across channels to double down on the most cost-effective sources. As a benchmark, mid-sized B2B SaaS firms might see only 1-3% of website visitors turn into leads, so optimizing landing pages and offers to improve that is key.
Identify which sources yield leads that convert well down the funnel. Increase investment in those channels, and reduce spend on sources with lots of leads but poor conversion or high CPL.
Enhance your landing pages, forms, and lead magnets to attract relevant prospects. Implement basic qualification questions (company size, use case) at signup to gauge lead quality early.
Ensure a process for rapid follow-up on inbound inquiries. Leads can go cold quickly; a speedy response (minutes or hours, not days) can improve conversion to MQL.
To see which sources are bringing in the most leads and how they convert to MQLs, you might run a query on your unified data like:
SELECT
lead_source,
COUNT(*) AS total_leads,
SUM(CASE WHEN mql_date IS NOT NULL THEN 1 ELSE 0 END) AS total_mqls,
ROUND(
SUM(CASE WHEN mql_date IS NOT NULL THEN 1 ELSE 0 END)::decimal
/ COUNT(*) * 100,
2
) || '%' AS lead_to_mql_rate
FROM analytics.leads
WHERE lead_created_date BETWEEN '2025-01-01' AND '2025-12-31'
GROUP BY lead_source
ORDER BY total_leads DESC;
This SQL snippet aggregates leads by source for the year 2025, counts how many became MQLs, and calculates the lead-to-MQL conversion rate (as a percentage) for each source. Use it to pinpoint which channels produce quality leads versus just volume.
Definition:
Marketing Qualified Lead (MQL) – A lead that has met specific criteria indicating higher likelihood to buy. Criteria often combine fit (job title, company size matching your target customer) and engagement (opened emails, visited pricing page, downloaded whitepapers). An MQL is handed off to Sales for further qualification.
High MQL volume is positive, but only if those MQLs are converting to SQLs. MQL-to-SQL conversion rate is a critical health indicator of the funnel's middle. For example, if you delivered 100 MQLs but only 20 became SQLs (20% conversion), it may signal a disconnect: perhaps marketing's criteria are too lenient, or sales follow-up is lacking.
Ideally, your MQL-to-SQL conversion might be in the range of 30-50% for a well-aligned sales-marketing process (some industry benchmarks put average around 20% but aim higher if your teams are in sync). A low conversion here means wasted effort at the top of funnel; a very high conversion (say 70%+) could mean marketing is only passing the most obvious easy wins.
Work with sales to adjust what qualifies as an MQL. Use historical data: which MQL behaviors or attributes led to SQLs and deals? Tighten or loosen criteria accordingly to balance volume vs. quality.
Implement or recalibrate lead scoring models. Assign higher points to actions that strongly indicate buying intent (like requesting a demo) so those leads reach MQL status sooner.
Establish regular feedback loops. Sales should report back on MQL quality and use this input to iterate on targeting and content. Ensure every MQL is assigned to a rep promptly.
To analyze MQL performance, here's a sample SQL query that joins marketing and CRM data to calculate how many MQLs turned into SQLs each month:
SELECT
DATE_TRUNC('month', m.mql_date) AS mql_month,
COUNT(DISTINCT m.lead_id) AS mql_count,
COUNT(DISTINCT s.lead_id) AS sql_count,
ROUND(
COUNT(DISTINCT s.lead_id)::decimal
/ NULLIF(COUNT(DISTINCT m.lead_id), 0) * 100,
1
) || '%' AS mql_to_sql_rate
FROM crm.marketing_leads m
LEFT JOIN crm.sales_leads s
ON m.lead_id = s.lead_id AND s.sql_date IS NOT NULL
WHERE m.mql_date IS NOT NULL
GROUP BY mql_month
ORDER BY mql_month;
This query groups by month, counting MQLs and how many of those became SQLs, then computes the conversion rate. Such analysis helps you spot trends – for instance, if April's MQL-to-SQL was 50% but May's was 25%, you know something changed in lead quality or follow-up in May.
Pro Tip: Watch MQL response time closely. If it's taking sales several days to reach out, those prospects may lose interest or go to a competitor. Many mid-market companies institute an SLA that reps will contact an MQL within 24 hours.
Definition:
Sales Qualified Lead (SQL) – A prospective customer that sales has validated as a genuine opportunity. Reps often qualify SQLs through a call or meeting to confirm there is a real business need, the authority or decision-makers are engaged, and there's a likelihood of an upcoming purchase.
SQL volume reflects the true yield of your marketing efforts after sales vetting. If SQL counts are low relative to MQLs, it indicates a filtering effect – which could be good (if marketing was passing too many unqualified leads) or bad (if sales is too slow or strict, leading to potential opportunities being dropped).
Additionally, track how long it takes to move leads through qualification. A long qualification time might show resource constraints (e.g., not enough sales development reps to handle incoming leads promptly) or process inefficiencies. Best-in-class teams often achieve qualification within 1-3 days for inbound leads.
Ensure every MQL is routed to the correct sales rep or SDR immediately along with relevant context (lead source, what content they consumed). A smooth handoff increases the likelihood of quick qualification.
Set internal targets like "80% of MQLs should be contacted within 24 hours and dispositioned (qualified or disqualified) within 7 days." Monitor adherence and address capacity or workflow issues.
For larger mid-market teams, consider using predictive scoring or intent data to help reps prioritize which MQLs are likely to turn into SQLs. This can boost efficiency by focusing reps on the hottest prospects first.
To keep tabs on your SQL stage, you can run analysis queries. For example, to see how quickly leads are being qualified by sales:
SELECT
s.owner_id AS sales_rep,
COUNT(*) AS sql_count,
ROUND(AVG(DATE_PART('day', s.sql_date - m.mql_date)), 1) AS avg_qualify_time_days,
ROUND(
COUNT(*)::decimal
/ NULLIF((SELECT COUNT(*) FROM crm.marketing_leads x
WHERE x.mql_date BETWEEN '2025-07-01' AND '2025-09-30'), 0) * 100,
1
) || '%' AS pct_of_mqls_converted
FROM crm.marketing_leads m
JOIN crm.sales_leads s
ON m.lead_id = s.lead_id
WHERE m.mql_date BETWEEN '2025-07-01' AND '2025-09-30'
AND s.sql_date IS NOT NULL
GROUP BY s.owner_id;
This sample query looks at Q3 2025 and calculates per sales rep how many SQLs they created, the average time (in days) it took them to qualify those leads, and what percentage of all MQLs each rep converted. This can highlight star performers or reps who may need help.
What it is:
At this stage, a Sales Qualified Lead is formally converted into an Opportunity in the CRM. Opportunity Creation marks the transition from lead qualification to active deal pursuit. Each opportunity typically has an associated potential value (pipeline revenue) and enters the sales pipeline at an early stage.
Opportunity creation is the bridge between lead generation and revenue. One useful way to interpret it is via the Pipeline Coverage ratio – compare the total pipeline value created (or currently open) against your future sales targets. Mid-market SaaS sales often use a pipeline coverage of 3x to 4x quota.
Another aspect is quality: if you see a high number of opps but low average value or many opps from segments that rarely close, the pipeline may be inflated with low-quality deals. It's better to have slightly fewer but well-qualified opportunities that have a solid chance, rather than many long-shot deals.
Based on sales targets, work backward to set targets for how many opps (and pipeline $) need to be created each month/quarter. Track these targets to ensure pipeline generation keeps pace.
Encourage reps to only create opportunities when there's a clear potential. If too many opps are being opened and later dying early, that wastes sales effort and clutters forecasts.
Conduct pipeline review meetings focusing not just on late-stage deals but also newly created opps. Sales managers should question very low-value opps or odd fits, to maintain pipeline health.
To get the total and average value of opportunities created each month:
SELECT
DATE_TRUNC('month', opp.created_date) AS month,
COUNT(*) AS opps_created,
SUM(opp.amount) AS total_pipeline_amount,
ROUND(AVG(opp.amount)) AS avg_deal_size
FROM sales.opportunities opp
WHERE opp.created_date >= '2025-01-01'
AND opp.stage = 'New' -- newly created opps initially in stage "New"
GROUP BY month
ORDER BY month;
This query groups new opportunities by month of creation in 2025, counting how many were opened, summing their dollar amount, and computing the average deal size. It helps you see trends in pipeline generation and can proactively address pipeline gaps.
What it is:
Once opportunities are created, they enter the pipeline progression phase – moving through the various sales stages (e.g., Initial Contact, Discovery, Proposal, Negotiation, etc.) toward a decision. This stage is about managing and advancing deals. Metrics here focus on how efficiently and effectively opportunities progress.
Sales Velocity = (Number of Opportunities × Win Rate × Average Deal Value) / Average Sales Cycle Length
This gives you the revenue generated per unit time (e.g., per month). A higher velocity means you're closing more big deals, faster.
These metrics together tell the story of pipeline health and efficiency. Stage-to-stage conversions let you pinpoint where deals struggle. For example, if 90% of opps go from initial meeting to demo, but only 30% go from demo to proposal, that suggests prospects lose interest after the demo.
Average time in stage is essentially your sales cycle breakdown; a long sales cycle can hurt velocity and tie up resources. In mid-market SaaS, a typical sales cycle might be anywhere from 1 to 3 months, and win rates on well-qualified pipeline could be around 20-30%.
Use stage conversion data to find where the biggest drop-offs occur. Then take action: if the problem is in the demo stage, improve demo scripts or provide better training to reps.
If you know a healthy deal usually spends 10 days in discovery, 15 in proposal, etc., flag any deals that exceed those as at-risk. Implement alerts or pipeline reviews for aging deals.
Use the sales velocity formula to experiment. For instance, if you want to increase velocity, you could try to shorten the average sales cycle or work on win rate. Pipeline velocity can be a north-star metric for the sales team to optimize.
To dive into pipeline progression data, consider a query like the following to examine stage conversion and aging:
SELECT
stage,
COUNT(*) AS opp_count,
ROUND(AVG(days_in_stage)) AS avg_days_in_stage,
ROUND(
COUNT(*)::decimal
/ NULLIF((SELECT COUNT(*) FROM sales.opportunities
WHERE stage_order = 1), 0) * 100,
1
) || '%' AS conversion_from_initial
FROM (
SELECT
opp.id,
opp.stage,
opp.stage_order, -- numeric representation of stage sequence
DATE_PART('day', NOW() - opp.stage_entered_date) AS days_in_stage
FROM sales.opportunities opp
WHERE opp.is_open = TRUE
) sub
GROUP BY stage, stage_order
ORDER BY stage_order;
This example counts open opps by stage, calculates the average days they've been in that stage, and calculates roughly what percentage of initially created opps are still alive at each stage. This helps spotlight where deals accumulate and age.
Pipeline Health Check: If Stage 3 has 50 opps with an average of 30 days in stage – much longer than other stages – it's a clear bottleneck to address. Regular pipeline reviews should focus on moving these aging deals forward or qualifying them out.
What it is:
The Win/Loss stage refers to the outcome of opportunities – either they end up Closed-Won (deal won, new customer acquired) or Closed-Lost (deal failed or was abandoned). Analyzing wins and losses is crucial for understanding sales effectiveness, competitive positioning, and forecasting future revenue.
Win rate is one of the clearest indicators of how well your sales process and product offering are performing in the market. For mid-market B2B SaaS, win rates can vary widely, but a general benchmark might be around 20-30% for opportunities that have passed initial qualification.
If your win rate is significantly lower, it could point to problems such as strong competition, misalignment in what you qualify as an opportunity, or sales execution challenges. A very high win rate (50%+ consistently) might mean your team is cherry-picking only the easiest deals, indicating missed opportunity to pursue more pipeline.
After a deal closes (won or lost), have reps record the primary reason and some notes. Hold periodic win/loss review meetings. For wins: what went right, how can we replicate it? For losses: what did we learn, and how can we avoid that in the future?
If win rates are low, you might be pursuing too many low-probability deals. Tighten your qualification criteria for opportunities. It's better to have reps focus on fewer, high-quality deals (improving win rate) than chasing everything that moves.
Identify areas where the sales team can improve. If "customer didn't see value" is a common loss reason, invest in training reps on value selling and ROI justification. If competitor wins are common, create battlecards and role-play handling objections.
To calculate win rates and analyze outcomes, here's an example SQL snippet that summarizes closed deals:
SELECT
rep.name AS sales_rep,
SUM(CASE WHEN opp.status = 'Closed Won' THEN 1 ELSE 0 END) AS deals_won,
SUM(CASE WHEN opp.status = 'Closed Lost' THEN 1 ELSE 0 END) AS deals_lost,
ROUND(
SUM(CASE WHEN opp.status = 'Closed Won' THEN 1 ELSE 0 END)::decimal
/ NULLIF(SUM(CASE WHEN opp.status IN ('Closed Won','Closed Lost') THEN 1 ELSE 0 END), 0) * 100,
1
) || '%' AS win_rate,
ROUND(AVG(CASE WHEN opp.status = 'Closed Won' THEN DATE_PART('day', opp.close_date - opp.created_date) END)) AS avg_sales_cycle_won_days,
ROUND(AVG(CASE WHEN opp.status = 'Closed Lost' THEN DATE_PART('day', opp.close_date - opp.created_date) END)) AS avg_sales_cycle_lost_days,
ROUND(AVG(CASE WHEN opp.status = 'Closed Won' THEN opp.amount END)) AS avg_win_deal_size
FROM sales.opportunities opp
JOIN sales.reps rep ON opp.owner_id = rep.id
WHERE opp.close_date BETWEEN '2025-01-01' AND '2025-12-31'
AND opp.status IN ('Closed Won','Closed Lost')
GROUP BY rep.name
ORDER BY win_rate DESC;
This query groups closed opportunities by sales rep, counting wins and losses, and calculating each rep's win rate. It also compares average sales cycle time for won vs lost deals per rep, and average deal size of wins. This can illuminate which reps are most effective and whether some reps might be hanging onto lost causes too long.
Win Rate Calculation: Calculate overall win rate by dividing the number of Closed-Won deals by the total of Closed-Won + Closed-Lost deals in the period (exclude deals still in progress). Always interpret win rate alongside volume and context: a rising win rate is great, but make sure it's not just because you drastically reduced pipeline.
What it is:
Landing a new customer isn't the end of the journey – in SaaS, the Revenue Expansion stage looks at growing the value of existing customers through renewals, upsells, and cross-sells. Mid-market companies often rely on expansion revenue to increase Net Revenue Retention (NRR) and accelerate growth without solely depending on new logo acquisition.
High expansion revenue and NRR indicate a strong product-market fit and customer success motion – customers are finding value and investing more. In mid-market SaaS, a common benchmark for NRR is around 100-110% for solid performance, and best-in-class companies achieve 120%+ NRR.
If your NRR is below 100%, it means churn is outweighing upsells – a warning sign to improve retention or find more upsell opportunities. If expansion revenue is a small portion of total growth, your company may be too dependent on new sales – unlocking expansion could be a growth lever.
A well-trained Customer Success Manager (CSM) team can proactively identify needs and pitch upgrades. Ensure every customer has a success plan and periodic business reviews where upsell opportunities can emerge naturally.
Use product data to find which customers are ripe for expansion. If an account is consistently hitting usage limits or engaging heavily with a trial of a premium feature, that's a prime upsell candidate.
Define clear plays for common expansion scenarios: adding more user licenses, selling an add-on module, moving to a higher tier. For each, equip the team with value prop, ROI examples, and ideally customer testimonials.
To keep track of expansion and retention, your data warehouse can aggregate billing and CRM info. For example, to compute Net Revenue Retention by cohort year:
SELECT
start_year,
ROUND(
SUM(CASE WHEN year = start_year THEN arr END)::numeric, 2
) AS starting_arr,
ROUND(
SUM(CASE WHEN year = start_year + 1 THEN arr END)::numeric, 2
) AS arr_after_1_year,
ROUND(
SUM(CASE WHEN year = start_year + 1 THEN arr END)
/ NULLIF(SUM(CASE WHEN year = start_year THEN arr END), 0) * 100,
1
) || '%' AS NRR_after_1_year
FROM (
-- Example subquery: account ARR by year
SELECT
account_id,
MIN(EXTRACT(YEAR FROM start_date)) AS start_year,
EXTRACT(YEAR FROM year_month) AS year,
SUM(mrr) * 12 AS arr -- assuming we have monthly MRR data per account
FROM finance.account_mrr_history
GROUP BY account_id, year
) sub
GROUP BY start_year
ORDER BY start_year;
This example assumes you have a table of monthly recurring revenue (MRR) per account over time. It groups accounts by the year they started and then compares the ARR from that cohort in the year they started vs one year later, calculating an NRR percentage. Monitoring NRR by cohort tells you if your retention and expansion strategies are improving for newer customers versus older ones.
Net Revenue Retention (NRR): A crucial gauge of expansion. An NRR of 100% means your expansions exactly offset any churn (you retained all revenue). Above 100% means you grew revenue from your existing base (fantastic for SaaS). If NRR is below 100%, focus on improving product value and upsell offerings.
Measuring a sales-led funnel end-to-end provides the insights needed for RevOps, Data teams, and Leadership to drive predictable growth. By instrumenting each stage – Lead Acquisition, MQL, SQL, Opportunity, Pipeline Progression, Win/Loss, and Revenue Expansion – you create a common language across Marketing, Sales, and Customer Success.
Remember that metrics are most powerful when they prompt action: track them consistently, benchmark against industry standards and your own goals, and dig into the "why" behind the numbers. For a mid-market SaaS organization, the funnel metrics help allocate resources (e.g., where to invest marketing dollars, how to coach sales, where to improve product or onboarding).
Finally, iterate and improve: a sales-led motion is dynamic. As your company introduces new products or targets new markets, conversion rates and benchmarks will shift. Use your data (and the example SQL queries) to continuously monitor the health of your funnel.
Remember: The combination of unified data visibility and an action-oriented culture around these metrics will enable your team to catch issues early (like a drop in MQL-to-SQL conversion or a dip in win rates) and seize opportunities for optimization.
By following this comprehensive approach to funnel measurement, mid-market operators can better align teams, make informed decisions at each stage, and ultimately accelerate revenue growth in a sustainable, repeatable way.
Start measuring your sales-led funnel with integrated data from your CRM, marketing automation, billing system, and product analytics. Get complete visibility into your sales process and optimize every stage for maximum revenue growth.
Complete guide to measuring pure product-led growth funnels.
Learn to measure hybrid funnels combining PLG and sales-led motions.
Comprehensive metrics for sales, marketing, and customer success teams.
Learn how to report on your funnel from Seed to Series C and beyond.