
How to Map Stripe Subscription Status to HubSpot Lifecycle Stages
When a customer's subscription status changes in Stripe, your HubSpot lifecycle stages should update to match. But without the right setup, trial conversions, churns, and upgrades happen in Stripe while your CRM data stays out of date.
ClearSync connects Stripe subscription data directly to HubSpot, so you can update things like Lifecycle Stage automatically when customers convert, upgrade, downgrade, or churn.
This guide walks you through the full mapping process: defining your Stripe status-to-lifecycle logic, building the contact and company workflows, handling companies with multiple subscriptions, and optionally automating deal creation for revenue reporting. Throughout, your workflows own the lifecycle stage, a deliberate choice we explain in Steps 5 and 6.
Quick Guide: How to Map Stripe Status to HubSpot Lifecycle Stages in 7 Steps
Define your Stripe-to-lifecycle mapping table: decide how each Stripe status and MRR value maps to a HubSpot lifecycle stage.
Set up a Stripe/HubSpot subscription data sync: connect status and MRR data to HubSpot using ClearSync or a homegrown solution.
Create Segments for each contact lifecycle group: build HubSpot Contact Segments from ClearSync data.
Configure the contact lifecycle workflow: branch on the segments, in order, and set the contact's stage.
Set company lifecycle from company rollups: give companies their own aggregated view and their own workflow, so 1:many subscriptions within Companies resolve correctly.
(Optional) Build Closed Won deal automation: create deals when subscriptions become paid, for pipeline and revenue reporting.
Test and validate your mappings: run test subscriptions through each status to verify updates.
How to Map Stripe Subscription Statuses to HubSpot Lifecycle Stages
This section walks through each step in detail, from defining your mapping logic to testing the finished workflows.
Step 1: Define Your Stripe-to-Lifecycle Mapping Table
Before building any workflows, create a clear mapping between Stripe subscription data and HubSpot lifecycle stages. The key nuance most teams miss: an "Active" subscription is not automatically a Customer. A company on a free active plan is a Subscriber, not a paying Customer — so your mapping has to consider MRR, not just status.
Here's a starting point you can adjust to fit your model:
Stripe Subscription Data | HubSpot Lifecycle Stage |
|---|---|
Trialing | Opportunity (optionally filtered by demonstrated buying intent) |
Active, $0 MRR (free plan) | Subscriber |
Active, > $0 MRR (paying) | Customer |
Canceled, with prior paid history | Former Customer (custom Lifecycle Stage) |
Adding a custom Former Customer stage keeps churned accounts distinct from records that never paid. Document your Lifecycle Stage mappings before building anything so you're not making decisions on the fly.
Step 2: Set Up Subscription Data Sync
Your mapping table only works if Stripe subscription data actually reaches HubSpot. You need an integration that tracks when statuses change, not just what they are right now, and that exposes MRR so you can tell free actives from paying customers.
Look for an integration that syncs subscription status and MRR as HubSpot properties, creates event records when status changes occur, associates subscriptions with the correct contacts and companies, and handles historical data.
ClearSync creates subscription and event objects in HubSpot that track every status change with timestamps, so your workflows can be triggered by high-quality, real-time data. Critically, ClearSync also lets you create Company-level rollup fields that aggregate MRR and paid-event counts across all subscriptions associated with a company, the foundation for correct company classification in Step 5.
Step 3: Create Segments that Match Each Contact Lifecycle Group
We recommend creating dynamic Segments in HubSpot for each contact lifecycle group. You'll reference these inside a workflow to set contact lifecycle stages in a predictable order. (Companies are handled separately from their own rollups in Step 5, so these segments are just for Contacts.)
Suggested segments:
Contact Segment #1: [ClearSync] Currently Active Customer Contacts
Contacts associated with a subscription with Current MRR > 0
Contact Segment #2: [ClearSync] Currently Active Free Subscribers
Contacts associated with a subscription with Current MRR = 0 and Subscription Status is Active
Contact Segment #3: [ClearSync] Former Paid Contacts
Contacts with Current MRR = 0 (via a rollup field) and Number of Paid MRR Events > 0 (also a rollup field)
Step 4: Configure the Contact Lifecycle Workflow
Build a real-time, contact-based workflow for contacts who are members of any of the Step 3 segments, with re-enrollment so that Contacts re-evaluate whenever their subscription changes. Then add a branch that checks conditions in order:
Current Paying Customer → member of Segment #1
Former Paid Customer → member of Segment #3 (checked before the free branch, so a former payer isn't caught as a free user)
Active Free Subscriber → member of Segment #2
None met → fallback
After each branch, add an Edit Record action to set the contact's lifecycle stage to the mapped value.
One thing to plan for: HubSpot resists moving lifecycle stage backward. It treats the stage as a "watermark," so a workflow won't demote a Customer to Former Customer unless you handle it deliberately. Two approaches:
Preferred: order your stages so churn moves forward.
Place your custom Former Customer stage after Customer in your lifecycle settings. Then Customer → Former Customer is a forward move and needs no special handling; only reactivations remain "backward."
When you truly need a backward move, clear-then-set on that branch only.
Add an Edit Record action to clear the stage, then a second to set the new one. Don't do this on every branch, as clearing wipes the stage's date-entered and time-in-stage history (breaking funnel reporting) and can re-fire downstream automations that listen for stage changes.
Step 5: Set Company Lifecycle from Company Rollups (not from the contact)
The tempting shortcut is to add a follow-on action that copies the contact's stage to its company. We don't suggest updating Company Lifecycle Stages based on Contact data alone, as it breaks for any company with more than one subscription that have different statuses.
A single company can hold one active paid subscription, one active free subscription, and one canceled subscription at the same time, and copying any single contact's stage would misclassify it.
Instead, give the company its own aggregated view and its own workflow:
Create company-level rollup fields with ClearSync that aggregate across all associated subscriptions:
Current MRR (Company): sum of Current MRR across all associated subscriptions
Number of Paid MRR Events (Company): total paid MRR events across all associated subscriptions
Build a separate company-based workflow that enrolls and re-enrolls when those rollups update, then branches on the aggregate, in order:
Current MRR (Company) > 0 → Customer
Current MRR (Company) = 0 AND Paid MRR Events (Company) > 0 → Former Customer
Current MRR (Company) = 0 AND an associated subscription is Active → Subscriber
This keeps the two objects decoupled: contacts update in real time based on their segments, and companies update based on their own data. The one-active-plus-one-canceled company resolves cleanly to Customer. It also means that a contact without a company still updates, and that a company updates even if its contacts have not been processed.
Step 6: (Optional) Build Closed Won Deal Automation
When a subscription becomes active with recurring revenue (MRR > 0), you may want a Closed Won deal for pipeline and revenue reporting. For accurate revenue, the integration needs to calculate the actual recurring value, not the first invoice amount, which can include prorations or setup fees. ClearSync calculates MRR from subscription data and excludes one-time charges.
Step 7: Test and Validate Your Mappings
Before going live, run test subscriptions through every transition in your mapping table. Create a test customer in Stripe, move them through trial → active → canceled, and verify:
Does the Contact lifecycle stage update correctly at each transition?
Does the Company lifecycle stage resolve correctly, including a company with one active paid and one canceled subscription (should be Customer)?
Do backward transitions (churn and reactivation) land on the right stage without stalling?
Is native cross-object sync staying out of the way, rather than overwriting workflow-set stages?
Are deals created only for paid conversions, with accurate MRR?
Check each workflow's enrollment history for errors. Common issues include missing required fields, decimal MRR used as a number enrollment trigger (put the threshold in a branch instead), and native sync competing with the workflows.
What Happens When Subscription Statuses Don't Map Cleanly?
Stripe's subscription model is flexible, so edge cases are common: a customer with multiple subscriptions, a paused subscription, or a trial that converts mid-cycle.
For multiple subscriptions, classify at the company level using aggregate MRR rather than the status of any single subscription. If the company's total Current MRR is above zero, it's a Customer, even if some subscriptions are free or canceled. This is exactly what the company rollups in Step 5 give you.
How Do You Handle Lifecycle Stage Rollbacks?
Customers don't always move forward. A repeatedly failing payer might need an "At Risk" flag; a churned customer who resubscribes needs to become a Customer again.
HubSpot's default lifecycle stage resists backward movement. The cleanest fix is to order your stages so common transitions move forward (place Former Customer after Customer, as in Step 4). For genuine backward moves, use a targeted clear-then-set on just that branch, knowing it resets the stage's date history.
You can also sidestep the constraint entirely for subscription health: ClearSync syncs a Subscription Status property that mirrors Stripe statuses exactly and can move in any direction. Use HubSpot's native lifecycle stage for marketing and funnel reporting, and track subscription health separately with that property.
How ClearSync Helps You Map Stripe to HubSpot Lifecycle Stages
Manually mapping Stripe statuses to HubSpot lifecycle stages requires workflow configuration, company-level aggregation, duplicate prevention, and ongoing maintenance as your subscription model evolves. ClearSync automates the core parts of this process.
When you connect ClearSync to Stripe and HubSpot, it creates subscription and event objects with full status history, associates them with the correct contacts and companies using multi-key deduplication, and tracks every status change as a timeline event. It calculates accurate MRR for deal automation, exposes company-level rollups for correct 1:many company classification, and imports historical subscription data so your lifecycle stages reflect your entire customer history.
Your workflows trigger on ClearSync data, giving you reliable lifecycle automation based on real status transitions.
Start a free trial and connect your Stripe account to see how subscription status mapping works with your actual data.
FAQs About Mapping Stripe Status to HubSpot Lifecycle Stages
What HubSpot lifecycle stage should trial users be? Trial subscriptions typically map to Opportunity, since a trialer has entered your funnel but hasn't paid. Some teams filter to only promote trials that show buying intent. ClearSync lets you configure which stage trial subscriptions map to based on your process.
Should an active subscription always be a Customer? No. An active subscription on a $0 MRR free plan is a Subscriber, not a Customer. Only active subscriptions with MRR > $0 should map to Customer. That's why you map on MRR, not status alone.
How do I handle customers with multiple Stripe subscriptions? Classify at the company level using aggregate MRR. Create company rollups that sum Current MRR and count paid MRR events across all associated subscriptions, then drive a company workflow off those rollups. A company with one active paid subscription and one canceled subscription correctly resolves to Customer.
Can I move lifecycle stages backward when customers churn? HubSpot resists backward movement. Order your stages so churn (Customer → Former Customer) is a forward move that requires no workaround, and reserve clear-then-set for genuine backward transitions, like reactivation. ClearSync also syncs a separate Subscription Status property that can move in either direction.
Which triggers should I use for lifecycle-stage workflows? Trigger on changes, with re-enrollment on. Contact workflows re-enroll on segment membership changes; company workflows re-enroll when the company MRR and paid-event rollups update. Put numeric thresholds (MRR > 0) in branches, since HubSpot restricts decimal values in number enrollment triggers.



