HubSpot
How to Track When a HubSpot Lead Status Changed
Lifecycle stage gets date properties for free. Lead status gets nothing. Here is the workflow pattern that gives you stage duration reporting anyway.

Key Takeaways
- Lifecycle stage has automatic date properties; lead status does not, so duration reporting on lead status has to be built.
- Build one date-time property per status value and one workflow per status that stamps it, kept in a dedicated folder.
- Stamp on entry only, and decide explicitly whether a record re-entering a status overwrites the original date or preserves it.
- This becomes mandatory when status transitions originate in an external system, because the change happens outside HubSpot's history entirely.
- Never prefix these properties with LS_. It is ambiguous between lead status and lifecycle stage, which is exactly the confusion the build is meant to resolve.
A client asked a reasonable question: how long does a lead sit in each of our sales statuses before it moves?
The answer was that HubSpot could not tell them, and the reason is a genuine asymmetry in the platform that nobody documents in one place. Lifecycle stage comes with reporting infrastructure. Lead status does not.
The asymmetry
HubSpot maintains automatic date properties for lifecycle stages. Every stage, default and custom, gets its own set, updating from the current and historical values on the record. Ask when a contact became a Marketing Qualified Lead and there is a property holding the answer, ready to filter on, segment on and report on.
Lead status has none of this. It is a dropdown property describing sub-stages within the Sales Qualified Lead lifecycle stage, and it behaves like any other dropdown: it holds a value, and changing it writes an entry in the property history on the record.
Property history is not reporting. You can open a record and see when it changed. You cannot build a list of every contact that entered Connected last month, or measure the median time from Connected to Qualified, because there is no property holding that date.
The practical consequence: any question of the form "how long do leads sit in status X" requires infrastructure you have to build.
Why this bites hardest with an external system
The build becomes non-optional when the status transitions do not originate in HubSpot.
We hit this on a portal where lead status was driven by a support and service platform. A rep worked the record over there, the status flowed into HubSpot through an integration, and the property updated. From HubSpot's side, a value changed. The context that would let anyone reconstruct why or when the meaningful event occurred lived in the other system entirely.
Even the property history is thin in that scenario, because the change is attributed to the integration rather than to a person, and it lands whenever the sync ran rather than when the work happened.
If your client's sales motion runs partly outside HubSpot and reports partly inside it, date stamping is the only thing that will make the reporting honest.
The pattern: one property and one workflow per status
Unglamorous and completely reliable.
1. Create one date-time property per status value. Name them after the status, readably. "Date entered Connected." Not clever, not abbreviated, not prefixed with something only you understand.
2. Create one workflow per status. Each one triggers on the record entering that specific status and does exactly one thing: set the corresponding date property to the current date and time.
3. Put them all in a dedicated folder. We name it Date Stamps. A fifteen-value lead status list means fifteen workflows, and if they are loose in the workflow list alongside genuine business logic, someone will eventually assume they are redundant and switch one off.
4. Turn on re-enrollment only if you want re-entry captured, which brings us to the decision below.
Fifteen workflows to solve one reporting question feels wrong the first time you build it. It is the correct answer. Each is trivial, they never need touching again, and they cost nothing to run.
The two decisions that make or break it
Decision one: does re-entry overwrite?
A record that moves Connected, then Unqualified, then back to Connected. Should the date property hold the first entry or the most recent one?
Both are defensible and they answer different questions. Overwriting tells you when the record most recently entered the status, which is what you want for "how stale is this lead." Preserving the first tells you when it first qualified, which is what you want for cohort analysis and for anything resembling a funnel.
If you need both, build both properties: a "first entered" that only writes when the property is unknown, and a "last entered" that overwrites. Two properties per status doubles the build, and on the statuses where it matters it is worth it.
What you must not do is leave the decision implicit. A report built on the wrong assumption is quietly wrong forever, and nobody discovers it because the numbers look plausible.
Decision two: what is your naming convention?
Do not prefix these LS_. It reads as either lead status or lifecycle stage, which is precisely the distinction the entire build exists to make. We watched a portal where properties from both families shared that prefix, and reconstructing which was which took longer than building the workflows.
Use unambiguous names. "Lead status: entered Connected" is verbose and nobody has ever misread it.
Before you build it: should lead status be doing this job at all?
Worth ten minutes before you commit to fifteen workflows, because on a fair number of portals the answer is no.
Lead status is designed as sales working state: the sub-stages within Sales Qualified Lead, describing what the rep is doing right now. Lifecycle stage is designed as funnel position, describing where the record sits in the overall journey. Two different questions, and lifecycle stage is the one that arrives with the reporting infrastructure attached.
So the first question is whether the transitions the client wants to measure are genuinely sales working state, or whether they are funnel movement that has ended up in the wrong property because someone found lifecycle stage inflexible.
Three signs the values are in the wrong property:
- The status list contains stages rather than activities. "Nurture," "Evaluating," "Closed" are funnel positions. "Attempted contact," "Connected," "Bad timing" are working states.
- Marketing reports on it. Lead status is a sales property. If the marketing team's dashboards depend on it, the funnel model has probably been rebuilt inside it.
- Values only ever move forward. Working state cycles. Funnel position advances. A list nobody ever moves backwards through is a funnel wearing a different name.
If the values belong in lifecycle stage, moving them there is more work up front and removes the entire problem this article solves, because lifecycle stage stamps its own dates. That is a genuinely better outcome than building date stamping for a property that should not have held those values.
If they are legitimately working states, and often they are, build the stamps. Just make the decision on purpose rather than by default, because "add date tracking to lead status" is the kind of request that arrives fully formed and is occasionally the wrong request.
One caveat if you do move values: lifecycle stage will not move a record backwards, which is exactly why working states do not belong there. A record that cycles between two states will stick at the furthest one. That constraint is the clearest test of all: if the values need to move backwards, they are not lifecycle stages.
Backfilling, and its honest limit
The first question a client asks once the stamps are live is whether they can have the history.
Partly. Property history is on the records, so an export of historical values plus a shaped import can populate the date properties for records whose transitions are recoverable. Two limits worth stating before you quote it:
- It only covers what the history retained, which for records that changed status many times may not be everything you want.
- It is an import, so all the usual import rules apply: export first, test ten rows, and remember there is no append.
Sequencing matters. Run the one-time backfill first and confirm it, then switch the ongoing workflows on. Doing it the other way round means the workflows and the backfill are both writing to the same properties and you cannot tell which produced any given value.
Our honest recommendation on most portals is to backfill only the statuses that carry a real reporting question, and to start the rest from today. Clients are usually happier with three months of trustworthy data than three years of reconstructed data with caveats attached.
What you can build once the stamps exist
The reason to do any of this:
- Duration in status, as the difference between consecutive stamps. This is the question that started the project.
- Ageing lists. Contacts sitting in Connected for more than fourteen days, as an active list that feeds a rep notification.
- Cohort reporting. Everything that entered Qualified in Q2, tracked forward.
- Pipeline hygiene automation. Once you can express "no movement in 21 days" as a filter, you can automate the sweep instead of nagging about it.
That last one is where most clients end up, and it is the one with commercial value attached. A pipeline that closes stale records automatically is a pipeline whose forecast means something.
The bottom line
Lifecycle stage gets date properties automatically. Lead status gets none, so there is nothing to report on until you build it. One date property per status, one workflow per status, kept in their own folder, with an explicit decision about whether re-entry overwrites.
It is fifteen small workflows and an afternoon, and it converts a property that could only be looked at into one that can be measured.
If your team is building this pattern across several client portals, that is standing work for our agency automation team under your brand. For the wider picture on what lifecycle stage does and does not govern, see can a HubSpot contact and company have different lifecycle stages.
Sources
Frequently Asked Questions
Does HubSpot track when lead status changed?
Not with a date property. Lead status changes appear in the property history on the record, but HubSpot creates no date property for them, so there is nothing to filter, segment or report on. Lifecycle stage does get automatic date properties for every value.
What is the difference between lifecycle stage and lead status in HubSpot?
Lifecycle stage describes where a record sits in the overall funnel and has automatic date properties. Lead status describes sub-stages within the Sales Qualified Lead stage and is intended for sales working state. Only lifecycle stage comes with reporting infrastructure attached.
How do I report on how long a contact sat in a lead status?
Create a date-time property for each status, stamp it with a workflow when the record enters that status, then calculate the difference between consecutive stamps. Without the stamps there is no queryable record of the transition to report on.
How many workflows does lead status date stamping need?
One per status value. A fifteen-value lead status list needs fifteen workflows, each triggered on entry to a single status and doing one thing. Keep them in their own folder so nobody mistakes them for business logic.
Should a re-entered status overwrite the original date?
Decide deliberately and document it. Overwriting answers when the record most recently entered the status. Preserving the first date answers when it first qualified. Both are defensible, and a report built on the wrong assumption is quietly wrong forever.
Agency Automation
Your Agency Runs on Hours. Stop Spending Them on Busywork.
We automate 230+ hours of agency process a month (intake, reporting, delivery ops) so your team ships client work instead.
Related Articles

Why Your HubSpot Report Shows Duplicate Contacts and 'No Value'
Both symptoms come from one cause: a multi-source report counts a record once per association. The diagnosis, and the two fixes that work.

