How to Bulk Update Lifecycle Stages in HubSpot
Lifecycle stage is one of the most important properties in HubSpot. It tracks where a contact or company sits in your funnel — Subscriber, Lead, MQL, SQL, Opportunity, Customer, Evangelist, or any custom stages you've added. It drives segmentation, reporting, lead handoff, and automation logic throughout your portal.
It also has some unusual behaviors that make bulk updates trickier than you might expect. If you've ever tried to change lifecycle stages in bulk and found that HubSpot ignored your changes, you've hit one of these quirks. This guide covers the practical methods for updating lifecycle stages at scale, including the gotchas.
The lifecycle stage "only moves forward" rule
HubSpot has a built-in restriction on lifecycle stages: by default, lifecycle stage can only move forward in the funnel, not backward. The stages have a predefined order:
- Subscriber
- Lead
- Marketing Qualified Lead
- Sales Qualified Lead
- Opportunity
- Customer
- Evangelist
If a contact is currently at "Customer" and you try to set them to "Lead" via a workflow, form submission, or most API methods, HubSpot will silently ignore the change. The contact stays at "Customer."
This catches people constantly. You build a re-engagement campaign, create a workflow to move churned customers back to "Lead," and nothing happens. No error, no warning — the workflow executes, the action fires, and the lifecycle stage doesn't change.
How to move lifecycle stages backward:
- Inline editing: Manually editing the lifecycle stage on a single record or via bulk edit in the UI does allow backward movement. HubSpot shows a confirmation dialog warning you about the change.
- Clear and re-set: Use a workflow with two steps: first clear the lifecycle stage (set it to blank/none), then set it to the desired value. Clearing bypasses the forward-only restriction.
- API with overwrite: The HubSpot API can move lifecycle stages backward if you include the correct parameters. The v3 API respects the forward-only rule by default, but you can override it.
- Import: CSV imports can set lifecycle stages to any value, regardless of the current value.
Method 1: Bulk edit in the HubSpot UI
The most straightforward method for small batches.
- Go to Contacts (or Companies)
- Apply filters to find the records you want to update — for example, filter by current lifecycle stage, last activity date, or a list membership
- Select the records using the checkboxes (use "Select all" for larger batches)
- Click Edit in the toolbar
- Select Lifecycle stage from the property dropdown
- Choose the new lifecycle stage
- Click Update
HubSpot will warn you if you're moving contacts backward. Confirm the change.
Pros: Simple, no technical skills needed, allows backward movement.
Cons: No conditional logic — all selected records get the same stage. No preview, no undo. For targeted changes where only specific records should change, you need a different approach.
Method 2: Workflows
Workflows are the standard approach for lifecycle stage updates that need to happen based on conditions.
Moving forward is straightforward:
- Create a workflow triggered by your criteria (e.g., "Deal stage is Closed Won")
- Add a "Set property value" action
- Select "Lifecycle stage" and set it to "Customer"
The workflow will update the lifecycle stage for every contact that meets the trigger criteria.
Moving backward requires the clear-and-reset pattern:
- Add a "Clear property value" action for Lifecycle stage (this sets it to blank)
- Add a delay of 1 minute (some users find this helps with processing order)
- Add a "Set property value" action for Lifecycle stage with your desired value
This two-step approach works because clearing the property removes the forward-only constraint — you're not moving backward from Customer to Lead, you're setting a blank record to Lead.
Watch out for:
- Associated records. Changing a company's lifecycle stage can cascade to associated contacts (and vice versa) depending on your HubSpot settings. Check Settings > Objects > Companies > Lifecycle stage sync before running bulk updates.
- Re-enrollment. If your workflow's trigger criteria are broad, contacts might re-enroll and have their lifecycle stage reset. Use re-enrollment settings carefully, or add a "has already been enrolled" condition.
- Workflow logs fill up fast. A bulk enrollment of 10,000 contacts generates 10,000 log entries. This is fine functionally but can make the workflow log hard to navigate afterward.
Method 3: CSV import
Imports can set lifecycle stages to any value, including backward moves.
- Create a CSV with at least two columns: an identifier (email or record ID) and the desired lifecycle stage
- Use HubSpot's import tool — go to Contacts > Import
- Map the lifecycle stage column to the Lifecycle stage property
- Run the import
The lifecycle stage values in your CSV must match HubSpot's internal values exactly. For default stages, these are lowercase: subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist. For custom stages, use the internal value (which you can find in Settings > Objects > Contacts > Lifecycle stage).
Watch out for:
- Case sensitivity. HubSpot's import is generally forgiving, but using the exact internal values avoids issues.
- No preview or rollback. The import overwrites lifecycle stages immediately with no undo. Export current values before importing.
- Association sync. The same cascade behavior applies — changing a contact's lifecycle stage via import might update the associated company's stage too.
Method 4: Search and replace
If your lifecycle stage update involves changing one specific value to another — for example, all contacts currently at "MQL" should move to "SQL" — a search-and-replace approach works well.
In SearchReplace, you would:
- Select Contacts and the Lifecycle stage property
- Search for the current value (e.g.,
marketingqualifiedlead) - Replace with the new value (e.g.,
salesqualifiedlead) - Preview all affected records
- Apply the change
This approach gives you a clear view of exactly which records will change and what they'll change to. It also provides rollback if you need to reverse the update.
Common bulk lifecycle stage scenarios
Scenario: Moving churned customers back to leads
You have 500 contacts at "Customer" whose subscriptions expired, and you want to re-enter them into the funnel as "Lead" for a re-engagement campaign.
Approach: Use a workflow with the clear-and-reset method. Set enrollment criteria to "Lifecycle stage is Customer AND Subscription status is Expired (or whatever your cancellation indicator is)." Clear lifecycle stage, delay briefly, set to Lead.
Scenario: Promoting all leads to MQL after event attendance
A batch of 300 leads attended your webinar, and you want to promote them all to MQL.
Approach: Use inline bulk edit. Create an active list of webinar attendees, go to the list, select all, edit lifecycle stage to MQL. Since this is a forward move, no special handling is needed.
Scenario: Cleaning up incorrect lifecycle stages after a bad import
A CSV import set 2,000 contacts to "Customer" when they should have been "Lead." You need to undo this.
Approach: Use a CSV import with the correct lifecycle stage values (the import method allows backward movement). Or use a workflow with the clear-and-reset method targeting the specific import batch. If you can identify the affected contacts by import date or another property, either method works.
Scenario: Consolidating custom lifecycle stages
You're removing a custom lifecycle stage ("Prospect") and moving everyone at that stage to "Lead."
Approach: First update all contacts at "Prospect" to "Lead" using any of the methods above. Then remove the custom stage from your settings. Don't remove the stage first — if contacts are still at a deleted stage, it creates data inconsistencies.
Lifecycle stage and lead status: don't confuse them
Lifecycle stage and lead status are different properties that people often conflate.
Lifecycle stage tracks funnel position (Subscriber through Customer). It's a high-level indicator of where the contact is in their journey.
Lead status is a more granular property within the "Lead" and "MQL" lifecycle stages. Values like "New," "Open," "In Progress," "Unqualified," "Attempted to Contact" describe what's happening with that lead right now.
When you're doing bulk updates, make sure you're updating the right property. If you want to mark 200 leads as "Unqualified," that's a lead status change, not a lifecycle stage change. See our guide on bulk updating lead status for that workflow.
Post-update verification
After any bulk lifecycle stage update, verify the results:
- Check the contact count by lifecycle stage. Go to Reports or use the default lifecycle stage report. Do the numbers look right?
- Spot-check individual records. Open 5-10 records from the updated batch and verify the lifecycle stage.
- Check associated companies. If lifecycle stage sync is enabled, verify that company records updated as expected.
- Monitor downstream automations. Lifecycle stage changes can trigger other workflows. Watch for unexpected enrollments or emails firing.
- Review the timeline. Each lifecycle stage change creates a timeline event on the contact record. You can verify the change happened and see the timestamp.
Lifecycle stage is a property where mistakes are highly visible — it affects dashboards, reports, and automation throughout your portal. Take the extra time to preview, verify, and confirm before and after any bulk update.
Keep working through the cleanup
Related HubSpot guides for planning, previewing, and validating the next step.
How to Bulk Edit Contacts in HubSpot
HubSpot's bulk edit sets all selected contacts to the same value — no find-and-replace, no preview, no undo. Learn how to edit thousands of contact records safely, with previews and rollback.
Read guideHow to Bulk Update Lead Status in HubSpot
Reassigning lead statuses across hundreds of contacts? Here's how to bulk update lead status in HubSpot efficiently — plus common scenarios and pitfalls.
Read guideHow to Clean Up Contact Properties in HubSpot
Over time, HubSpot contact properties accumulate inconsistencies, duplicates, and garbage data. Here's how to audit, clean, and maintain your contact properties.
Read guideHubSpot Bulk Editing for Agencies
Agencies managing HubSpot for clients need fast, reliable bulk editing. Learn strategies for handling data cleanup, content updates, and CRM changes at scale.
Read guideStill editing HubSpot records one by one?
Start with 100 free applied records — no credit card required.