> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipeline-vs-Realised Revenue Gap, HubSpot

> $ gap between deals HubSpot says are won and revenue Stripe/Shopify actually saw. This is the handoff-leakage number that gets CFOs in the r... How to read...

**Metrics type:** [Cross-Platform Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Email Marketing](/nerve-centre/connectors#connectors-by-type)

> \$ gap between deals HubSpot says are won and revenue Stripe/Shopify actually saw. This is the handoff-leakage number that gets CFOs in the room.

## At a glance

> The dollar gap between deals HubSpot says are won and revenue the commerce / billing platform actually saw. The handoff-leakage number that gets CFOs in the room. Computed as `sum(hubspot.deals[closedwon].amount in window) − sum(commerce.orders.total WHERE customer.email matches deal.primary_contact.email AND order.created_at within 30d of deal.closedate)`.

|                                     |                                                                                                                                                                                                                                                                                                      |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                  | Closed-won deal value (numerator) minus matched commerce-platform revenue from the same customer email within 30 days of close date (denominator). The card surfaces the difference in absolute terms and as % of closed-won.                                                                        |
| **Numerator (HubSpot)**             | `SUM(amount_in_home_currency)` across deals where `dealstage = closedwon` and `closedate` falls in the window. Multi-pipeline aggregation.                                                                                                                                                           |
| **Denominator (commerce platform)** | `SUM(order.total)` from Shopify (`Order.totalPrice`), BigCommerce (`total_inc_tax`), Adobe Commerce (`grand_total`), or Stripe (`charge.amount` / `invoice.amount_paid`) where the customer email matches the deal's primary-contact email AND the order was created within ±30 days of `closedate`. |
| **Email-matching scope**            | Exact-match on `email` field. Sub-aliases (e.g. `+invoice` Gmail aliases) and forwarded inboxes do not match unless explicitly configured.                                                                                                                                                           |
| **Time alignment**                  | ±30 days around closedate. A deal closed on 14 Apr 26 matches commerce orders from 15 Mar 26 to 14 May 26. This window is configurable per portal.                                                                                                                                                   |
| **Currency**                        | Both sides home-currency-normalised. Multi-currency portals see one consistent figure. FX shifts between deal close and commerce-charge can introduce small drift.                                                                                                                                   |
| **Refunds**                         | NOT subtracted on either side by default. The card optionally surfaces a refund-adjusted variant (Stripe / Shopify refunds within 90 days of order).                                                                                                                                                 |
| **Annual prepays vs MRR**           | A $12k annual deal closed today shows as $12k in numerator and \$12k in Stripe within 30 days (one-time charge). For B2C subscription DTC, monthly subscriptions land as 1/12 of the deal value per month; the gap looks large but is just timing.                                                   |
| **Sales-assist vs self-serve**      | Self-serve commerce orders not connected to a HubSpot deal contribute to denominator with no numerator. The card is meaningful only for sales-assisted deals; sales-assisted % is reported alongside.                                                                                                |
| **Time window**                     | `90D vsP`. 90 days is long enough to capture deferred recognition; the prior 90D comparison flags trend changes in handoff health.                                                                                                                                                                   |
| **Alert trigger**                   | `gap >20% of closed_won pipeline`. Above this threshold, two-thirds of the time the cause is wrong-email matching, not actual leakage.                                                                                                                                                               |
| **Roles**                           | owner, sales, finance                                                                                                                                                                                                                                                                                |

## 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 services agency at \$400k MRR running HubSpot Sales Hub plus Stripe for billing. Reading on 14 Apr 26 for the trailing 90 days (14 Jan 26 to 12 Apr 26):

| Source                                                                     | 90D figure                           |
| -------------------------------------------------------------------------- | ------------------------------------ |
| HubSpot closed-won deals (numerator)                                       | \$612,000                            |
| Stripe revenue from matched customer emails (denominator, 30D window each) | \$498,000                            |
| **Pipeline-vs-Realised Gap (this card)**                                   | **\$114,000 (18.6% of closed\_won)** |

Compared with the prior 90 days (14 Oct 25 to 13 Jan 26):

| Period       | Closed-won | Realised  | Gap       | Gap % |
| ------------ | ---------- | --------- | --------- | ----- |
| Trailing 90D | \$612,000  | \$498,000 | \$114,000 | 18.6% |
| Prior 90D    | \$584,000  | \$487,000 | \$97,000  | 16.6% |
| Year ago 90D | \$440,000  | \$416,000 | \$24,000  | 5.5%  |

Five things this picture reveals:

1. **18.6% gap sits just below the 20% alert threshold.** Trending up from 16.6% the prior 90D and 5.5% a year ago. Direction is concerning even though absolute is below threshold. Audit HS07 surfaces the YoY widening.
2. **The most-common single cause: wrong primary contact email on the deal.** Investigating the worst 10 unrealised deals shows 6 had a different billing-contact email than the primary-contact in HubSpot, the deal looks unrealised but Stripe paid against the billing email. Fix is workflow rule "set deal primary\_contact.email = invoicing email when contract sent".
3. **Two deals are real leakage, not data hygiene.** Both were \$25k MRR contracts closed in February but never invoiced; the customer-success team manually waived first-month billing as part of the contract terms. These should have been logged as deferred-revenue, not closed-won-and-uninvoiced. Pair with `Stripe MRR` to spot the missing-invoice pattern.
4. **The 5.5% year-ago gap was healthy.** A year ago the team was smaller, closed-won and invoicing were tight. Growing 90D pipeline introduced more handoff steps, more billing-contact mismatches, and more contractual nuances. The gap widening is operational, not a leakage problem. Refining the email-match logic and adding a billing-contact field would close most of the gap mechanically.
5. **The CFO conversation is about the dollar number, not the percentage.** \$114k of "won" deals not yet realised is a CFO-level cash question. Even if it is mostly billing-contact data hygiene rather than actual leakage, it sits on the CFO's reconciliation queue until each deal's invoice is matched.

## Sibling cards merchants should reference together

The gap card is meaningful only against the underlying numerator and denominator:

| Card                                                                                                           | Why pair it with Pipeline-vs-Realised                                                                                                                   |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Total Deal Pipeline Value](/nerve-centre/kpi-cards/hubspot/total-deal-pipeline-value)                         | The forward-looking pipeline. The gap measures how the realised side trails closed-won; pipeline shows the next 90D inflow.                             |
| [Deals Closing This Month](/nerve-centre/kpi-cards/hubspot/deals-closing-this-month)                           | The current-month forecast; widening of the realised gap correlates with churn-risk in this number.                                                     |
| [Stripe MRR](/nerve-centre/kpi-cards/stripe/monthly-recurring-revenue)                                         | The realised side for SaaS billing. New-business closed-won ÷ 12 should approximate Stripe MRR delta within 30 days.                                    |
| [Stripe Successful Charges](/nerve-centre/stripe/stripe_charges_successful)                                    | The realised side for one-time / annual prepay. Closed-won amount should match Stripe charge amount to within tax / FX.                                 |
| [Shopify Total Revenue](/nerve-centre/kpi-cards/shopify/total-revenue)                                         | The realised side for sales-assisted DTC. Closed-won should approximate Shopify orders from the same customer email.                                    |
| [Top Customers Without HubSpot Contact](/nerve-centre/kpi-cards/hubspot/top-customers-without-hubspot-contact) | The inverse: commerce customers with no HubSpot deal at all. Identifies sales-assist gap, customers reached without sales touch.                        |
| [Email-Attributed Commerce Revenue](/nerve-centre/kpi-cards/hubspot/email-attributed-commerce-revenue)         | The marketing-side cross-platform; spike in marketing-attributed revenue without corresponding sales-attributed revenue may indicate self-serve growth. |
| [Win Rate by Stage](/nerve-centre/kpi-cards/hubspot/win-rate-by-stage)                                         | A widening realised gap with steady win-rate suggests data-hygiene; a widening gap with falling win-rate suggests deal-quality.                         |

