Best Practices for Lifecycle Tracking in Salesforce / HubSpot
CRMs have default ways to track lifecycle, but these defaults were created many years ago when the journey was less complex. Nowadays, it is impossible for an enterprise to actually use the default lifecycle tracking in CRMs.
So far at HockeyStack we have seen every type of lifecycle tracking in existence and where they fall short and where they shine.
Common problems / questions:
Lead object and Contact object does not tie together, how do I manage this?
Lead object and Opportunity object does not tie together, how do I manage this?
What if I want to re-MQL a Lead/Contact?
I use CampaignMembers but I can't really enroll a single Lead to the same campaign twice
Can we just use Opportunity stage change dates for our lifecycle tracking?
I have leads and contacts that refer to the same person, how can I count them only once?
These are only the most common questions, but there are actually hundreds of more questions that come up about lifecycle tracking when we work with our customers.
While finding answers to these questions, we keep going back to a very specific way of tracking the lifecycle: using custom objects.
The recommended best practice for lifecycle tracking, which solves all of the above questions and more, is by creating a custom object where each lifecycle change is a new record.
To set up:
Create a model of what each lifecycle stage is
Use a minimal number of stages. e.g. Do not dump every single opportunity stage as a lifecycle stage.
Do not have parallel stages. e.g. Inbound Demo and SDR Demo Booked refer to the same stage if they are mutually exclusive and happen between the same two stages. The Inbound vs SDR distinction can be made separately in the custom object.
If you have separate funnels (like a separate Post-Sales funnel and a New Business funnel), mark them separately
Create the lifecycle object
The object should have relations to Opportunity, Account, Lead, and Contact.
The object should have a stage change date field
It should have a field called LeadOrContactId which is a relation to either Contact if that exists, or Lead if Contact does not exist
For each lifecycle stage, create a Flow to create new record in the custom object once a stage change occurs
If the stage change goes back stages rather than moving forward, delete or mark invalid the stages that were reversed.
If a Lead is converted to a Contact, or a Contact exists with the same email as the Lead, the Contact record must be stamped as a relation for all of the lifecycle records connected to that Lead
Duplicate Leads and Contacts must be eliminated (e.g. there can be no two Contacts that have the same email address)
Last updated