The age-old question: How do you manage lifecycle stages between companies and contacts?

Hi everyone,

I know it’s an age-old question in the world of lead management, but I’d love to hear how you handle lifecycle stages between companies and contacts. In our case, we manage deals with an account-based approach (focused on companies), but not all the contacts within the same company are always at the same life stage. :sweat_smile:

At the moment, I have automation set up that copies the company’s lifecycle stage to the contact. However, this is causing me issues because some contacts aren’t at the same knowledge level as others. It’s especially tricky with larger companies where different contacts are downloading resources but aren’t necessarily involved in the negotiation process, etc. The company’s lifecycle changes based on the deal stage.

How do you organize your leads/contacts when they’re in different stages within the same account? Do you use any specific strategy to align the lifecycle between the company and the contacts, or do you have personalized workflows for each person involved?

Perhaps Lead Status could be a solution, but I often encounter situations where a company is already qualified as an SQL, and suddenly a new lead from that company enters the funnel as an MQL simply by downloading something from our website.

Any tips on how to avoid that kind of “conflict” within accounts/contacts? :laughing:

Thanks in advance for your insights!

Hi @SClara,

When I set up HubSpot portals and lifecycle stage automation, in almost all cases, this is what makes sense:

  • Lifecycle stage is not updated manually by users, always by automation.
  • HubSpot lifecycle automation in the settings is turned off as it conflicts with the below.
  • There is contact-based workflow per lifecycle stage that enrolls contacts who meet the criteria of that lifecycle stage.
  • After enrollment, the workflow sets both the lifecycle stage of the contact and the lifecycle stage of the associated company.
  • Workflows should always set the previous lifecycle stages first, e.g. a SQL workflow should set contacts to lead, associated company to lead, contact to MQL, associated company to MQL, contact to SQL, associated company to SQL. That way, you avoid skipped lifecycle stages in reporting.

Since records cannot go back in their lifecycle stage, that automatically means that companies will be updated to the lifecycle stage of the contact that got the furthest :slightly_smiling_face:

As an example, an opportunity lifecycle stage workflow would look like this:

  • Enroll contacts when they’re associated to a deal
  • Set contacts to lead, associated company to lead, contact to MQL, associated company to MQL, contact to SQL, associated company to SQL, set contact to opportunity, set associated company to opportunity

Let me know if you have any follow-up questions!

Hi @karstenkoehler can you please provide more detail on how to build this contact-based workflow? Trigger, steps, etc Thank you!

I’m currently struggling with this too. We use “lead status” as we wanted to manipulate the values that are set. We also created more “disqualifed” options to allow us to track that better.

However, with company-based workflows, you can’t exclude certain contacts. So the workflow always updates ALL contacts associated with the company/account to the same lead status. BUT in some cases there are certain contact who shouldn’t be updated. Like if they unsubscribe or bounced cause they are no longer there. It makes it hard to track such things.

Open to feedback on how other companies update their lifecycle stage/lead status from company/account to contacts.

Hi @CDobson2
Thank you for reaching out to the Community!
I’d like to invite some community members who are subject matter experts to join this conversation.
@karstenkoehler @profitpad @himanshurauthan - Would you be able to share any insights on this? Your expertise would be greatly appreciated.
Best,
Victor

That’s a great question, and it comes down to clarifying the master logic behind lifecycles in HubSpot:

  • Contacts → individual engagement / activity
  • Companies → overall account buying status

Where teams often get stuck is treating them as always “in sync.” In reality, you usually need a filter layer so only the right contacts can influence the company lifecycle.


How I Think About It

  • Contact lifecycle = what’s happening with that person (MQL, SQL, Customer, Disqualified, etc.).
  • Company lifecycle = where the account is in your sales process (Prospect, Opportunity, Customer, Expansion).

Depending on your sales motion, you may not want every contact to push the company forward.

Example:
If you have a PLG motion, you might get a user contact who creates a free account. That contact could justifiably move to “Customer” on the contact record. But it doesn’t mean the whole company should move to “Customer”, especially if they’re not your ICP.

Instead, you could:

  • Tag the company as “User” to capture that activity.
  • Only update the company lifecycle to Customer once you’re talking to the right ICP persona (e.g., an enterprise buyer) and/or have a closed-won deal.

TLDR

Use filters so that only the right contacts justify updating the company lifecycle. This keeps reporting clean:

  • Contacts still reflect real engagement.
  • Companies only move forward when the right ICP + deal signal is present.

Hope that helps.

Hi @CDobson2
I noticed @karstenkoehler provided a really solid technical approach in his response to @SClara that might actually solve your exact problem with company workflows updating ALL contacts.
His suggestion to use contact-based workflows instead of company-based workflows could be the key - this way you can set enrollment criteria that naturally excludes unsubscribed contacts, bounced emails, or contacts no longer at the company.
The workflow would still update both the contact AND the associated company (so you don’t lose company-level tracking), but only for contacts that meet your specific criteria.
Since you’re using “lead status” instead of lifecycle stages, you’d just swap those property updates in the workflow actions, but the core logic should work the same way.
Would you be able to try implementing Karsten’s approach and let us know if it resolves your issue with excluding certain contacts? I think this could be exactly what you were looking for! Best, Victor

This makes sense and I see how it works. Where I’m getting stuck, is after I update the Company record (let’s say SQL), how do I ensure that the other contacts associated with that company don’t get put into a sales sequence/etc.? We obviously don’t want current deal or even let’s say bad fit companies to keep getting enrolled in sequences if I can’t update all contacts (besides unsubscribed/bounced) to match that lifecycle stage/lead status.

Hey @CDobson2 - thanks for following up here!
From what I’m gathering based on everyone’s input, especially @karstenkoehler, it makes most sense to not auto-sync a company’s lifecycle stage to the associated contacts. But rather, it makes more sense to automate the lifecycle stages of contacts via a Contact-based workflow, for instance. In a workflow, you can set the parameters by which a contact is enrolled and updated.
Do you have a specific example you can outline for us that may provide more context?
Shane, Community Manager