MQL vs SQL
A marketing-qualified lead (MQL) is a lead that marketing judges ready for sales, based on fit and engagement criteria your teams agree on, such as a demo request or a lead score above a threshold. A sales-qualified lead (SQL) is a lead that a rep has reviewed and accepted as worth pursuing. Marketing sets the MQL status, usually automatically, and the rep sets the SQL status in the CRM.The MQL handoff at a glance
Setup for the MQL handoff
Fire the workflow once per MQL
The Condition on CRM Record Updated checks the record as it is after each update. It has no “changed to” operator and does not remember the previous value, so a condition on the status alone matches every later update to that lead, including the owner this workflow writes.
Use the second form. In the condition builder, Fields Updated is the list of fields the update
changed, and the record’s own fields are under Object Fields. Together they mean “changed to
MQL”.
- A lead that returns to MQL runs again. A lead that leaves MQL, for example when a rep recycles it, and later reaches MQL again starts a new run.
- Salesforce Leads created at MQL fire a different trigger. A Lead created with
Lead Statusalready set toMQLfires CRM Record Created, not CRM Record Updated. If forms or imports create Leads at MQL, build a second workflow with the same nodes that starts from CRM Record Created, with the conditionLead StatusequalsMQL.
Build the MQL handoff workflow
This example hands every Salesforce Lead that changes toMQL to the next sales development rep
(SDR) in a queue named Inbound SDRs, writes the SDR as the owner, and sends them a Slack message.
1
Add the trigger
In Workflows, create a workflow and add the CRM Record Updated trigger. Set CRM to
Salesforce and Record to Lead.
2
Fire only when the status changes to MQL
Under Condition, add 2 conditions joined with And: Fields Updated contains any of
Lead Status, and, from Object Fields, Lead Status equals MQL.3
Fill gaps with enrichment
Add Enrich Data. Set Enrichment target to Both and choose a provider or waterfall in
Enrichment source. Default takes the Lead’s email from the trigger, so you can leave
Email / Domain (optional) empty.
4
Pick the rep
Add Round-Robin and set Queue to
Inbound SDRs. The queue’s policy picks the rep and
passes them to later nodes as Latest assigned user.5
Write the owner
Add Update Record. Set Platform to Salesforce, Record Type to Lead, and
Record to update to the Lead’s record ID from the trigger. Under Fields, set
Owner ID to
Latest assigned user.To mark the handoff, also set Lead Status to the value your team uses for a lead waiting on its
rep, for example Assigned. That write changes the status, but not to MQL, so it does not
start the workflow again.6
Tell the rep
Add Send Slack Message. Set Recipients to Latest assigned user, and write a
Message with the lead’s name, company, and enriched details. Type
{{ to insert them. To
keep a team record of handoffs, also pick a channel in Slack channels.7
Add the lead to the rep's sequence (optional)
Add a sequencing node such as Add to Outreach Sequence, with Sending mailbox set to
Latest assigned user. See
Send routed leads to sales sequences.
8
Test and publish
Select Test and choose the trigger. In the sample, fill in the
Email and Id of a test
Lead, set Status to MQL, and add "Status" to fieldsUpdated. Select Run Test, then
check the owner in Salesforce and the message in Slack. Then select Publish and check that
the status next to the deployment switch reads Live. A
new workflow goes live when you first publish it. If the status reads Paused, turn the
switch on.Owner ID and Recipients to Latest resolved user. Resolved can arrive without a user
when the matched queue has no active members, so check that Latest resolved user exists with a
Multi-Branch node first. Send Else, which runs when no rule picks an owner, to a
Round-Robin node on a catch-all queue, followed by its own Update Record and
Send Slack Message that use Latest assigned user, because Latest resolved user is empty
on that path. See
What the workflow receives from Rules of Engagement.
Salesforce and HubSpot differences
In a HubSpot condition, the value list shows HubSpot’s internal names for lifecycle stages, so
Marketing Qualified Lead appears as
marketingqualifiedlead. In a HubSpot test sample, fill in
email and hs_object_id, set lifecyclestage, and add "lifecyclestage" to fieldsUpdated.
Hand off leads that reach MQL by score
Many teams set MQL when a lead score crosses a threshold. Pick the path that matches where the score lives:- Your CRM keeps the score. Build a second, small workflow on CRM Record Updated with 3
conditions: Fields Updated contains any of your score field, the score is at least
your threshold, for example
80, and the status is any of the values before MQL, such asOpen - Not ContactedinLead Status, orleadin a HubSpotLifecycle Stage. Its only node is Update Record, which sets the status to your MQL value. That status change starts the handoff workflow above. The status condition stops later score changes from running it again once the lead has moved on. - Marketo keeps the score. A Marketo smart campaign calls a Default webhook when the score crosses your threshold, and the workflow starts from Incoming Webhook. See Route Marketo leads when they reach a lead score threshold.
- Default computes the score. A workflow can score or tier the lead and write the result to a CRM field. In that same workflow, set the MQL status with Update Record, or route the lead right away. See Lead scoring with Default.
Where the rep accepts or rejects the lead
The SQL decision lives on the CRM record, so reports on MQL to SQL conversion use your CRM’s own data. The rep accepts or rejects the lead there:
To act on a rejection, build another workflow on CRM Record Updated with Fields Updated
contains any of
Lead Status, and Lead Status equals your rejected value. For example,
post the lead to your marketing operations channel with Send Slack Message, or add it to a
nurture sequence.
To follow up when the rep doesn’t act, add these nodes to the end of the Salesforce handoff
workflow:
- Time Delay, set to your response window, for example 4 hours.
- Match Record with CRM set to Salesforce and Record set to Lead. Under
Match Details, match
Lead IDto the Lead’s record ID from the trigger, so the workflow reads the Lead’s current status. - Multi-Branch with a branch where the matched Lead’s
Lead Statusstill has the handoff value you set in Update Record, for exampleAssigned. On that branch, message the rep’s manager with Send Slack Message, or route again with Round-Robin and Update Record.
Check that the handoff worked
- Runs: open the workflow, select Runs, and open a run. Round-Robin shows the rep it picked, Update Record shows the fields it wrote, and Send Slack Message shows who received the message. See Run logs.
- Assignments: in Routing, select Assignments, then Object assignments, to see each routing decision and the scores behind it. See Routing logs.
- The CRM record: the Lead or Contact shows the new owner, and the handoff status if you wrote one.
Troubleshoot the MQL handoff
Related: Lead routing software from Default