Cometly
AcademyModule 02 · Sales-Led Growth Reports
SLGSetupLesson 2.3·12 min read

Mapping HubSpot deal stages into Cometly events

MQL, SQL, Demo, Closed-Won — wired in HubSpot, surfaced in Cometly.

Wiring HubSpot deal stages into Cometly events is the single most important setup step for SLG customers. Every report in module 02 depends on this mapping being correct — and getting it right takes about 30 minutes if you follow the right pattern.

Why this matters

If your MQL event fires on every form fill, it’s the same as your Lead event — and your Pipeline Stages by Source report becomes useless. The whole point of an MQL is to mark a contact who’s actually marketing-qualified, which is a deal-stage transition in HubSpot, not a form action.

Section 01

The standard mapping

Most B2B SaaS teams end up with the same six events mapped from HubSpot: Lead (form fill on the marketing site), MQL (lifecycle stage change), SQL (lifecycle stage change), Demo Booked (Calendly or Chili Piper webhook), Opportunity (deal pipeline stage), and Closed-Won (deal pipeline stage with deal amount).

Each event uses 'Deal Stage Updated' or 'Lifecycle Stage Updated' as the trigger inside Cometly’s HubSpot integration. The trigger fires when a contact or deal moves into the matching stage — once per contact, not per form fill.

  • Lead — Form Submission trigger, on the contact
  • MQL — Lifecycle Stage Updated → MQL
  • SQL — Lifecycle Stage Updated → SQL
  • Demo Booked — Webhook from Calendly or Contact Property change
  • Opportunity — Deal Stage Updated → 'Opportunity' (or your stage name)
  • Closed-Won — Deal Stage Updated → 'Closed Won' with Amount mapped to gross revenue
Section 02

Edge cases

If you run multiple deal pipelines (SMB, Mid-Market, Enterprise), filter each event to a specific pipeline so the numbers don’t collide. If you use a custom MQL definition (e.g. 'downloaded a product-specific brochure OR booked a demo'), build that logic in HubSpot as a workflow that updates the lifecycle stage, then have Cometly listen on the lifecycle stage change.

Resist the urge to fire MQL on the form submission itself. The whole reason you have a lifecycle stage transition is to filter out junk leads. Letting MQL fire on every form makes the entire downstream funnel meaningless.

Common pitfalls

What to watch for.

  • Firing MQL on every form fill

    MQL becomes Lead with a different name. Use the lifecycle stage transition, not the form action.

  • Forgetting to map deal amount on Closed-Won

    Without an amount, ROAS calculates as zero. Always map the HubSpot Amount property to gross revenue.

  • Mixing pipelines in a single event

    If SMB and Enterprise deals share an event, your CAC averages will be meaningless. Filter by pipeline.

  • Skipping a back-test

    Run the new mapping against the last 30–60 days of HubSpot data and reconcile to within 95% of HubSpot’s own reports before trusting it.

Key takeaways

Recap.

  • Create a Cometly event for each meaningful stage (MQL, SQL, Demo, Opp, Closed-Won)
  • Use 'Deal Stage Updated' as the trigger from the HubSpot integration
  • Map deal amount as gross revenue on Closed-Won so ROAS calculates correctly
  • Avoid double-counting by filtering Lead events out of MQL reports
  • Use Deal pipeline filters when you have separate sales motions (e.g. SMB vs. Enterprise)
Put it into practice

Build this report inside your own Cometly workspace.

Most lessons can be wired up in a single 30-minute onboarding call. Connect your stack live and walk away with a working dashboard.