HubSpot lifecycle automation guide

Recycle every MQL. Count every person once.Stage-based nurture, a re-MQL loop and stage tracking that run without manual intervention.

Most HubSpot portals either lose the second hand-raise or count it as brand-new demand. Separate MQL events from MQL people and both problems disappear.

Northwind · Q3 MQL report Illustrative data
Switch the report view:
1,240MQLs reported this quarter
All rows look like net-new demand
Unique peopleNot tracked
Re-MQLsCounted as net-new
Second hand-raises routed to salesUnknown
MQL → SQL24.0% (blended)

Leadership reads 1,240 as demand growth. Nobody can say how many are the same buyers coming back.

940people · 1,240 MQL events
940 first-cycle MQLs300 re-MQLs
First-cycle MQL → SQL23.0% (216 of 940)
Re-MQL → SQL27.3% (82 of 300)
Re-MQLs routed with a Lead record300 of 300
Unique people double-counted0

Same 1,240 rows. Now every repeat hand-raise is a routed, SLA-timed event, and the person is counted once.

Jump to a section

02 · Why this breaks

Lifecycle stage only moves forward.Recycling needs it to go back, and that is where the second MQL gets lost.

It is rarely one broken workflow. It is six design gaps stacking on top of each other.

Each one below is a pain we hear from HubSpot teams almost word for word.

Lead
MQL
SQL
Opportunity
Customer
Forward moves: automatic (forms, imports, workflows, integrations).Backward moves: blocked unless the value is cleared first.
01

The stage won't move backward

HubSpot tools can push Lifecycle stage forward but not back. Setting MQL → Lead quietly does nothing unless the field is cleared first.

02

One field doing three jobs

Lifecycle stage carries current position, history and sales status. Clear it to recycle and you damage history. Leave it and the MQL trigger never fires again.

03

Re-enrollment eats the second MQL

A contact still enrolled can't re-enroll, and multi-value "is any of" triggers aren't re-enrollable in contact workflows. The repeat MQL gets lost.

04

Recycles double-count

A contact property holds only the latest state. With no per-MQL record, re-MQLs show up as net-new funnel volume and conversion math drifts.

05

The sales CRM link sticks

The native Dynamics 365 connector is one-to-one, so a repeat MQL creates no new D365 Lead. Salesforce has a cousin: a converted Lead leaves nowhere for a re-MQL to land.

06

Tier gates nobody priced in

Send a webhook needs Data Hub (formerly Operations Hub) Pro. Deal create and revenue attribution need Marketing Hub Enterprise. Legacy score properties stopped updating Aug 31, 2025.

03 · What good looks like

Speed and follow-through decide the funnel.Benchmarks for sanity checks, not targets. Definitions of "MQL" vary widely.

The biggest gap is rarely conversion. It is MQLs nobody ever works.

Benchmark against your own cohorts first, then use these ranges to spot outliers.

42 hrs

Average time to first response on inbound leads

HBR, Oldroyd et al., 2011 (2,241 US firms)
~30%

Inbound leads that never got a response

Chili Piper, 2022 (updated 2024)
~21x

Higher odds of qualifying at 5 minutes vs 30 minutes

Oldroyd / InsideSales, 2007

Swipe the table sideways to see all bands →

MetricWeakAcceptableStrong
MQL → SQL (B2B SaaS)<15%15–30%35%+
SQL → Opportunity<35%38–45%48%+
Lead → MQL<30%35–41%44%+
Inquiry → closed-won<0.5%~1%2–5%
Speed to first response>24 hrs<1 hr<5 min
Inbound leads never followed up>25%5–15%<5%
Opportunity win rate<20%20–30%35%+
Sales cycle (overall)>120 days~84 days (median)46–75 days
Recycled-lead conversionNo credible published benchmark. Track re-MQL → SQL against first-MQL → SQL in your own portal.

