Stripe is your billing system. HubSpot is your CRM and marketing automation. The integration ties them together so subscription events drive deal updates, MRR roll-ups, churn signals, and lifecycle stage transitions. HubSpot Payments covers the basics. For real subscription depth, you wire Stripe webhooks into HubSpot workflows. Don't try to use HubSpot as your revenue book of record. That's an ERP's job.
What HubSpot Payments gets you out of the box
HubSpot Payments connects Stripe as the processor for one-time payments and basic subscriptions created inside HubSpot. Quotes turn into payment links. Successful charges create deals. Subscriptions show up as recurring deals. Refunds and cancellations sync back. For a simple SaaS with one or two pricing tiers and no plan changes, this is enough.
The break point is anywhere your billing model has complexity: usage-based pricing, mid-cycle upgrades with proration, multi-product subscriptions, custom invoicing, dunning beyond Stripe's defaults. None of those flow cleanly through the native connector.
The webhook architecture for real SaaS
When the native connector isn't enough, you wire it directly. Stripe sends webhook events (customer.subscription.created, customer.subscription.updated, invoice.payment_succeeded, invoice.payment_failed, customer.subscription.deleted) to a middleware service. The middleware normalizes the event and writes to HubSpot via the API. HubSpot workflows then trigger off the property change.
The middleware can be a third-party tool (Workato, Tray, Zapier for low-volume), HubSpot Operations Hub custom code actions (good for medium complexity), or a custom service you host (best for high-volume or sensitive billing logic). We pick based on event volume, latency requirements, and the engineering team's capacity to maintain it.
The HubSpot data model for subscriptions
Standard property model we install on every SaaS engagement, on the deal object:
- · Stripe subscription ID (one-line reference back to source of truth)
- · Subscription status (active, past_due, canceled, paused)
- · MRR (calculated from current line items)
- · ARR (MRR × 12)
- · Plan (the pricing tier)
- · Billing cycle anchor (when the next charge happens)
- · Net dollar retention indicator (expansion vs contraction since last period)
- · Last payment status (succeeded, failed, refunded)
- · Trial end date (for in-trial subscriptions)
Roll up MRR and ARR at the company level for account-level reporting. NRR follows from the rollup if you track expansion vs contraction across periods.
Churn signals that actually trigger action
The integration is most valuable when subscription state drives go-to-market action. Three signals every SaaS should wire:
Payment failed. invoice.payment_failed event. Push into HubSpot, trigger a workflow that creates a CSM task, kicks off a re-engagement sequence, alerts the AE in Slack if the contract value is above a threshold. Don't let Stripe's default dunning be the only response.
Subscription canceled. customer.subscription.deleted. Update lifecycle stage to Churned, drop into a win-back sequence (90 days later, 180 days later), feed into churn analytics dashboards.
Plan downgrade. customer.subscription.updated where the new plan is smaller. Often a leading indicator of churn. Trigger a CSM check-in within 7 days. We've seen 30%+ of plan downgrades reverse when caught early.
The five most common failure modes
1. MRR drift between Stripe and HubSpot. Caused by proration events that don't sync cleanly. Fix: reconcile monthly with a scheduled audit script that pulls Stripe's billing data and overwrites HubSpot if drift exceeds 5%.
2. Webhook delivery failures. Stripe retries for 3 days, then drops. If your middleware is down, you lose events silently. Fix: idempotent processing plus a daily reconciliation job that catches missed events.
3. Trial subscriptions polluting MRR. A common bug: trial subs show up as $0 MRR, which is fine, but counted in the active subscription count, which inflates customer numbers. Fix: explicit filter on subscription status in all dashboards.
4. Multi-product subscriptions. Stripe lets a single subscription have multiple line items (e.g., base plan + add-on). HubSpot deals don't natively model this. Fix: either flatten to total MRR (lossy but simple) or use a separate custom object for line items.
5. Currency conversion. Multi-currency Stripe accounts need normalization to a base currency for reporting. HubSpot has limited multi-currency support. Fix: store both the native currency amount and a USD-normalized field, with a daily rate refresh.
A vertical SaaS customer reduced involuntary churn from 4.2% to 1.8% by wiring Stripe payment_failed events into a 5-touch HubSpot dunning sequence. Net dollar retention improved by 11 points within two quarters.
FAQ
Does HubSpot have a native Stripe integration?
Yes, HubSpot Payments includes Stripe as a payment processor. The native integration covers checkout, payment links, and basic subscription syncing. For full subscription lifecycle management (proration, dunning, custom billing periods, revenue recognition), you'll need a deeper integration via webhooks or a middleware tool.
How does Stripe sync to HubSpot deals?
Each Stripe subscription creates or updates a HubSpot deal. New subscriptions become 'closed-won' deals. Renewals can either update the existing deal or create new ones depending on architecture. Cancellations flag the deal as churned and trigger a workflow that updates the contact's lifecycle stage.
Can I track MRR and ARR in HubSpot?
Yes, with calculated properties. Each deal has a monthly recurring revenue field synced from Stripe. Roll up at the company level for ARR. The trick is handling plan changes, prorations, and discounts cleanly so the numbers reconcile with Stripe's own analytics. We have a standard property model we install on every SaaS engagement.
What about churn signals?
Stripe webhook events (customer.subscription.deleted, invoice.payment_failed, customer.subscription.updated with status=past_due) get pushed into HubSpot as workflow triggers. From there you can flag the contact for retention outreach, drop them in a re-engagement sequence, or alert the CSM via Slack.
How do I handle dunning in HubSpot?
Stripe has its own dunning sequences (smart retries) but they're transactional emails. For high-touch dunning (like SaaS in the $5K+ ARR range where you want a CSM to intervene before card decline), we wire payment_failed events into HubSpot to trigger a sequence of human-in-the-loop tasks.
Can the integration handle revenue recognition?
HubSpot is not an ERP. For accrual-basis revenue recognition (ASC 606 compliance), the right path is Stripe → middleware (e.g., Maxio, Ordway) → ERP. HubSpot can show booked deal value and current MRR, which is enough for sales and marketing reporting. Don't try to make HubSpot your revenue book of record.
How long does this integration take to ship?
Standard subscription sync with deal creation, MRR rollup, and churn signals runs 2 to 4 weeks. Custom dunning sequences and complex billing models add 1 to 2 weeks. We've shipped this 60+ times across our SaaS customer base.
What's the typical cost?
Fixed-fee project work, typically $8K to $25K depending on complexity. Custom dunning workflows, multi-product subscriptions, or non-standard billing cycles push it higher. Specifics on the strategy call.
