Workflow to sync or update Lifecycle Stage based on Lead Score tiers

SOLVE
AllenHelms
Contributor | Gold Partner

What is the HubSpot advised best practice for syncing or updating Contact Lifecycle Stages based on their Lead Score? I have tried several different approaches with workflows, but none of them seem to work cleanly.

 

Specifically, we are using Lead Scoring to track ongoing engagment levels and the Contacts score increases every time they submit forms, attend webinars, revist the website etc. No big deal here.

 

We then want to map those scores into tiers/levels that will automatically promote the Contact to the appropriate Lifecycle Stage everytime their score move up or down to a different tier/level:

 

0-24 = Subscriber

25-49 = Lead

50-99 = MQL

>100 = SQL

 

The catch is that if it is already an Opportunity, Customer, Evangelist, Other, there should be no changes to the Lifecycle Stage (i.e. we don't want to take a Contact that is already in the bottom of the funnel as an Opportunity or Customer and demote them - that would be bad).

 

This has made it more complicated than I imagined:

 

  • If you use enrollment criteria with more than one attribute (Not a "Customer" & Score = x, or Stage = Sub, MQL, Lead, SQL), the workflow setting for auto re-enrollment cannot be used, so the Contact can only pass through the workflow one time. This won't work because Contact will need to be updated more than once.
  • If you use multiple separate workflows with a single criteria (Workflow1 - Score is 0-24, Workflow 2 - score is 25-49, etc), this apparently creates data collisions as each workflow attempts to run at the same time evaluating/updating the same property. This is creating workflow misfires. 
  • Finally, assuming there is a way to create a decent workflow (or set of workflows), how does HubSpot continue to re-evaluate all of the Contacts without creating an infinite loop? In other words, if you allow workflow re-enrollment, when does the workflow ever stop? If you evaluate a Contact with Lead Score =20, does the workflow stop and somehow know to resume when the score is increased to 25 (i.e. only triggered by changes to the Lead Score property)?

 

I have to be missing something tiny here because I know someone has figured this out already....

1 Accepted solution

Accepted Solutions
AllenHelms
Solution
Contributor | Gold Partner

OK, thanks to some friendly help from Lindsay in HubSpot Support, I think I may have come up with a pretty slick solution in case anyone ever stumbles upon this with a similar requirement.

 

One super cool trick is to use SmartLists as your Workflow entry criteria. That way, you can filter for multiple values AND allow for re-enrollment. This means the Workflow can keep working for you in the backround whenever the Lead Score changes. An additional benefit is that you can refer to the SmartLists over time to see if there are any problems because if this is working correctly, each of the SmartLists should be empty!

 

So, I created the 4 separate SmartLists because I need the Contact to be able to jump from one tier to the next:

Lead Score SmartLists.PNG

 

In each of the SmartLists, I set the filters for the Lead Score tier I wanted for each Stage (see above) and Stages I wanted examined (anything between a Subscriber & SQL) EXCEPT the Stage that represents the correct Tier (in other words, if the Contact is already in the correct Stage according to the Lead Score Tier, I want to leave it alone).

Lead Score SmartLists Filters.PNG

 

Now, I set the up the Workflow to use each of these SmartLists for the Entry Criteria separately and made sure to enable re-enrollment if they move from one SmartList to the other.

Lead Score Workflow.PNG

 

Lead Score Workflow Reenrollment.PNG

I then build in 3 If/Then branches based off of the Lead Score Value: If Lead Score =>100, then Clear the Lifecycle Stage and Reset Lifecycle Stage to SQL; If Lead Score => 50, then Clear Lifecycle Stage and Reset to MQL etc. all the way through my tiers.

 

 Finally, I make sure the Workflow settings will remove the Contact from the Workflow once it is executed. So far, it is working like a champ.

 

NOTE: This set up will preclude ANY User from manually changing the Lifecycle Stage for those stages included since this Workflow will overwrite their changes immediately. It can can also conflict if you have any other Workflows that change the Lifecycle Stage.

 

Does anyone have anything similar that works better or attempt to automate Lead Scoring differently?

 

Allen Helms

HubSpot/SalesForce CRM Consultant

www.OrganicEndeavors.com

OE Logo.png

 

 

 

View solution in original post

5 Replies 5
AllenHelms
Solution
Contributor | Gold Partner

OK, thanks to some friendly help from Lindsay in HubSpot Support, I think I may have come up with a pretty slick solution in case anyone ever stumbles upon this with a similar requirement.

 

One super cool trick is to use SmartLists as your Workflow entry criteria. That way, you can filter for multiple values AND allow for re-enrollment. This means the Workflow can keep working for you in the backround whenever the Lead Score changes. An additional benefit is that you can refer to the SmartLists over time to see if there are any problems because if this is working correctly, each of the SmartLists should be empty!

 

So, I created the 4 separate SmartLists because I need the Contact to be able to jump from one tier to the next:

Lead Score SmartLists.PNG

 

In each of the SmartLists, I set the filters for the Lead Score tier I wanted for each Stage (see above) and Stages I wanted examined (anything between a Subscriber & SQL) EXCEPT the Stage that represents the correct Tier (in other words, if the Contact is already in the correct Stage according to the Lead Score Tier, I want to leave it alone).

Lead Score SmartLists Filters.PNG

 

Now, I set the up the Workflow to use each of these SmartLists for the Entry Criteria separately and made sure to enable re-enrollment if they move from one SmartList to the other.

Lead Score Workflow.PNG

 

Lead Score Workflow Reenrollment.PNG

I then build in 3 If/Then branches based off of the Lead Score Value: If Lead Score =>100, then Clear the Lifecycle Stage and Reset Lifecycle Stage to SQL; If Lead Score => 50, then Clear Lifecycle Stage and Reset to MQL etc. all the way through my tiers.

 

 Finally, I make sure the Workflow settings will remove the Contact from the Workflow once it is executed. So far, it is working like a champ.

 

NOTE: This set up will preclude ANY User from manually changing the Lifecycle Stage for those stages included since this Workflow will overwrite their changes immediately. It can can also conflict if you have any other Workflows that change the Lifecycle Stage.

 

Does anyone have anything similar that works better or attempt to automate Lead Scoring differently?

 

Allen Helms

HubSpot/SalesForce CRM Consultant

www.OrganicEndeavors.com

OE Logo.png

 

 

 

View solution in original post

bradmin
Key Advisor

Hi, @AllenHelms. The solution you've worked through will work fine for you on the HubSpot side. An alternate way to approach this might be through Salesforce-side automation. 

 

Since workflow/Process Builder automation or Apex will allow you more robust opportunities to manipulate synced fields, it may be worth creating some kind of helper field in Salesforce, driven by Salesforce-side automation or calculation, then have a HubSpot workflow make the desired update to the lifecycle stage property. [While lifecycle stage can be mapped from HubSpot to Salesforce, you want to treat the field as read-only in Salesforce.]

 

From your example, I'm assuming all of the properties you described are mapped between HubSpot and Salesforce. Create a helper field on leads and contacts with the same label and API name. Let's call it New Lifecycle Stage. Make sure this new Salesforce field is mapped to HubSpot, too.

 

On create or update, some sort of automation fires that sets or changes the value of New Lifecycle Stage to the desired value. [I wouldn't use a calculated field for this, as those can be recalculated in Salesforce without its record actually being updated. I'm uncertain if the connector fires in this use case.]

 

In HubSpot, you can then set a very simple workflow: When New Lifecycle Stage is known and is different from the default Lifecycle Stage property value, the HubSpot workflow clears the Lifecyckle Stage value, then sets it equal to the New Lifecycle Stage value. 

 

By doing the calculation and conditional critieria in Salesforce, you'll save yourself the extra workflow branching in HubSpot. The tradeoff to this approach is that if any of the properties are manipulated first in HubSpot, they'd need to sync to Salesforce, the desired value syncs back, and then the workflow fires. This could add up to 15 minutes of extra transaction time. If that's too impactful, this general approach won't work. 


Brad Mampe, Salesforce Analyst, Fidelity
I'm probably wrong. I may not be right about that.
0 Upvotes
AllenHelms
Contributor | Gold Partner

Hey @bradmin!

 

Thanks for taking the time respond! I was sorta hoping you would weigh in since you obviously have a great technical knowledge in this area....

 

In this case, though, I am actually implementing this for a client that we helped move from SalesForce CRM to HubSpot CRM (yea!), so creating this automation in SalesForce isn't an option for us.  Further, I typically try to design the clients Lead Gen process to handle as much of the "Lead Qualfication" from inside of HubSpot as possible since that is where most of the interactions take place. So far, the solution I list above seems to be working pretty well for us.

 

But, since I almost exclusively work with integrating SalesForce with HubSpot, your idea could be relevant in a number of different use cases. For example, I could see this working very well if you wanted to try and tie something like the SalesForce Lead Status to the HS Lead Score & Lifecycle Stage or if the client had a couple of steps to confirm if Sales has accepted the "Lead" before conversion takes place.

 

Again, really appreciate you taking the time to respond to such a specific Use Case! You are an amazing resource and I'm grateful to have you here.

 

Allen Helms

HubSpot/SalesForce CRM Consultant

www.OrganicEndeavors.com

OE Logo.png

 

mphed
Contributor

Hi, I have somewhat been struggling with the same question and wasn't really sure how to address it. Lifecycle Stage seems to be the correct contact property to use together with HubSpot Score. However, to match our marketing process the steps in Lifecycle Stage are to few and cannot be edited 😞 Also we send contacts to our sales tool (Dynamics 365) when the contact has become MQL, so before that we only have to stages; Subscriber and Lead. But by using Lifecycle Stage you can get proper reporting with funnels and stuff.

 

I created a separate contact property to use which I called Lead grade where we use four stages; Freezing (0-19), Cold (20-49), Warm (50-99) and Hot (100-129). At HubSpot score of 130 a workflow changes Lifecycle Stage to MQL and the contact is sent as a sales lead to Dynamics365 for evaluation/approval. If the contact is approved by the sales team Lifecycle Stage is updated to SQL.

 

Our reason to create a Lead Grade was to be able to use that information in campaigns and nurturing programs to use contacts' engagement level. But maybe creating smart lists is a better approach?

 

What are your ideas on this?

0 Upvotes
AllenHelms
Contributor | Gold Partner

Thanks for sharing Mphed and yes, I think you are on the right track. If the 3 "top of the funnel" HubSpot Lifecycles Stages of Subscriber, Lead, and MQL don't give you enough steps for your qualification process, you can certainly create a separate property ("Lead Grade" or I have sometimes used "Lead/Contact Status" because I like to sync Contacts in both system. This will do exactly what you are asking for which will effectively give you more room in your process.

 

In this case, I would continue to use Lifecycle Stage as sort of the parent value and roll up/map your "Lead Grades" into the appropriate Lifecycle Stage. For example: Freezing might roll up to Subscriber, Cold & Warm might roll to Lead, and Hot might roll to MQL. That way you can continue to take advantage of the standard Lifecycle reporting in HubSpot. You could also use lists as you mention, but I think your solution is a bit simpler to manage. Lists might come in if you want to start triggering more workflows than you seem to need at this point.

 

Another option (just because this is normally a situation when trying to integrate with Microsoft, Salesforce or another external CRM since HubSpot is largely about tracking Lifecycle Stages and CRMs are largely about tracking Opp Stages) is to push some of your qualification process either forward or backward into one system or the other - depending on which system you want your Lead Gen team to live/work in. 

 

For example, if your team is more comfortable qualifying Leads in HubSpot, you could have them also complete the SQL step in HubSpot before sending to MS Dynamics as a new Lead or Opportunity. Or, you could sort of go the other way and create a new "marketing" stage or two at the beginning of the Opportunity (I sometimes like to create an "Opp Stage Zero - Sales Qualification" which is a "safety" zone that is omitted from sales forecasts and Sales Users can easily close an Opp stage Zero with a simple reason "why" that provides excellent feedback for the Lead Gen team). We shouldn't be afraid to create Opps for Sales because this is what we are getting paid to do and this also provides great reporting because everyone can see exactly what happens to all the SQL/Opps that have been created as a direct result of Lead Gen/Marketing efforts.

 

Allen Helms

HubSpot/SalesForce CRM Consultant