Skip to content

Lead to MQL lifecycle stage promotion on lead score threshold

One of 565 written HubSpot workflow specs, by a collective of independent HubSpot consultants.

Free
Professional

Seat pricing: Professional edition. To build it, a GTM Seat or an Ops Seat (an Ops Seat cannot create marketing emails or sequences). Per-hub plans: Marketing Hub Professional.

Updated for HubSpot seat pricing
OutcomeContacts that cross a lead score threshold move automatically from Lead to Marketing Qualified Lead, with no manual review, and marketing ops gets a heads-up.
Workflow mapmarketing-ops-001
HubSpot Score recalculated leads to Score >= threshold?. Score >= threshold? leads to No: No action; Yes: Lifecycle stage already MQL or later?. Lifecycle stage already MQL or later? leads to Yes: No action; No: Set lifecycle stage: Marketing Qualified Lead. Set lifecycle stage: Marketing Qualified Lead leads to Set MQL date. Set MQL date leads to Notify marketing ops. Notify marketing ops leads to Add to Active MQLs list. No Yes Yes No HubSpot Score recalculated Score >= threshold? Lifecycle stage already MQL or later? Set lifecycle stage: Marketing Qualified Lead Set MQL date Notify marketing ops Add to Active MQLs list No action
HubSpot Score recalculated leads to Score >= threshold?. Score >= threshold? leads to No: No action; Yes: Lifecycle stage already MQL or later?. Lifecycle stage already MQL or later? leads to Yes: No action; No: Set lifecycle stage: Marketing Qualified Lead. Set lifecycle stage: Marketing Qualified Lead leads to Set MQL date. Set MQL date leads to Notify marketing ops. Notify marketing ops leads to Add to Active MQLs list. No Yes Yes No HubSpot Score recalculated Score >= threshold? Lifecycle stage already MQL or later? Set lifecycle stage: Marketing Qualified Lead Set MQL date Notify marketing ops Add to Active MQLs list No action

When to use it, when not to

Use it

  • Use when a working lead-scoring model exists (native HubSpot Score or a custom score property) and score correlates with sales readiness.
  • Use when Lead to MQL is currently a manual spreadsheet or Slack-ping review.

Skip it

  • Do not use if no scoring model exists yet. Build and validate scoring first. This fiche assumes lead scoring is already configured; the scoring model itself is out of scope here.
  • Do not use for contacts who are already customers. Exclude via the lifecycle stage filter, see Known pitfalls.

Prerequisites

  • Property: HubSpot Score (default internal name hubspotscore), or a custom score property, object contact, field type number. Why: this is the value the enrollment threshold reads. On newer portals the legacy HubSpot score property does not exist (checked on a test portal on 7 and 23 October 2026): use the score property created by your lead scoring tool. The one-click install leaves the score criterion and its re-enrollment trigger for you to add, and its notification subject leaves out the score. Add the criterion before switching the workflow on, or every Subscriber and Lead becomes an MQL.
  • Property: MQL date (internal name mql_date), object contact, field type date. Why: timestamp for reporting and for the aging alert in marketing-ops-007.
  • Confirm lifecycle stage property values in use match the default HubSpot set (Subscriber, Lead, Marketing Qualified Lead...). If custom lifecycle stages exist, adjust criteria.
  • A distribution list or Slack channel for the marketing ops notification.

Enrollment

Trigger typeevent-based (property change).
CriteriaHubSpot Score is greater than or equal to a set threshold (for example 70) AND Lifecycle stage is not already Marketing Qualified Lead or later.
Re-enrollmenton, re-enrollment trigger = HubSpot Score has been recalculated. Needed because score changes continuously as contacts engage; without re-enrollment a contact whose score dips before first evaluation never gets caught later.
Suppressionnone needed beyond the lifecycle-stage filter in the enrollment criteria.