Sources: First Page Sage, B2B SaaS Funnel Conversion Benchmarks (Jun 2025); The Digital Bloom, 2025 B2B SaaS Funnel Benchmarks (Oct 2025); Forrester via Forbes (Mar 2022); HBR, Oldroyd et al. (2011); Chili Piper (2022, updated 2024); Oldroyd / InsideSales (2007). The follow-up bands are JayOh's interpretation of HBR, Chili Piper, Drift (2017) and InsideSales (2014) findings, not a published range.

04 · The step-by-step playbook

Four workflows own every state change.Everything else reads lifecycle stage. Nothing else is allowed to write it.

Build the data model first, then the handler, monitor and recycle loop, then nurture and reporting.

Tier requirements are tagged on each step so you can price the build before you start.

Step 4MQL HandlerCounts the event, creates a Lead, routes. Ends fast.
Step 5MQL SLA MonitorEscalates at 1 business day, auto-recycles at 5.
Step 6RecycleLogs the reason, clears then sets stage, starts cool-down.
Step 7Nurture trackStage × persona content until the contact re-qualifies.

Re-MQL re-enters the handler as a new event, never a new person

  1. 01

    Lock definitions, the stage model and the system of record

    All plansSuper Admin to edit stages

    What

    Entry criteria, exit criteria, an owner and an SLA for every stage. Decide whether contact or company drives reporting.

    Why it matters

    Every automation below keys off these. Stage changes without an observable trigger are where data rots.

    How in HubSpot

    • Settings → Objects → Contacts → Lifecycle stage. Custom stages work on all plans.
    • On the Automate tab, decide on Sync lifecycle stages (company → contact, one direction), stage on deal created or won, and stage on lead associated. Leads created by automation don't fire that last one.
    • Keep default stage names where you can. Renaming their meaning breaks benchmarks and partner tooling.

    Salesforce / Dynamics 365

    Write a crosswalk: lifecycle ↔ SFDC Lead Status and Opportunity Stage, or ↔ D365 Lead status. Two-way lifecycle sync with Salesforce means most recent update wins, so assign an owner system per field.

  2. 02

    Turn on stage history and add the recycling fields

    Pro / Ent for time-in-stage

    What

    Stage calculated properties plus the custom counters in the property spec (section 8).

    Why it matters

    Native history alone can't tell a first MQL from the latest one, or count how many cycles a contact has run.

    How in HubSpot

    • Toggle stage calculated properties in Settings → Objects → Pipelines. They are off by default for new stages.
    • You get Date entered / exited [stage], Cumulative and Latest time in [stage], and Time in current stage.
    • Create mql_count, recycle_count, first_mql_date, last_mql_date, last_mql_source, recycle_reason, last_recycle_date and lifecycle_cycle_status.
    • Treat your own first_mql_date (set only if unknown) as the source of truth. Don't assume Date entered MQL survives re-entry.
  3. 03

    Rebuild MQL qualification on the new Lead Scoring tool

    Marketing Hub ProCombined score: Enterprise

    What

    A fit score, an engagement score with recency rules, and one threshold that sets MQL.

    Why it matters

    Legacy score properties stopped updating Aug 31, 2025, so triggers built on them went quiet. Recency rules decay stale engagement.

    How in HubSpot

    • Marketing → Lead Scoring. Build Fit and Engagement separately. On Pro, combine them with a calculated property.
    • MQL = threshold AND fit ≥ X AND not customer, competitor or student AND lifecycle_cycle_status ≠ Open AND today ≥ recycle_eligible_date.
    • Demo and contact-sales forms skip the score and go straight to MQL.
  4. 04

    Build one MQL Handler that logs every event

    Workflows: Pro / EntCreate Lead: Sales Hub Pro

    What

    A single contact workflow. The only place an MQL is processed.

    Why it matters

    One choke point keeps counting, routing and SLA timing consistent, which is what makes it run without manual intervention.

    How in HubSpot

    • Trigger: Lifecycle stage is any of MQL, one value only. Re-enrollment ON.
    • Increment mql_count (confirm the increase option in your portal's Edit record action), set last_mql_date, set first_mql_date if unknown, copy the source, set status Open.
    • Create record → Lead with type New (first MQL) or Re-MQL, associated to contact and company. Rotate to owner, create the task.
    • End the workflow. A contact still enrolled can't re-enroll, so delays live in step 5.

    Dynamics 365 / Salesforce

    D365: Send a webhook (Data Hub Pro or Ent) to Power Automate, which always creates a new D365 Lead on the existing Contact and Account. No Data Hub? Zapier or Make can call the D365 API. Salesforce: use the inclusion list on MQL criteria; for a converted Contact, create a Task or custom handoff record, and use Add to Salesforce campaign for member status.

  5. 05

    Enforce the SLA and auto-recycle unworked MQLs

    Lead pipelines: Pro / Ent

    What

    A separate "MQL SLA Monitor" workflow.

    Why it matters

    It replaces manual chasing. Without it, the MQL stage becomes a graveyard.

    How in HubSpot

    • Trigger on lifecycle_cycle_status = Open, single value, re-enrollment ON.
    • Delay 1 business day. Lead stage still New with no activity? Reassign and alert the manager.
    • Delay to 5 business days. Still untouched? Disqualify with reason "SLA breach" and recycle.
    • Report on Lead stages (New, Attempting, Connected, Qualified, Disqualified) and Time to First Touch. Never trigger on Cumulative or Latest time in stage; they don't populate until the record leaves the stage.
  6. 06

    Build the recycle path: clear first, then set

    Edit record: Pro / Ent

    What

    A "Recycle" workflow, ideally lead-based.

    Why it matters

    Recycling is the only way to get a re-fireable MQL trigger. Counters and the Lead record keep the history clearing would destroy.

    How in HubSpot

    • Trigger: Lead enters Disqualified with reason Bad timing, No budget, No response or SLA breach, or a deal closes lost for a recyclable reason.
    • Increment recycle_count, set last_recycle_date and recycle_reason, set status Recycled.
    • Edit record → clear Lifecycle stage. A second Edit record → set it to Lead. Two actions, never one.
    • Set recycle_eligible_date = today + cool-down, then enroll in recycle nurture. Bad fit, competitor and spam go terminal and suppressed.

    Dynamics 365

    Never remove the CRM match record to recycle. Keep the Contact ↔ Contact link permanent, treat each D365 Lead as a disposable event, and write its status back to HubSpot to trigger this workflow.

  7. 07

    Nurture by stage × track, not by campaign

    Enroll in sequence: Sales Hub Ent

    What

    One nurture workflow per stage × persona or product cell. Campaigns feed content into tracks.

    Why it matters

    Workflow-per-campaign sprawl collides with sales outreach and runs into plan caps, reportedly 300 on Pro and 1,000 on Enterprise. Confirm yours in the products catalog.

    How in HubSpot

    • Enroll on stage = X AND nurture_track = Y.
    • Suppress customers, open deals, contacts in a sales sequence, unsubscribes and recycled contacts in cool-down.
    • Unenroll on stage change, status Open or deal created. "Unenroll from other workflows" only acts at enrollment.
    • Marketing email for tracks. Sequences for 1:1 rep outreach only.
    StageProduct A buyerProduct A userExit on
    LeadProblem education, 5 emails / 6 wksUse-case demos, 5 / 6 wksMQL, open deal
    MQL (Open)No nurture: sales SLA windowNo nurtureAccepted, Recycled
    RecycledBy reason: timing, budget, no responseSame, practitioner angleRe-MQL, terminated
    CustomerOnboarding → adoption → cross-sellAdoption tipsChurn, expansion opp
  8. 08

    Tie every touch to a HubSpot Campaign

    Marketing Hub

    What

    Every email, form, landing page, ad and event attached to a Campaign, with UTMs mapped to campaigns.

    Why it matters

    Attribution and journey reports filter by campaign. Untagged assets are invisible.

    How in HubSpot

    • Marketing → Campaigns, with one enforced naming convention.
    • Copy the latest campaign touch into last_mql_campaign at each MQL.
    • Salesforce orgs: mirror to SFDC Campaigns with member statuses so Campaign Influence works.
  9. 09

    Report stage progression and campaign influence

    Contact create attribution: MH ProDeal attribution + journeys: Enterprise

    What

    A "Lifecycle Engine" dashboard: funnel, events vs people, velocity and influence.

    Why it matters

    This is how the team sees which campaigns influence pipeline progression, not just contacts created.

    How in HubSpot

    • Funnel by Date entered [stage], split first-cycle (mql_count = 1) from re-MQL (> 1).
    • MQL events = Lead records. MQL people = unique contacts. Conversion = Leads reaching Qualified ÷ Leads created, by cohort month.
    • Deal Create and Deal Revenue Attribution need Marketing Hub Enterprise (first, last, linear, time decay, Empirical). Journey analytics needs Enterprise.
    • On Pro: stamp last_mql_campaign onto the Lead and Deal at creation and report Lead → Deal by campaign.
  10. 10

    QA, monitor and govern the loop

    Performance alerts: Enterprise

    What

    A test-contact harness, weekly anomaly views and a change log.

    Why it matters

    Lifecycle bugs are silent. A trigger that stops firing looks exactly like a slow month.

    How in HubSpot

    • Run seeded test contacts through first MQL, SLA breach, recycle, re-MQL and customer suppression.
    • Saved views: Open MQLs over 5 days in stage, contacts in more than one nurture, mql_count > 4.
    • Backfill mql_count and first_mql_date from Date entered MQL. Name workflows [LC] Stage – Track – Purpose.
05 · Best practices

Separate where they are from what happened.Twelve rules that keep the loop running when nobody is watching.

Lifecycle stage is current state. Counters, dates and Lead records are history.

Most double-counting bugs come from mixing the two.

01

One workflow owns each transition

MQL Handler, SLA Monitor, Recycle and Customer Conversion write lifecycle. Everything else only reads it.

02

Use the Lead object as the MQL ledger

One Lead per handoff, each with stage dates, Time to First Touch and a disqualification reason.

03

Single-value re-enrollment triggers

Never a multi-value "is any of" lifecycle trigger in a contact workflow that must re-enroll.

04

Keep handler workflows short

Long delays go in monitor workflows, so a re-MQL is never blocked by "currently enrolled."

05

Always clear before set

And log it. No user or integration moves a stage backward without recycle_count firing.

06

Recycle only recyclable reasons

Timing, budget and no response recycle. Fit, competitor and spam terminate and suppress.

07

Add a 30–90 day cool-down

Gate MQL on recycle_eligible_date so a recycled contact can't re-MQL tomorrow morning.

08

Decay scores with recency rules

Without them, stale engagement re-qualifies a recycled contact immediately.

09

Report MQL people and MQL events

Show re-MQL conversion on its own line before leadership asks why MQLs rose but net-new didn't.

10

Sales touches win

Suppress nurture during sequences, open Leads in Attempting or Connected, and open deals.

11

A matrix, not campaign workflows

Campaigns feed content into stage × track cells. They never spawn new workflows.

12

Keep CRM identity links permanent

In Dynamics or Salesforce, make each downstream Lead disposable. Don't break the match to recycle.

06 · Common mistakes

Every lifecycle bug fails silently.The workflow says "succeeded." The pipeline says otherwise.

Eight anti-patterns we find in almost every lifecycle audit, and what each one costs.

None of them throws an error. All of them show up in the board deck.

01

Setting MQL on a recycled contact without clearing

The workflow "succeeds," the stage doesn't change and nothing routes.

Cost: recycled hand-raisers never reach sales.

02

Clearing lifecycle with no counters

The second MQL overwrites history and the funnel reports it as new.

Cost: inflated MQL volume, overstated conversion, misread CAC.

03

Long SLA delays inside the MQL workflow

A contact that re-MQLs while still enrolled is ignored.

Cost: your hottest repeat leads get no handoff.

04

Relying on native CRM sync for repeat leads

The link sticks, so no second Lead is created. Breaking the match record breaks history.

Cost: re-MQLs invisible to sales, or duplicate D365 records.

05

Nurture with no suppression or unenrollment

Campaign nurture, a sales sequence and the newsletter land in the same week.

Cost: unsubscribes and sales distrust of marketing.

06

A workflow per campaign

Hundreds of overlapping workflows heading for the plan cap.

Cost: nobody can say what a contact receives next.

07

No MQL SLA, no auto-recycle

MQLs age in stage. HBR (2011) found 23% of firms never responded at all.

Cost: lost conversion while the MQL count looks healthy.

08

Triggers on legacy score or time-in-stage

Old score properties stopped updating Aug 31, 2025. Cumulative time in stage stays empty while in stage.

Cost: MQL flow drops to zero and nobody notices.

07 · Recycle leak calculator

What a working recycle loop is worth.Plug in your monthly numbers. Every result below is live arithmetic.

Unworked MQLs leak. Recycled ones come back, if the loop can count them.

Drag any slider to change the inputs; results update instantly.

Your inputs (drag to change)
400
70%
50%
20%
30%
40%
$25,000
Pipeline recovered per year by auto-recycling$1.14M

$94.8K per month from re-MQLs that would otherwise never reach sales.

Unworked MQLs leaking per month today120Outside the SLA with no auto-recycle, they sit in MQL indefinitely.
Re-MQLs routed to sales per month32Producing 9.5 extra SQLs a month.
MQL volume inflation if re-MQLs count as new+7.9%432 MQL events vs 400 real people.
MQL → SQL: inflated vs event-based23.4% vs 21.7%Inflated: all SQLs ÷ people counted once. Event-based: all SQLs ÷ MQL events.

First-cycle SQLs = 400 × 70% × 30% = 84.0

Re-MQLs = (400 − 84.0) × 50% × 20% = 31.6

Recovered pipeline = 31.6 × 30% × 40% × $25,000 = $94.8K / month

Steady-state monthly model. Assumes the SLA Monitor gets every re-MQL worked; your inputs, not benchmarks.

08 · Copyable template

The property spec and SLA rules, ready to paste.Tab-separated, so it drops straight into Sheets, Excel or a ticket.

Build these fields before a single workflow.

One Copy button grabs all three tabs: properties, SLA and recycle rules, and the launch checklist.

Click a tab to preview it. Copy always includes all three.
Property (internal name)ObjectTypeSet byLogic / notes
mql_countContactNumberMQL Handler+1 on every MQL entry. Never reset
first_mql_dateContactDateMQL HandlerSet only if unknown
last_mql_dateContactDateMQL HandlerDate of step on every MQL
last_mql_sourceContact > Lead > DealDropdownMQL HandlerScore threshold / demo form / event / content / partner
last_mql_campaignContact > Lead > DealText or campaign IDMQL HandlerLatest campaign touch; powers Pro-tier influence reports
lifecycle_cycle_statusContactDropdownAll state workflowsOpen / Accepted / Recycled / Converted / Terminated
recycle_countContactNumberRecycle WF+1 per recycle
last_recycle_dateContactDateRecycle WFDate of step on every recycle
recycle_reasonContactDropdownRecycle WFMirrors the Lead Disqualification Reason values
recycle_eligible_dateContactDateRecycle WFRecycle date + cool-down; gates the MQL trigger
nurture_trackContactDropdownNurture routerCurrent stage x persona track; exactly one value
Lead typeLead (native)DropdownMQL HandlerNew / Re-MQL / Re-attempt
Disqualification ReasonLead (native)DropdownRepRequired at the Disqualified stage
d365_lead_id / sfdc_lead_idLead / ContactTextMiddleware write-backLatest downstream lead ID for reconciliation
09 · FAQ

The questions teams ask after the second MQL goes missing.

Short answers. The playbook above has the build detail.

Click any question to open it.

Why won't our lifecycle stage move back to Lead?+

By design. Forms, imports, workflows, the API and the Salesforce integration can only move Lifecycle stage forward. To go back, clear the value first, then set it, using two separate Edit record actions in a workflow.

Our MQL workflow fired the first time but not the second. Why?+

Usually one of three things: the contact was still enrolled (enrolled records can't re-enroll), the trigger used a multi-value "is any of" (not re-enrollable in contact workflows), or the stage never actually changed because it wasn't cleared. Use a single-value trigger, re-enrollment ON and a handler that ends fast.

How do we stop recycled leads from double-counting in the funnel?+

Count events and people separately. Create a Lead record for every MQL (the event) and increment mql_count on the contact (the person). Report first-cycle and re-MQL lines on their own, by MQL date cohort.

Sales lives in Dynamics 365. Can a repeat MQL create a new D365 Lead even when a contact or closed lead already exists?+

Not through the native connector alone. It links one HubSpot record to one D365 record and the link persists, and the HubSpot Lead object doesn't sync to D365 Leads. Send a webhook to Power Automate on every MQL, which needs Data Hub Pro or Enterprise, or use Zapier or Make. Keep the contact link permanent; don't remove the match record.

Can we see how campaigns influence pipeline progression on Marketing Hub Pro?+

Partly. Pro gives you Contact Create Attribution. Deal Create and Deal Revenue Attribution need Marketing Hub Enterprise, and journey analytics needs Enterprise too. On Pro, stamp last_mql_campaign onto each Lead and Deal at creation and report Lead → Deal by campaign.

Our MQL triggers went quiet last year. What happened?+

HubSpot retired the legacy score properties; they stopped updating on Aug 31, 2025. Any workflow triggering on them stopped firing. Rebuild on the Lead Scoring tool (Marketing Hub Pro; combined scores need Enterprise) and point every trigger at the new score.

Should we clear lifecycle stage to recycle, or just set Lead Status?+

Keeping the stage and using Lead Status preserves native history, but lifecycle funnel reports never show re-MQLs and re-engagement has to key off other fields. Our default is clear-then-set plus counters: you get a re-fireable trigger and true current state, and the counters restore the history you'd lose.

10 · How JayOh builds it

Definitions first. Automation second.We engineer growth systems, and lifecycle is where they usually leak.

A pod owns the outcome, ships in two-week sprints and hands you documentation, not a black box.

  • Definitions before workflowsA journey working session plus a lifecycle and scoring survey sent to marketing and sales separately, so disagreement surfaces before anything is built.

  • Recycling is a rule, not a vibeHand-raisers auto-MQL, idle SALs recycle with a reason code, and score decay stops old engagement inflating MQL counts.

  • Events and people, measured separatelyMQL cohorts by MQL date, an MQL-count property and a Lead record per MQL, with touchpoints rolled up to account and opportunity.

  • Pod deliveryA consultant owns the outcome; GTM engineers build in sprints; you get the stage spec, SLA matrix and training.

+45%

Lead-to-MQL conversion

JayOh client result
30%

Faster lead processing

JayOh client result
$2.2M

Pipeline in 90 days

JayOh client result
100+

Engagements delivered

Since 2016

Want the loop running without manual intervention?

We audit your lifecycle, scoring and handoff, then build the handler, recycle path and reporting with your team.

Talk to our team