The full MQL → SQL → opportunity → customer (with first ecom purchase) funnel. Drops at any step expose where the go-to-market funnel is leaking.
At a glance
MQL → Paid Customer Funnel is the end-to-end go-to-market funnel, stitched across HubSpot lifecycle stages and commerce reality. It walks contacts from marketing-qualified lead, through sales-qualified lead, to opportunity, and finally to customer confirmed by a first commerce purchase. Each step shows the count entering and the conversion rate to the next, so the single biggest leak in the funnel is visible at a glance. The final step is the honest one: it does not trust the lifecycle “customer” label alone, it requires an actual first ecom order, which is what makes this a cross-channel card rather than a CRM-only funnel.
| What it counts | The contact count at each funnel step (MQL, SQL, opportunity, customer-with-first-purchase) over the window, plus the step-to-step conversion rate. The final step is gated on a matched first commerce order, not just a lifecycle label. |
| Stage source | HubSpot lifecycle stages for the MQL, SQL, and opportunity steps. The customer step is validated against a matched first commerce-platform order for the same contact. |
| Why gate the last step on a real order | Lifecycle “customer” can be set by automation, manual edit, or a deal-close without a payment ever landing. Requiring a first ecom purchase makes the funnel’s bottom number mean paid, not labelled. |
| Cohort vs snapshot | The funnel can be read as a window cohort (contacts that entered MQL in the window and how far they got) or as a current-state snapshot, depending on the profile. The default presents the window view so leaks are tied to recent performance. |
| Step-drop interpretation | A sharp drop between two steps localises the problem: MQL-to-SQL drop points at lead quality or sales actioning; opportunity-to-customer drop points at close-rate or fulfilment; SQL-to-opportunity drop points at qualification rigor. |
| Currency | number (counts and rates); the customer step ties to ecom orders whose value other cards quantify. |
| Time window | 90D. Long enough for a full funnel transit on most B2B and considered-purchase cycles. |
| Alert trigger | End-to-end MQL-to-customer rate below 5%. |
| Roles | owner, marketing, finance. Marketing owns the top of the funnel, finance owns the paid-customer bottom, the owner reads the whole path for go-to-market health. |
Calculation
Calculated automatically from your HubSpot data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A B2B equipment brand on Marketing Hub plus Sales Hub Professional with a Shopify storefront for first orders and reorders. Reading on 20 May 26 over the trailing 90 days, following the MQL cohort that entered in the window.| Step | Count | Conversion to next |
|---|---|---|
| MQL | 3,200 | 38% to SQL |
| SQL | 1,216 | 52% to opportunity |
| Opportunity | 632 | 41% to customer |
| Customer (first ecom purchase) | 259 | end of funnel |
- The first step is the leakiest. Only 38% of MQLs become SQLs. That is the single largest drop in absolute terms (3,200 down to 1,216). Either MQL scoring is admitting too many unready contacts, or sales is not working the handoff. This is where the highest-leverage fix lives.
- Mid-funnel is healthy. SQL-to-opportunity at 52% and opportunity-to-customer at 41% are respectable for a considered B2B purchase. Sales qualification and close are working once a lead survives the first step.
- The end-to-end 8.1% clears the alert. The card’s alert fires below 5%; at 8.1% the go-to-market funnel is functioning, but the MQL-to-SQL leak caps it well below where it could be.
- The paid-customer gate matters here. If the funnel had trusted the lifecycle “customer” label instead of requiring a first ecom order, the customer count would have read higher, because some contacts were marked customer on a deal-close that never produced a payment. The cross-channel gate strips that phantom and gives the true paid count.
- The fix is a top-of-funnel experiment, not a bottom-of-funnel one. Because mid and lower funnel convert well, pouring effort into close-rate would move little. Tightening MQL criteria so fewer but better leads reach sales, then re-measuring SQL conversion, is the experiment most likely to lift the end-to-end rate.
Sibling cards merchants should reference together
This is the master go-to-market funnel; its individual steps each have a dedicated card. Pair with:| Card | Why pair it with MQL → Paid Customer Funnel |
|---|---|
| MQL → SQL Conversion Rate (30d) | The first-step detail. When this funnel shows an MQL-to-SQL leak, that card is where you watch the fix land. |
| SQL → Customer Conversion Rate (30d) | The lower-funnel close-rate, the bottom-step companion to this end-to-end view. |
| Contact Lifecycle Stage Distribution | The stock view behind the flow. A bulge at one stage in the distribution is a leak at the next step in this funnel. |
| Lifecycle Stage vs Ecom Revenue | The card that explains the paid-customer gate: it finds the labelled-customer-no-revenue contacts this funnel correctly excludes. |
| MQLs Not Advanced After 60d | The stalled-cohort detail for the MQL step, showing where the first-step leak accumulates. |
| Lead → MQL Conversion % | The step above the funnel, useful for telling whether the MQL pool is too large at the source. |
Reconciling against HubSpot
Where to look in HubSpot: HubSpot can build a lifecycle funnel report, but its customer step relies on the lifecycle label, not on a confirmed commerce purchase, so the bottom number differs from this card by design. The closest native views:HubSpot → Reports → Analytics tools → Lifecycle for a stage-to-stage funnel, where available on the plan. HubSpot → CRM → Contacts filtered by lifecycle stage to count each step manually. Store admin (Shopify Admin → Customers / Analytics) to confirm which contacts actually placed a first order, the data HubSpot’s own funnel cannot incorporate.The merchant traditionally builds the CRM funnel in HubSpot and reconciles the paid-customer step separately against store data; this card fuses the two into one funnel. Why our funnel may differ from HubSpot’s lifecycle report:
| Reason | Direction | Why |
|---|---|---|
| Paid-customer gate | Our customer count lower | We require a matched first ecom order; HubSpot’s funnel counts anyone labelled customer, including phantom or unpaid customers, so its bottom step reads higher. |
| Cohort vs snapshot | Either | We default to a window cohort following MQLs that entered in the period; a HubSpot snapshot report counts current stage membership, which mixes cohorts. |
| Stage backfill | Spike or dip | A bulk lifecycle backfill during the window shifts step counts; the funnel can look jumpy on backfill days. |
| Email-match precision | Our customer count lower | A buyer whose store email differs from the contact email fails the order match and is not credited as paid, even though they did purchase. |
| Time zone | Boundary effect | Stage-change and order timestamps align to different time zones; edge-case period boundaries move a few contacts. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
| Shopify Total Revenue | The customers confirmed at the funnel’s base are a subset of all store buyers, specifically those that came through the MQL path. | Self-serve buyers who never entered the CRM funnel are real store revenue but never appear in this funnel, so the funnel’s customer count is always below total buyer count. |
| Lifecycle Stage vs Ecom Revenue | The labelled-customer count there minus this funnel’s paid-customer count approximates the phantom-customer population. | Timing and match differences move contacts between labelled and confirmed states across reads. |
Known limitations / merchant FAQs
Why is my customer count lower here than in HubSpot’s funnel report? Because this funnel requires a real first commerce order to count someone as a customer, while HubSpot’s funnel trusts the lifecycle label. Any contact marked customer without an actual paid order, by automation, manual edit, or a deal-close that never collected payment, counts in HubSpot but not here. The gap between the two is your phantom-customer population, which is itself worth investigating. Which step should I fix first? The one with the largest drop, measured in absolute contacts lost, not just percentage. A 60% leak on a step that only handles a few hundred contacts matters less than a 40% leak at the top where thousands enter. Find the biggest absolute loss and start there. Is this a cohort or a current snapshot? By default it follows the cohort that entered MQL within the window, so the conversion rates reflect recent funnel performance rather than the all-time backlog. The profile can switch it to a current-state snapshot if you prefer that read. A contact bought from our store but does not show as a customer in the funnel. Why? Most likely an email mismatch between the store order and the CRM contact, so the first-purchase match failed. The same data gap is what the Contact Properties Missing vs Ecom Data and Lifecycle Stage vs Ecom Revenue cards are built to surface. The end-to-end rate dropped sharply this week. Is the funnel broken? Check for a lifecycle backfill or a large import during the window first, since either can distort step counts temporarily. A genuine sustained drop, after ruling those out, points to a real leak, and the step-to-step rates will tell you where. Does this card change any contact or stage? No. It is read-only. It measures the funnel; advancing or correcting contacts is done in HubSpot or via workflows you build. Why is the alert at a 5% end-to-end rate? Five percent is a generic floor below which a paid-customer funnel is clearly leaking badly for most considered-purchase businesses. The right threshold varies enormously by model and price point, so tune it to your own historical baseline in the Sensitivity tab. Action playbook:- Read the step-to-step rates and find the largest absolute drop.
- Open the dedicated card for that step (MQL-to-SQL or SQL-to-customer) to confirm and watch the fix.
- If the MQL-to-SQL step leaks, test tighter MQL scoring or a faster sales-handoff routing.
- If the paid-customer step is far below the labelled-customer count, investigate the phantom-customer gap with the lifecycle-versus-revenue card.
- Re-measure the same cohort after a full funnel cycle to confirm the end-to-end rate moved.