Steps

  1. If/then branch: Lifecycle stage is Subscriber, Lead, or unknown (not already MQL, SQL, Opportunity, Customer, Evangelist, or Other)
    • Set lifecycle stage to Marketing Qualified Lead. There is no dedicated "Set lifecycle stage" action: use the "Edit record" action (the current name of Set property value) targeting the Lifecycle stage property (https://knowledge.hubspot.com/workflows/choose-your-workflow-actions).
    • Set property value: MQL date = current date
    • Send internal email notification to: marketing ops distribution, subject "New MQL: {{contact.firstname}} {{contact.lastname}} (score {{contact.hubspotscore}})"
    • Add to static list: "Active MQLs"
  2. Else branch (already MQL or further)
    • No action, exit workflow.

Known pitfalls

  • Score is recalculated often (page views, email opens). Without re-enrollment scoped to the score property only, this workflow can re-check the same contact many times a day; keep re-enrollment tied to HubSpot Score alone.
  • A workflow can set lifecycle stage backward if branch logic is not careful. Always gate with the lifecycle-stage filter shown above, or pair this with marketing-ops-033.
  • If both a workflow and a form's own "set lifecycle stage on submit" option try to write the property, the two can race. Check each form's options before enabling this workflow: the form-level setting is the "Set lifecycle stage" dropdown in the form's submission settings, and it never moves a contact backwards (https://knowledge.hubspot.com/forms/create-and-edit-forms).
  • Native HubSpot Score does not reset on its own; it only changes via the scoring rule engine. Custom score properties behave differently depending on your calculated-property setup, verify before assuming a score drop elsewhere in your automation.
  • Keep the threshold value in this one workflow. Sales will ask "why is this contact an MQL" and the answer needs to be a single documented number, not folklore.

Test plan

  1. Create a test contact with Lifecycle stage = Lead and a score below the threshold.
  2. Trigger scoring engagement (or manually set the score property, if your permissions allow) to push the score at or above the threshold.
  3. Open workflow history (Automation > Workflows > this workflow > History) and confirm enrollment fired shortly after the recalculation.
  4. Check the contact record timeline for "Lifecycle stage changed to Marketing Qualified Lead" and confirm MQL date populated.
  5. Confirm the internal notification arrived and the contact appears on the "Active MQLs" list.

The UAT script of this spec holds 4 cases: a negative case, one case per branch, the expected result of each and a sign-off sheet. It comes as Markdown and as a CSV for your spreadsheet.

Variants

  • Company-level scoring: same pattern, object company, using a custom company score property.
  • Two-tier MQL (Grade A/B) with split notification cadence: see marketing-ops-019.
  • Product-usage-driven promotion instead of score-driven: see marketing-ops-024.

Build spec

Build specYAML, swipe
trigger:
  type: event-based
  event: property_changed
  property: hubspotscore
  criteria:
    - hubspotscore: greater_than_or_equal 70
    - lifecycle_stage: not_in [marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, other]
  reenrollment: true
  reenrollment_property: hubspotscore
branches:
  - condition: lifecycle_stage in [subscriber, lead, unknown]
    actions:
      - type: set_lifecycle_stage
        value: marketingqualifiedlead
      - type: set_property_value
        property: mql_date
        value: current_date
      - type: send_internal_email_notification
        to: marketing_ops_distribution
        subject: "New MQL: {{contact.firstname}} {{contact.lastname}} (score {{contact.hubspotscore}})"
      - type: add_to_static_list
        list: "Active MQLs"
  - condition: else
    actions: []

Files and install

FileWhat it holds
PDF and MarkdownThe spec as you read it here, with the YAML build spec at the end.
Properties JSONCreates the fields in one API call.
Workflow JSONDocuments the build: the workflow in Automation API v4 format, switched off.
UAT scriptThe test cases, the expected results and a sign-off sheet, as Markdown and CSV.

Take the PDF and build it by hand. One-click install comes with a category pack or the full library.

Get the 12 free specs as a pack

Nothing deleted, enabled or enrolled.

marketing-ops-001Spec version 2026-09

Read 12 complete specs before you pay.

One per category, same format as the paid ones. Email only, no card.

We email the link, then a short note when specs change. Nothing else.

All 12 free specs by email, no card.