

If you've inherited a HubSpot instance with lifecycle stages, chances are you're dealing with one of two situations: the stages are completely broken, or they're held together with so much duct tape and prayers that nobody dares touch them. I've seen both. Multiple times.
The problem isn't HubSpot itself. The problem is that most companies try to force a simple inbound-only model onto a complex, multi-motion go-to-market strategy, and then act surprised when everything falls apart.
HubSpot Lifecycle Stages were designed for straightforward inbound marketing. Your business? You've got inside sales teams prospecting, full-cycle sellers generating their own pipeline, and maybe a product-led growth motion on top of all that. The default lifecycle setup can't handle this without breaking. So let's talk about how to build lifecycle stages that actually work for the way your business operates, and when to stop trying to make lifecycle stages do everything and look elsewhere in your CRM to handle the nuances.
Whether I’m inheriting a mess or building from scratch, the methodology is the same. Here's how I approach it:
The system audit isn't just a checklist of configuration line items to check. I'm using my time alone with the system (usually two to three business days in a contract engagement) figuring out if this is truly a broken system or if the team didn't take enough time to get agreement from stakeholders before putting it in place.
This diagnosis changes everything about how I fix a company's lifecycle stages.
Here's what I check during a lifecycle stage audit:
Workflow sprawl is usually the biggest system problem. When the instance has too many workflows and they're not labeled or organized clearly, it's nearly impossible to figure out what's actually triggering stage changes. You end up with multiple workflows fighting over the same stage, and nobody knows which one is winning.
After the audit, I talk to stakeholders. Here's the order of meetings I’ve found works best for reaching alignment:
That last meeting is absolutely critical. Everyone needs to hear each other commit to the same definitions. It prevents the inevitable "I didn’t know that qualified a lead” objections from sales or “can we count this as qualified” questions from marketing down the road.
Implementing is the easy part; we’ll get into that more later. What’s important to take away from this article is that documentation will save you dozens of hours answering the same questions over and over again.
With the introduction of LLMs, there are no longer any excuses to avoid documentation. Take the meeting recordings and combine them with your documented stage definitions to create finalized documentation about the company’s lifecycle stages. Share the document widely and put it on a shared drive so it’s easily accessible. You’ll need it to answer inevitable questions and correct false memories from sales and marketing leaders.
Once you’ve implemented the stages, create views and reports to validate that what you expect to happen is happening. Then create dashboards and train the organization over and over again where to find the definitive source for Lifecycle Stage data.
Trust me, this is where your documentation will come in handy!
HubSpot's default lifecycle stages assume one thing: inbound marketing leads progress in a straight line.
That's not how B2B SaaS actually works.
You’re probably running four different go-to-market motions:
Most companies don't think through this before they build, and that's when things break.
The solution is to build lifecycle stages that are source-agnostic. They capture the milestone. Then there’s a custom field updated via workflow that captures the motion that created it.
Here's an example:
Once someone has raised their hand to talk to sales or opted into a free trial, I put contacts into a Meeting Ready stage. I also create a Meeting Ready Reason custom field that's populated by workflows. The reasons someone can enter this stage are PLG (product-led growth), marketing (the traditional MQL), or backfill since BDR and AE-led journeys typically pick up one or two stages further.
Creating source-agnostic stages and supporting custom fields allows us to report on which department drove each key lifecycle stage. This bypasses creating separate lifecycle tracks that nobody can make sense of and creating a 22-stage monster.
HubSpot doesn't automatically stamp stage dates when stages are skipped. You need custom fields and workflows to backfill stages, and I recommend having a stage reason field for every stage that includes a Backfill option.
If you allow stage regression, you need custom fields to track the original date a stage was met versus the last stage met date, plus counters for how many times someone hit each stage. This is critical infrastructure that HubSpot doesn't give you out of the box.
Let's preface this section with a nod to Winning by Design's bow tie funnel.I recommend focusing on the acquisition portion of the bow tie when it comes to lifecycle stages, and building other mechanisms to help your team track and build momentum around the retention portion of the bow tie.
(Yes, I understand it's possible to build the retention portion into lifecycle stages, but it can become a mess quickly.)
My second note is that everyone should understand that lifecycle stages are major milestones, but they are not all-inclusive when it comes to departmental reporting and KPIs.. Each team should have their own detailed reporting. Marketing has early indicators from web analytics and advertising platforms. Sales has pipeline stages and forecasting.
These lifecycle stages are the north star benchmarks that everyone rallies around. They're not the complete picture of how each team manages their work.
Without further caveats, here are the lifecycle stages I frequently use for both contacts and companies:

Note that these should all be considered placeholder definitions. You’ll need to get specific requirements and buy-in from your stakeholders to make your Lifecycle Stages last.
Each stage needs its own dedicated workflow. Clean ownership, clear triggers, no conflicts. Here's how I set them up based on how I've defined lifecycle stages above (not how your business may define them):
Cold
Auto-populate on record creation, plus a catch-all workflow for undefined or null values that slip through.
Engaged
Trigger when last activity date is populated, a form is filled out, or any other activity signal that shows attention.
Marketing Ready
Trigger on specific opt-in forms or list uploads to HubSpot that equate to marketing contact status equals yes.
Meeting Ready
Trigger on a subset of high-intent forms like demo requests or meeting intake forms, product signals defined by your business (usage thresholds, feature adoption), and list uploads tagged for inside sales follow-up. This is custom business logic that must be explicitly defined. Don't guess at this one.
Meeting Set
Trigger when a zero-stage deal is created or a deal is edited to stage zero. The primary company should be updated to meeting set stage and all related contacts should be updated to meeting set stage.
Opportunity
Trigger when a deal meets or exceeds qualified stage. This can happen on create or edit. The primary company should be updated to opportunity stage and all related contacts should be updated to opportunity stage.
Customer
You have two options.
Option one: auto-sync from deal close date. This is a default HubSpot setting that you can deactivate if you choose.
Option two: drive this from company-level fields synced with your ERP, like customer activation date and contract expiration date.
Either way, your workflow should push the lifecycle stage value to all of the related contacts as well.
Churned Customer
Trigger when all contracts and line items have expired based on ERP data. The primary company should be updated to churned customer stage and all related contacts should be updated to churned customer stage.
Partner
Once your partner field has been set to yes (or distributor, or VAR, or however else you have it configured), update the primary company and all related contacts to partner.
Archived
Trigger when someone unsubscribes from all communications or their employment status is set to 'no longer employed.' The only time this stage should be used for a company is if it goes out of business. In that case, also roll down the value to all related contacts.
Note: If you want backwards movement, you’ll need to build in the logic. I haven’t outlined it here because which stages allow regression and how far back depend on your stage definitions.
HubSpot was originally designed for one-way lifecycle progression. Once you hit a stage, you stay there or move forward. The workflows were built to only move in one direction. You can only move backwards by clearing the stage value and then populating it again.
Here's the problem: B2B deals aren't linear. People cycle in and out. Opportunities close lost, then re-engage six months later. You need to design for that.
Closed lost deals. When a deal closes lost on an account that has zero active line items or contracts, you need to move those contacts back to marketing ready or engaged so they can re-enter the funnel. Let marketing nurture them until they're ready to talk to sales again. This is critical for long sales cycles and account-based strategies.
Meeting Ready rejections. Even at meeting ready, you need a path backward. Sales might review a lead and decide not to pursue it, or they might talk to someone quickly and decide not to schedule a meeting. You can't lock people into meeting ready. They need to be able to drop back so they can re-engage later when they actually become a sales-ready opportunity. It's critical infrastructure so you don't lose people who genuinely want to talk to you.
Renewal cycles for existing customers. Customers might need to be moved through opportunity stages again for renewals. This requires intentional logic so you're not accidentally resetting active customers. Or intentionally handle this in different fields on the company. Make sure to think through this scenario because it’s crucial to mature businesses.
If you're allowing backwards movement, you need custom fields:
These fields are critical to troubleshooting and properly reporting on stages when you allow regression. HubSpot doesn't give you this infrastructure out of the box. You have to build it yourself.
HubSpot's native campaign data structure, as of the time I'm writing this, is not very robust. You can't easily answer the question "which specific hand raise on which specific date triggered this MQL conversion?"
Why this matters:
Because of this gap, I and some consultants I know have started building a custom object in HubSpot called the Qualified Lead object. It mimics Salesforce's campaign member structure by linking contact, company, and deal records.
Here's what it captures:
Build workflows that populate this object whenever someone takes a qualifying action. Surface these records on contact, company, and deal views so sales sees every hand raise. It's worth the investment.
Granular attribution. You know exactly which activity drove the conversion. You can differentiate between someone who downloaded an ebook versus someone who requested a demo. Not all activities are created equal.
Routing logic. You can send marketing qualified leads to inside sales and product qualified leads to customer support. Different queues, different Slack alerts. This object determines how you route contacts for handling by different departments.
Multiple hand raises. Someone can be a qualified lead multiple times. This is more realistic for a B2B buyer journey that typically isn't linear. Even if someone is already at the opportunity lifecycle stage and you're not allowing backwards movement in lifecycle stages, the qualified lead object still captures every time they fill out a form or request a meeting. Sales doesn't miss a second hand raise just because the person is already further down the funnel.
Future-proofing. This allows you to future-proof for migrating to Salesforce or using an attribution tool that focuses on hand raises as opposed to all marketing activities, including website visits. You won't lose historical data.
HubSpot can absolutely handle sophisticated go-to-market strategies, but you have to architect it intentionally. Default settings assume simple inbound; your business isn't simple.
What we've covered:
In the next article, I'll dive into how Salesforce handles lifecycle stages differently and its own set of limitations. After that, we'll tackle the specific challenges of integrating HubSpot and Salesforce without creating misalignment across departments.
The goal isn't perfection. The goal is a system that reflects how your business actually works, gives each team the visibility they need, and doesn't break when someone enters the funnel from an unexpected angle.