Building a Stripe + HubSpot Dunning Workflow
Learn how to build an automated dunning workflow that connects Stripe payment data with HubSpot CRM to recover failed payments, reduce involuntary churn, and keep your revenue team in the loop.
Every SaaS company runs on two systems that rarely talk to each other. Stripe holds your payment data — subscriptions, invoices, failed charges, MRR. HubSpot holds your customer relationships — deal stages, contact owners, lifecycle status, every email your CS team has ever sent. When a payment fails, the information your team needs to respond effectively is split across both platforms. Bridging that gap isn't just a nice-to-have — it's the foundation of any dunning workflow that actually recovers revenue.
Without a live connection between your billing system and your CRM, dunning becomes a guessing game. Automated emails fire blindly, CS reps don't know which accounts are at risk, and high-value customers get the same treatment as free trial leftovers. The fix isn't more email templates — it's better data flow.
The Problem: Data Silos Kill Dunning Effectiveness
Here's the scenario most SaaS teams are living with today: a customer's credit card fails in Stripe. The subscription moves to past_due. Stripe's built-in retry logic kicks in, maybe a basic dunning email fires. Meanwhile, in HubSpot, the contact record looks perfectly healthy. The deal is marked "Closed Won," the lifecycle stage says "Customer," and the assigned CSM has no idea anything is wrong.
This disconnect creates real problems:
- Payment failures happen in Stripe, but customer context lives in HubSpot. Your CS team manages relationships in HubSpot, not in the Stripe dashboard. If they can't see payment status where they work, they can't act on it.
- At-risk accounts stay invisible until it's too late. By the time someone manually checks Stripe or exports a CSV, the grace period has expired and the subscription has been canceled.
- Manual data exports are always stale. Even teams that periodically sync Stripe data to HubSpot via spreadsheets are working with information that's hours or days old. In dunning, timing is everything.
- One-size-fits-all outreach wastes your team's energy. Without MRR data in HubSpot, there's no way to prioritize. A $50/month account and a $5,000/month account get the same automated email — or worse, the same lack of follow-up.
The result is preventable churn. Not because your product failed, but because your data infrastructure did.
What a Modern Dunning Workflow Looks Like
An effective automated dunning workflow connects payment events to CRM actions in real time. Here's the flow at a high level:
- A payment fails in Stripe. The subscription status changes to
past_due, and the invoice is marked as failed. - Payment data syncs to HubSpot automatically. The contact's custom properties update — subscription status, MRR, failure count, last payment date — within minutes, not days.
- HubSpot workflows trigger based on the updated data. Different workflows fire depending on the customer's value, segment, and failure history.
- The right team takes the right action. Low-value accounts get automated email sequences. High-value accounts get a personal call from their CSM. Deal stages update to reflect the risk.
- Payment is recovered. When the charge succeeds, the data syncs back, workflows adjust, and the account returns to a healthy state.
Every step depends on the one before it. The entire system falls apart if step two — the data sync — is unreliable or delayed. That's why getting the Stripe HubSpot integration right is the single most important piece of the puzzle.
Step 1: Sync Stripe Payment Data to HubSpot
The foundation of your dunning workflow is a reliable, real-time connection between Stripe and HubSpot. You have three main options:
- Build a custom webhook integration. You can listen for Stripe webhook events (
invoice.payment_failed,customer.subscription.updated, etc.) and write code that pushes the relevant data to HubSpot via its API. This gives you full control, but the maintenance burden is significant. You'll need to handle retries, error logging, schema mapping, and edge cases like subscription upgrades mid-dunning cycle. - Use a general-purpose connector. Tools like Zapier or Make can link Stripe events to HubSpot actions. They work for simple use cases, but get brittle at scale. Mapping MRR calculations, handling multiple subscriptions per contact, and keeping data consistent across both platforms often exceeds what a no-code connector can handle gracefully.
- Use a purpose-built tool like Syncfy. Syncfy is designed specifically for the Stripe-to-HubSpot sync problem. It keeps MRR, subscription status, payment dates, and billing history updated on HubSpot contact records automatically — no webhook code or fragile Zap chains required. Because it understands Stripe's data model natively, it handles edge cases like prorations, multi-subscription contacts, and plan changes out of the box.
Whichever path you choose, make sure these data points are flowing into HubSpot:
- Monthly Recurring Revenue (MRR) — the dollar value at stake for every at-risk account
- Subscription status —
active,past_due,canceled,trialing - Last payment date — so your team knows how long the account has been in a failed state
- Payment failure count — to distinguish a first-time failure from a chronic issue
Step 2: Create HubSpot Contact Properties for Payment Data
Before your workflows can act on Stripe data, HubSpot needs custom properties to store it. Navigate to Settings → Properties → Contact Properties and create the following:
stripe_mrr(Number) — Stores the contact's current MRR in your base currency. This is the property you'll use to segment and prioritize dunning outreach.subscription_status(Dropdown) — Values:active,past_due,canceled,trialing,unpaid. This drives your primary workflow enrollment triggers.last_payment_date(Date) — The date of the most recent successful charge. Useful for calculating how long an account has been delinquent.payment_failure_count(Number) — Increments with each consecutive failed payment attempt. Helps distinguish a one-time card issue from a deeper problem.
If you're using Syncfy, these properties are created and mapped automatically during setup. For custom integrations, make sure the internal property names match what your sync logic expects — mismatches here are a common source of silent failures.
Step 3: Build HubSpot Workflows for Dunning
With live payment data in HubSpot, you can build workflows that respond to billing events the same way you'd respond to any other CRM trigger. Here are three workflows every revenue operations team should have:
Workflow 1: Automated Dunning Email Sequence
- Trigger:
subscription_statuschanges topast_due - Actions:
- Enroll the contact in a dedicated dunning email sequence
- Email 1 (immediate): "We had trouble processing your payment — here's how to update your billing info"
- Email 2 (day 3): "Your account is still active, but we need your updated payment details to keep it running"
- Email 3 (day 7): "Final reminder — update your payment method to avoid losing access"
- Unenrollment trigger:
subscription_statuschanges back toactive
Workflow 2: High-Value Account Escalation
- Trigger:
subscription_statusequalspast_dueANDstripe_mrris greater than $500 - Actions:
- Create a task assigned to the contact's owner: "High-MRR account has a failed payment — reach out personally"
- Send an internal notification to the CS team Slack channel
- Update the deal stage to "At Risk"
Workflow 3: Payment Recovery Confirmation
- Trigger:
subscription_statuschanges frompast_duetoactive - Actions:
- Send a "Thank you — your payment is confirmed" email
- Update the deal stage back to "Customer"
- Log an activity note: "Payment recovered on [date]"
- Remove any open tasks related to the failed payment
These three workflows cover the core dunning lifecycle: detect, respond, and confirm. You can layer in additional branches — different sequences for different plan tiers, escalation paths for accounts with high payment_failure_count, or re-engagement campaigns for accounts that churn despite dunning.
Step 4: Segment and Prioritize by Revenue Impact
Not every failed payment deserves the same response. With MRR data synced to HubSpot, you can build dunning workflows that allocate resources proportionally:
- Enterprise accounts ($1,000+ MRR): Personal outreach from the account owner within 24 hours. These accounts justify a phone call, a custom email, and a follow-up meeting if needed. A single recovered enterprise account can pay for months of tooling.
- Mid-market accounts ($200–$1,000 MRR): Semi-personalized email from the CSM, plus automated sequence as a safety net. Create a task if the payment isn't recovered within 48 hours.
- Long-tail accounts (under $200 MRR): Fully automated email sequence with a self-service payment update link. No human intervention unless the contact replies or engages with support.
This tiered approach ensures your team spends time where it has the most impact. It also keeps your automated sequences from feeling impersonal to your most important customers — the ones who expect a relationship, not a form letter.
Step 5: Measure and Optimize
A dunning workflow isn't something you set and forget. Track these metrics monthly and iterate:
- Recovery rate by segment. What percentage of
past_duesubscriptions return toactivewithin your grace period? Break this down by MRR tier, plan type, and failure reason. - Time to recovery. How many days does it take, on average, to recover a failed payment? Shorter is better — every day in
past_dueis a day closer to cancellation. - Workflow performance. Which email in your sequence drives the most payment updates? Which subject lines get opened? Use HubSpot's built-in email analytics to A/B test timing, copy, and CTAs.
- Escalation effectiveness. For high-value accounts that get personal outreach, what's the recovery rate compared to automation-only? This tells you whether the human touch is worth the time investment.
- Churn attribution. Of the accounts that ultimately cancel, how many went through your full dunning workflow? If accounts are churning before your sequence completes, your timing needs adjustment.
Review these numbers regularly and tighten the workflow. Small improvements in recovery rate compound quickly when applied across your entire customer base.
Why This Approach Works
The power of a Stripe HubSpot integration for dunning comes down to three things:
- It combines automated efficiency with human judgment. Machines handle the routine follow-ups. Humans step in for the accounts that matter most. Neither approach works well alone — together, they cover the full spectrum.
- It uses real-time data, not stale exports. When payment status updates in HubSpot within minutes of a Stripe event, your workflows react while the failure is still fresh. That immediacy directly improves recovery rates.
- It scales with your customer base. Whether you have 100 paying customers or 10,000, the workflow logic stays the same. Syncfy keeps the data flowing, HubSpot handles the automation, and your team focuses on the exceptions that need a human touch.
This is the core principle behind modern revenue operations: connect your systems so your team can act on the right data at the right time, without manual effort or context switching.
Conclusion
Failed payments don't have to mean lost customers. By connecting Stripe payment data to HubSpot and building targeted dunning workflows, you create a recovery system that's both automated and personalized — one that catches every at-risk account, prioritizes by revenue impact, and puts the right information in front of the right people at the right time.
The hardest part of this entire setup is step one: getting reliable, real-time Stripe data into HubSpot. Once that foundation is in place — whether you build it yourself or use a tool like Syncfy to handle it — everything else is workflow configuration. The data does the heavy lifting.
Start with the three core workflows outlined above, measure your recovery rate, and iterate from there. Every percentage point improvement in payment recovery drops straight to your bottom line.