Deal stage and lifecycle stage look interchangeable on a dashboard, and treating them that way is how a HubSpot portal ends up with a funnel report that nobody trusts. They answer different questions. Lifecycle stage tracks where a relationship sits across your whole database, including people who will never open a deal. Deal stage tracks how close one specific sale is to closing. When you force one to do the other's job, your conversion rates and your forecast both drift from reality, and the gap only shows up months later when leadership asks why the numbers disagree.
Key takeaways
- Lifecycle stage is a property on the contact and company objects and moves through eight default values from Subscriber to Customer. Deal stage is a property on the deal object and moves through a pipeline of sales milestones with a close probability attached to each.
- HubSpot's native sync pushes deal events into lifecycle stage in one direction only: a created deal sets associated records to Opportunity, and a Closed won deal sets them to Customer.
- Lifecycle stage never moves backward on its own, so a churned customer stays a Customer until a workflow clears the value. That single rule breaks more funnel reports than any other setting.
- Deal stage should own your pipeline forecast because it carries weighting. Lifecycle stage should own your funnel conversion reporting because it covers every contact, including the ones with no deal.
- In a business where most contacts never get a deal, letting deal stage drive lifecycle leaves the top of your funnel empty and your MQL-to-SQL rate meaningless.
Which object should be the source of truth for your funnel?
Lifecycle stage owns funnel position, deal stage owns the active sale, and neither should be edited to stand in for the other. Lifecycle stage answers "where is this relationship," and it lives on the contact and company records so it can describe every person in your database. Deal stage answers "how close is this transaction," and it lives on the deal so it only exists once someone is actually buying.
The default lifecycle progression runs through eight values in a fixed order, from Subscriber and Lead through Marketing Qualified Lead, Sales Qualified Lead, Opportunity, Customer, Evangelist and Other, as described in HubSpot's documentation on contact and company lifecycle stages. A deal, by contrast, moves through whatever pipeline you build for it, and the same deal can sit in a pipeline stage while the contact behind it is already a Customer from a previous purchase.
The practical test is coverage. If a report needs to include people who have never opened a deal, it belongs to lifecycle stage. If it needs a weighted dollar value, it belongs to deal stage.
What actually happens when a deal is created or won?
HubSpot ships a native automation that writes deal events back into lifecycle stage, and it runs in one direction only. When the sync is on, creating a deal sets every associated contact and company to Opportunity, and moving that deal to Closed won sets them to Customer, per HubSpot's settings for how lifecycle stages sync between objects.
You control this under Settings, Objects, Contacts, on the Lifecycle Stage tab's Automate section. The two switches that matter are "Set lifecycle stage when a deal is created," which fires the Opportunity update, and "Set lifecycle stage when a deal is won," which fires the Customer update. Both let you pick the target stage from a "Set lifecycle stage to" dropdown, so the defaults are changeable.
The sync between records is also directional. Updates flow from a company down to its associated contacts, but a change to a contact's lifecycle stage does not flow back up to its primary company. If you assume that relationship works both ways, your company-level funnel and your contact-level funnel will report different totals for the same accounts.
Why does lifecycle stage never move backward on its own?
HubSpot's automatic lifecycle updates only ever move a record forward, so a contact who reaches Customer will not drop back to Opportunity or Lead through any native automation. The documentation is explicit: if a contact is already a Customer and a new deal is created and associated with them, their lifecycle stage will not revert to Opportunity. To set an earlier value you have to clear the field first, manually or with a workflow.
This is the single rule that quietly ruins funnel reporting. A customer who churns stays a Customer forever unless you build the regression logic yourself, which means your Customer count only ever grows and your "active customer" number is fiction. The same forward-only bias inflates every stage below it, because reactivated leads and re-engaged churned accounts never re-enter the funnel where the report expects them. If you are already seeing stages that will not correct themselves, the mechanics and the fix are covered in how to fix HubSpot lifecycle stages moving backwards.
How do deal stages and lifecycle stages differ in structure?
The two objects differ in where they live, how they move, and whether they carry a probability, and those three differences decide which reports each one can support.
| Attribute | Lifecycle stage | Deal stage | Lead status |
|---|---|---|---|
| Object it lives on | Contact and company | Deal | Contact |
| Question it answers | Where is this relationship | How close is this sale | What is the rep doing about this lead |
| Movement | Forward only by default | Any direction, backward allowed | Any direction |
| Carries a probability | No | Yes, per stage | No |
| Exists for every contact | Yes | No, only when a deal exists | Yes, once set |
| Best report | Funnel conversion rates | Weighted pipeline forecast | Rep activity and follow-up |
The probability column is the fault line. Deal stages carry a close probability that lifecycle stages do not, and that number is what makes a forecast possible.
What do deal stage probabilities actually drive?
Each deal stage carries a win probability, and HubSpot multiplies it by the deal amount to produce the weighted value in your pipeline. The default sales pipeline ships with seven stages, each pre-set to a probability, as listed in HubSpot's guide to setting up and customizing pipelines.
| Default deal stage | Close probability |
|---|---|
| Appointment scheduled | 20% |
| Qualified to buy | 40% |
| Presentation scheduled | 60% |
| Decision maker bought-in | 80% |
| Contract sent | 90% |
| Closed won | 100%, marked Won |
| Closed lost | 0%, marked Lost |
The weighted amount in the deal board equals the total amount in a stage multiplied by that stage's probability, which is why a pipeline that leans on default probabilities forecasts poorly. Those defaults are generic, and HubSpot's stage-calculated properties such as time-in-stage give you the raw data to replace them with your own historical conversion rates. Lifecycle stage has no equivalent, which is the whole reason it cannot carry a forecast.
What breaks when deal stage drives your funnel reporting?
When you build your top-of-funnel report off deal stage, every contact without a deal disappears from it, and in most businesses that is the majority of your database. Subscribers, leads and MQLs who have not yet reached a sales conversation own no deal, so a deal-stage funnel starts at the point of sale and treats the entire marketing funnel as if it did not exist.
The distortion runs the other way too. A single account with three open deals counts three times in a deal-stage view, so your "opportunities" number overstates how many buyers you actually have. Lifecycle stage collapses that back to one Opportunity contact and one Opportunity company, which is what a funnel conversion rate needs. Use deal stage for the funnel and your MQL-to-SQL and lead-to-opportunity rates become uncomputable, because the denominator lives on an object the report never touches.
What breaks when lifecycle stage drives your pipeline forecast?
Lifecycle stage cannot forecast revenue because it has no probability and no amount. An Opportunity in lifecycle terms is a binary label with no sense of whether the deal is worth 5,000 dollars at 20% or 50,000 dollars at 80%, so a forecast built on lifecycle stage counts heads instead of weighting dollars.
It also collapses detail you need. One contact can sit behind several deals at different pipeline stages, and lifecycle stage flattens all of them into the single furthest-forward label. Forecasting off that view hides the deals most likely to slip. This is the mirror image of the previous failure: deal stage carries the money and the weighting, lifecycle stage carries the coverage, and asking either to do both jobs breaks the report you care about.
So which drives which, and how do you wire it?
Let deal stage drive the forecast and lifecycle stage drive the funnel, then use HubSpot's native sync so deal events update lifecycle automatically rather than by hand. The recommendation by scenario:
| Your situation | Source of truth for the funnel | Source of truth for the forecast |
|---|---|---|
| B2B with a real sales pipeline | Lifecycle stage, synced from deals | Deal stage with custom probabilities |
| Ecommerce or B2C with no deals | Lifecycle stage, set by order events and lists | Not applicable, use order and revenue reports |
| Most contacts never open a deal | Lifecycle stage, never deal stage | Deal stage for the minority who do |
| Account-based, many deals per account | Company lifecycle stage | Deal stage, weighted, rolled to company |
The wiring is straightforward once the roles are clear. Turn on the deal-to-lifecycle sync so Opportunity and Customer are set by deal movement, not by reps guessing, and build one workflow that clears lifecycle stage when a customer churns so the forward-only rule stops inflating your Customer count. Do not let anyone manually edit lifecycle stage on records that have deals, because a hand edit and the sync will fight, and the sync wins on the next deal change.
What to watch after you connect them
The most common breakage after wiring the two together is a lifecycle stage that leads the deal, not the other way around. If a rep sets a contact to Customer manually before any deal closes, your Customer count includes people who have not bought, and your Closed won revenue will never reconcile with your customer list. Audit for Customers with zero Closed won deals as your first check.
Watch the company-to-contact direction as well. Because the sync only flows downward, a company promoted to Customer drags its contacts along, including contacts who were only ever newsletter subscribers, which quietly overstates your customer contact count. When you inherit a portal where these rules were never set, start by mapping which object each report actually reads before changing anything, a process laid out in how to audit a HubSpot portal you have just inherited.
The goal is one rule the whole team can state without hesitation: deals move money, lifecycle moves relationships, and the sync keeps them honest. When that sentence is true in your portal, your funnel report and your forecast stop disagreeing.