## Reconciling against the vendor's own dashboard

**Where to look in HubSpot:**

HubSpot does not natively expose this gap; it is a Vortex IQ-derived cross-connector metric. Closest individual views:

> [HubSpot → Reports → Sales analytics → Closed-won revenue](https://app.hubspot.com/reports-dashboard) (numerator)
> Stripe Dashboard → Reports → Net Volume / Shopify Admin → Analytics → Sales (denominator)

The merchant has to manually reconcile these two numbers; this card automates that reconciliation per primary-contact email.

**Why our number may legitimately differ from the merchant's expectation:**

| Reason                               | Direction            | Why                                                                                                                                                                       |
| ------------------------------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Email-mismatch**                   | Gap larger           | Primary-contact email in HubSpot differs from the billing email used in Stripe / Shopify. Most-common cause; fix via workflow that syncs billing-contact email.           |
| **Annual prepay vs MRR recognition** | Gap larger initially | A $12k annual deal lands as $1k MRR over 12 months; realised side trails by 11 months for 11/12 of the deal value. The card optionally smooths annual deals by spreading. |
| **Refunds**                          | Gap smaller          | Refunds reduce the realised side without changing closed-won. To compare apples-to-apples enable the refund-adjusted variant.                                             |
| **Discount / negotiation**           | Gap larger           | Sales rep records full-list deal amount; finance records discounted invoice. Common in enterprise contracts.                                                              |
| **Multi-currency**                   | Gap drift            | FX moves between deal close and invoice payment can introduce small drift. Usually \<2% gap impact.                                                                       |
| **Time alignment**                   | Gap larger           | Deals with closedate near window-edge may have realisation outside the 30D matching window. Configurable extension to 60D or 90D for long-cycle businesses.               |

**Cross-connector reconciliation:**

This card IS the cross-connector view. The relevant comparisons:

| Card                                                                           | Expected relationship                                                                                             | What causes legitimate divergence                                                                  |
| ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [Stripe MRR](/nerve-centre/kpi-cards/stripe/monthly-recurring-revenue)         | New-business closed-won ÷ 12 should approximate the Stripe MRR delta within 30 days                               | Annual prepays land as one-time charges, expansions land mid-month at proration.                   |
| [Shopify Total Revenue](/nerve-centre/kpi-cards/shopify/total-revenue)         | Closed-won (for sales-assisted DTC) should approximate sales-assisted Shopify orders from the same customer email | Self-serve checkout orders never reach a HubSpot deal; coupon-driven orders may not match exactly. |
| [BigCommerce Total Revenue](/nerve-centre/kpi-cards/bigcommerce/total-revenue) | Same shape                                                                                                        | Same reasons.                                                                                      |

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple CRM-billing combinations)</em></summary>

  The pipeline-vs-realised concept is universal across CRM-and-billing pairings. Same shape on:

  * [`salesforce.sf_pipeline_vs_realised`](/nerve-centre/salesforce/sf_pipeline_vs_realised) (when added)
  * [`pipedrive.pd_pipeline_vs_realised`](/nerve-centre/pipedrive/pd_pipeline_vs_realised) (when added)

  The 20% gap threshold is the cross-platform default; tighter in mature B2B SaaS, looser in services.
