← Back to blog

The problem with (SFDC) Leads

∙ 8 min

One of my son's drawings

I run Demand Generation at Webhelp. I’ve run this function before at other companies. If anyone should love “leads”, it should be me. “Lead Generation” is the core of my job and a lever B2B organizations can pull to build sales pipeline.

A more nuanced and relevant approach to Lead Generation in B2B enterprise marketing is Account-based Marketing. I won’t go into why it’s a no-brainer as a fundamental marketing approach because I’ve written on the topic in the past. This applies, in my estimation, to both product-driven and service-driven companies. It’s great stuff, when done right.

The Lead object in Salesforce

Let’s first differentiate leads from Leads.

This article explores Salesforce’s data model, from a marketer’s point of view. You likely avoid most headaches if you use a different CRM that uses a single object to model people. This seemingly small data model decision by Salesforce wreaks havoc is all sorts of ways.

Intelligent Demand did a great job articulating some of the conceptual problems with Salesforce’s data model and how it manifests as misalignment between sales and marketing. Especially in a B2B enterprise (account-centric) environment.

Here’s another oldie, but goodie, from Ken Pulverman.

Sponge also posted an article on the topic.

Conflating people with follow-ups

I agree with Intelligent Demand’s stance that using Tasks is a much better way to model follow-up prompts for sales teams.

Let’s look at IT support ticketing systems for inspiration. When you open a ticket due to an issue you’re facing, your ticket (associated to, but distinct from, your user) is queued up. The user itself isn’t what the IT support team needs to “work on”. Instead, they address the user’s ticket. Subsequently, the user may open another ticket…or many more in the future, and the IT support team would process those as well. Or maybe that user never opens a ticket. The user is not a ticket, and there is a one-to-many relationship between users and tickets.

In Demand Generation, a person is not an early-stage sales opportunity. A person can be any individual who is either ready or not ready for a sales followup. Maybe they’ll never be ready, and that’s ok. Or, there may be many key moments in that person’s journey when marketing wants to flag to sales that a follow-up would make sense. The person is not a follow-up prompt, and there is a one-to-many relationship between people and follow-up prompts. And so putting that person through a lead pipeline is confusing because it conflates concepts. A follow-up Task against that person is what should staged, flowing cleanly into the sales pipeline (modeled as an Opportunity). This setup cleanly sepeates concepts: your directory of people and companies from your pipeline operations. A Task-to-Opportunity conversion process is a workflow that a Salesforce administrator can set up.

Another reason databases diverge

Most Marketing Automation-to-Salesforce setups are configured such that new people records from the Marketing Automation system are synced into Salesforce as Leads, not as Contacts. This is a matter of common practice and convention. But it’s not a technical requirement.

The justification I’ve heard here is that “Contacts are people with whom we have a relationships, since they went through the Lead-to-Contact conversion process”. That argument doesn’t hold water in my experience.

HubSpot is one system that completely gets around this by having a single database for its Marketing Automation system and its CRM. I’m not aware of any other systems that manage to do this. Most others are two-database setups.

Colleagues have asked a simple question many times to which I still don’t have a solid answer: “Should I create that person as a Lead or a Contact in Salesforce?”. I don’t know what kind of guidance to give here. If you create them as a Lead, you’re implying that some sort of required follow-up. If you create them as a Contact, you circumvent Salesforce’s Lead-to-Opportunity workflow. Either way, you create issues.

And this is a big reason one might argue that “not all people captured in the Marketing Automation system should be synced into Salesforce”. Their existence as Leads implies that they’re in a queue, and have a status/stage. But…that may not really be the case. Campaign reporting requires that all people captured in your Marketing Automation get synced into Salesforce. This is independent of how many of those are ripe for sales follow-up.

You also want a holistic Account-level view as a marketer, salesperson or account manager. It’s important to know the names of all people within Accounts who exist in the Marketing Automation system, regardless of if a follow-up is necessary right now. It’s not possible to associate Leads to Accounts in Salesforce (because Leads bizarrely can also be converted into Accounts). The consequence of that is you have Leads are not associated to the Accounts to which they should be associated. Lead-to-Account Matching is a hacky workaround to this and has emerged as a feature of several ABM platforms to enable ABM at all in the midst of the Leads database. This reminds me of digging a hold just to turn around and fill it back in 10 minutes later. A data model that results in a conceptual bifurcation of your data only to re-unify it with brute force. Bizarre. This short video pretty well sums up how I feel about the disjointed data model and “Lead-to-Account Matching Features” to get back around it.

An example of how you can better organize Contacts into Accounts in Salesforce if you ditch Leads altogether (or even if you don’t)

And so the natural tension that arises from the two perspectives is hard, if not impossible, to reconcile. And the confusion that arises from it festers.

The holy grail of database sync

As a B2B marketer, I want the directory (people and companies) dataset between my Marketing Automation system and my CRM completely synced. I know this might sound controversial, but it really isn’t. This sync enables all sorts of great things in Account-based Marketing. It gives Sales and Account Management full visibility of our universe of people. It avoids duplicate, disconnected records. It avoids needing twice the number of reports in Salesforce: always one for Leads and one for Contacts. And the list goes on.

Going from two objects that model people to one object sets the stage for a complete 1:1 sync of the systems. Again, if you’re using HubSpot as both Marketing Automation and CRM, this issue doesn’t exist. But Salesforce is a much more established CRM player, so this is worth considering.

For those of you thinking that it’s too expensive to have all people and company records in both systems: it’s not. The amount of time and money you’ll spend making sense of unsynced databases likely dwarfs any extra database spend you’d have with your suppliers. Consider this carefully and act accordingly.

Leveraging built-in attribution

Salesforce has pretty good built-in Campaign-to-Opportunity attribution. The core of that, however, is the Contact object. In order for a Campaign to show influence on an Opportunity, a Contact object must sit in the middle.

That Contact object must both be a Campaign Member of a Campaign, and hold a Contact Role in an Opportunity. Then, and only then, is Campaign-to-Opportunity attribution established. Using Lead objects to model people hold things back here and requires users to go through a Lead-to-Contact conversion process to even make attribution possible.

Using Account metadata in Marketing Automation

An especially nasty bug in the two-object setup in Salesforce occurs back in the Marketing Automation system. Since Contacts in Salesforce are relationally bound to Accounts in Salesforce, your Marketing Automation system may be able to run queries of your database against those Contacts' Accounts via the database relation. This is a great feature to look out for when selecting a Marketing Automation platform. Here’s what I mean:

Smart List query: show me all the people whose Accounts are Target List Accounts in the entertainment sector.

This is a valuable query as a marketer and might reflect your company’s go-to-market segmentation strategy.

Your Marketing Automation system would depend on Salesforce’s relational integrity between Contacts and Accounts. But all the people in your Marketing Automation system synced to Leads would get missed out. Those Lead objects have no association to Accounts. They just wouldn’t show up in the query output, and there would be nothing to flag this to the Marketing Automation user. This subtle and mind-warping problem is a consequence of a confused data model of people and companies in Salesforce.

The People associated to Contacts have relationally associated Account metadata. But this isn’t the case for the People associated to Leads


I hope that I’ve been able to provoke some questions for you about the Lead object. It’s surely not the case that ditching them is always the right option. But in my experience, the more common problem is using it when it shouldn’t be used. I don’t see the value it adds as a B2B marketer. On the contrary: I think it creates confusion and misalignment between sales and marketing. And in a world of complexity, any opportunity to add value by stripping out complexity is worth seizing.

My recommendations for B2B marketers:

← Back to blog


X →

LinkedIn →

Mastodon →