What this means for your store
HubSpot deals hold amount, close date, pipeline stage, and links to contacts and companies. For long-cycle B2B and high-ticket wholesale, CRM revenue beats GA4 purchase because the deal updates when the contract signs - sometimes weeks after the first site visit. Marketing should report closed won amount by contact acquisition fields, not form submissions or inflated quote-page values alone.
Scenario on a real storefront
A commercial HVAC dealer attributes Q1 install revenue to campaigns. Deals move Qualified → Proposal → Closed won; marketing filters on contacts whose first touch carried Google Ads UTMs:
# HubSpot → Sales → Deals
dealname: "Riverside Mall - 8 rooftop units"
amount: 212000
dealstage: closedwon
closedate: 2026-03-22
# Associated contact (acquisition)
utm_source: google
utm_campaign: brand_search_q1
lifecyclestage: customer
# Report: Custom report
Metric: Sum of amount where dealstage = closedwon
Group by: Contact utm_campaign
Date filter: Close date
# Forecast lens - weighted pipeline
Σ (amount × stage_probability) by expected close month
# Wholesale ecommerce: sync first B2B order as deal OR use line-item custom object - pick one
What to do next
- Export closed-won by utm_campaign monthly for paid ROAS - use CRM deal amount, not GA4 revenue on configurators that never charge a card.
- Tag new business vs expansion deals; a renewal should not credit this quarter's top-of-funnel Meta campaign.
- Match deal close date to finance invoicing - a one-day skew makes two campaigns fight over the same revenue in quarterly reviews.
Bottom line
Pipeline dollars live in HubSpot deals grouped by how the contact arrived. Report closed-won by campaign and keep renewal revenue out of new-business credit.