By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.
Revenue Operations
Flash Icon Decorative

HubSpot Lifecycle Stages: Building a Funnel That Doesn't Break

Scribbles 2

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.

My Approach to Fixing Lifecycle Stages

Whether I’m inheriting a mess or building from scratch, the methodology is the same. Here's how I approach it:

The Audit: Diagnosing System vs. Process Breakdown

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:

  • Contact lifecycle stages compared to company lifecycle stages. Are they the same or wildly different?
  • Contact and company lifecycle decision overrides. Are they syncing intentionally, or are they just randomly aligned?
  • Stages created out of order. If your MQL stage is defined as a late-stage value when it should be early, that tells me immediately this was built haphazardly.
  • Workflow sprawl. Ideally, there should be one workflow maximum per stage.
  • Lists and segments attached to lifecycle stages. They're often tied to additional workflows that could have lifecycle stage update logic hidden inside them.

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.

The Stakeholder Alignment Process

After the audit, I talk to stakeholders. Here's the order of meetings I’ve found works best for reaching alignment:

  • Meet with individual go-to-market teams to understand their needs
  • Meet with the CEO to nail down the KPIs that matter 
  • Sit a bit with stakeholder and CEO feedback to figure out how lifecycle stages should support them
  • Talk to individual teams again to sell them on the stages that will best fit everyone’s needs
  • Group meeting where everyone formally signs off on the same definitions

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.

Implementation and Documentation

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.

Testing and Rollout

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!

Why Figuring Out Lifecycle Stages Is So Damn Complicated

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:

  • Inbound marketing: Lifecycle visibility starts at engaged or marketing ready
  • Inside sales (BDR/SDR): Funnel visibility starts at meeting set
  • Full-cycle sellers (AEs): Funnel visibility starts when they create a deal
  • Product-led growth: Starts at qualified “lead” based on product signals, not marketing signals

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.

Additional Complicating Factors (Thanks, HubSpot)

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.

Recommended Lifecycle Stages

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.

The Workflow Logic That Powers Each Stage

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.

Why Backwards Movement Actually Makes Sense

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.

When You Need Backwards Movement

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.

The Infrastructure Required for Backwards Movement

If you're allowing backwards movement, you need custom fields:

  • <Stage Name> Original Met Date: first time the stage was hit
  • <Stage Name> Last Met Date: most recent time the stage was hit
  • <Stage Name> Times Met: how many times they've cycled through this stage
  • <Stage Name> Reason: flags if it was backfilled, triggered due to a product flag, triggered by marketing, or triggered by another department

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 Campaign -> MQL Tracking Limitation (And How to Fix It)

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:

  • Attribution tools need granular data that HubSpot's campaign data exports or APIs don't provide, like which day a person interacted with a campaign. (I 💩you not).
  • Unless you build a campaign for each type of interaction, campaigns can't differentiate between a website visit, an email click, and a demo request form fill. They're all just campaign activities. (I 💩you not)
  • There's no equivalent to Salesforce's campaign member object in HubSpot. In fact, you can’t even see which campaigns a person interacts with on the contact record. 🤯

Enter the Qualified Lead Custom Object

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:

  • Campaign ID (what they interacted with)
  • Specific action taken (form fill for demo, meeting intake form, trial signup)
  • UTM parameters (traffic source data)
  • Absolute source (marketing versus product)
  • Date and timestamp

Why you need this object

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.

Moving Forward

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:

  • How to audit and align on lifecycle stages before building anything
  • Why multiple go-to-market motions complicate the default model
  • Recommended stages that work across inbound, inside sales, full-cycle sellers, and product-led growth
  • Workflow logic that powers each stage without conflicts
  • Why backwards movement matters and when to enable it
  • How to work around HubSpot's campaign tracking limitations with a custom qualified lead object

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.

Related posts

Join the Co-op!

Or