</details>

## Known limitations / merchant FAQs

**Why is my deal pipeline number different from my dashboard?**
This card is closed-won (the realised side of pipeline), not open-pipeline. Open pipeline lives in `Total Deal Pipeline Value`. The two are independent; rising open-pipeline says future revenue, rising realised-gap says current handoff issues.

**My gap is 30%, what is wrong?**
Three usual causes: (a) primary-contact email on deals does not match the billing email used in Stripe / Shopify. Most-common; fix is a workflow rule. (b) Annual prepays where realisation trails by months. Switch to the spread-by-month variant. (c) Real leakage, deals marked closed-won that were never invoiced (manual waiver, contract amendment). The deal-level drill-down identifies which.

**HubSpot vs commerce platform attribution, who is right?**
For revenue accounting, the commerce / billing platform is always right. HubSpot's closed-won is a sales-team commitment; Stripe / Shopify is the cash. This card surfaces the gap between the two so finance can reconcile.

**List-segment lag, does it affect this?**
No. This card uses CRM deals and commerce orders, not list-based marketing data. List lag is irrelevant.

**Lifecycle-stage backfill, does it touch this card?**
Indirectly. If a backfill changes lifecyclestage to customer for contacts who never bought, it does not affect this card (which uses deals, not contacts directly). The deal-level view is unchanged.

**Deal-stage vs deal-amount weighting, what does this card use?**
Closed-won is fully realised, no probability weighting. The card sums raw `amount`. The forward-looking forecast cards apply probability; this is the rear-view mirror.

**Multi-portal aggregation, how does it work?**
One card per portal, one commerce platform per portal. If a merchant has multiple HubSpot portals each with its own commerce platform, each is reported separately. Cross-portal aggregation is not supported because the email-matching logic is per-portal.

**Sequence enrolment vs send timing, does it affect deals?**
No. Sequences are 1-to-1 outreach, separate from deals. The card uses deal closedwon events, not sequence engagements.

**Why is my deal pipeline number different from my dashboard playbook?**
The dashboard playbook may show closed-won as "this month" while this card uses 90D rolling. Re-baseline the playbook to a 90D window and the numbers should match.

**Today-volatility, why does this swing?**
Closed-won events fire when reps mark deals; commerce charges fire when customers pay. Both happen continuously. Daily swings of 1-3% are normal; >5% means a large deal closed-won today or a large invoice was just paid. The 90D rolling window smooths most volatility.

***

### Tracked live in Vortex IQ Nerve Centre

*Pipeline-vs-Realised Revenue Gap* is one of hundreds of KPI pulses Vortex IQ tracks across HubSpot and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English.

[Start for free](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
