Lead source and attribution

Lead source classification taxonomy, designed and built into your CRM

We design the taxonomy, enforce it as real picklist values, migrate your historical records onto it, and leave you with reporting your board can question without the answer changing.

We wrote the lead source taxonomy in our documentation, and we are the team that installs it. Rated 4.9 / 5 on G2.

Two LeanScale operators working through a CRM build on a laptop

Levels

Three, one per audience

Source values

16, tied to budget lines

Project cycle

4 to 12 weeks

Platforms

Salesforce and HubSpot

The problem

Why lead source classification
breaks in every growing company

The failure is so consistent across companies that it is practically a developmental stage. Four causes, and they compound.

01

The field is free text

Someone typed โ€œWebinarโ€. Someone else typed โ€œwebinarโ€, โ€œWebinar - Q3โ€, โ€œWebโ€, and โ€œwbinarโ€. Salesforce now holds 400 distinct values for a field with about a dozen real answers, and every report built on it is wrong in a way that is invisible until someone checks.

02

Channel and campaign are collapsed into one value

โ€œQ3 LinkedIn Retarget Adโ€ is a channel and a campaign crushed into a single string. You can no longer answer โ€œhow much pipeline came from paid socialโ€ without a text parse, because the channel was never stored as its own fact.

03

There is no hierarchy

Executives want four categories. Marketing operations needs sixty. With one flat field, either the board view is unreadable or the ops view is useless, and whichever group loses the argument starts keeping a private spreadsheet.

04

First touch and last touch are not distinguished

The field gets overwritten on the last interaction, so the demo request that closed a deal is credited over the webinar that created it. Marketing and sales then present different pipeline-origin numbers from the same CRM, and both are defensible.

The cost

What bad lead source
data costs you

The cost is rarely counted, because the symptoms get attributed to other things.


Budget gets misallocated first. If paid social is under-credited because its campaigns were logged as free text and never rolled up, it gets cut in the next planning cycle, and the pipeline it was quietly generating disappears two quarters later with no obvious cause.


Then the board conversation degrades. A CRO who cannot answer โ€œwhere did this quarterโ€™s pipeline come fromโ€ in one number, without caveats, does not get asked a smaller question next quarter. They get asked the same question with less patience, and they start building the answer by hand.


Then marketing and sales stop agreeing on reality. When the two teams pull pipeline-origin numbers that do not reconcile, the argument stops being about strategy and becomes about whose report is right. That argument is unwinnable by design, because both reports are correct readings of an incoherent field.


And the manual work compounds. Somebody, usually the newest ops hire, spends several days a month reconciling source data by hand so that a board deck can exist. That work is invisible, it is never on a roadmap, and it never ends, because the underlying field keeps degrading faster than it gets cleaned.


None of this is a reporting problem. It is a data model problem that only becomes visible in reports.

The framework

The three-level
lead source taxonomy

This is the framework we publish and the one we install. Three levels, each answering to a different audience, so nobody needs a private spreadsheet.

Executives

Level 1: Lead Source Grouping

The broad category, built for executives and the board. Four to six values, maximum: Marketing, Sales, Partner, Customer Success and Direct. This is the level that answers โ€œwhere does our pipeline come fromโ€ in a single chart that does not need a legend.

Functional leaders

Level 2: Lead Source

The specific source, built for functional leaders and tied to budget lines. Events, paid ads, sales development representative (SDR) outreach, organic search, webinars, content, partner referrals, customer referrals. This is the level where spend maps to return, so every value here should correspond to something somebody owns a budget for.

Marketing ops

Level 3: Lead Source Details

The granular channel or campaign, built for marketing operations. The specific trade show, the specific webinar, the specific ad set. This level is captured automatically from Urchin Tracking Module (UTM) parameters and integrations rather than typed by a human, which is the only reason it stays clean.

Level 1: Grouping

Level 1: Grouping

Level 2: Lead Source

Level 2: Lead Source

Level 3: Details (captured, not typed)

Level 3: Details (captured, not typed)

Marketing

Marketing

Organic search

Organic search

Landing page, query group

Landing page, query group

Marketing

Marketing

Paid search

Paid search

Campaign, ad group, keyword

Campaign, ad group, keyword

Marketing

Marketing

Paid social

Paid social

Campaign, ad set, creative

Campaign, ad set, creative

Marketing

Marketing

Organic social

Organic social

Post, channel

Post, channel

Marketing

Marketing

Email

Email

Campaign, send

Campaign, send

Marketing

Marketing

Content and resources

Content and resources

Asset, gated or ungated

Asset, gated or ungated

Marketing

Marketing

Webinar

Webinar

Event name, date

Event name, date

Marketing

Marketing

Events

Events

Event name, booth or session

Event name, booth or session

Sales

Sales

Outbound email

Outbound email

Sequence, SDR

Sequence, SDR

Sales

Sales

Cold call

Cold call

Campaign, SDR

Campaign, SDR

Sales

Sales

Sales referral

Sales referral

Referring rep

Referring rep

Partner

Partner

Referral partner

Referral partner

Partner account

Partner account

Partner

Partner

Affiliate

Affiliate

Affiliate account

Affiliate account

Customer Success

Customer Success

Customer referral

Customer referral

Referring account

Referring account

Customer Success

Customer Success

Expansion

Expansion

Originating account

Originating account

Direct

Direct

Direct or unattributed

Direct or unattributed

Landing page

Landing page

Sizing

Sixteen Level 2 values is deliberate. Fewer than about seven and the taxonomy cannot distinguish the channels you actually fund. More than about twenty and reps start guessing, which reintroduces the free-text problem with extra steps. The exact count should match the number of things you have a budget line for.

Governance

Every taxonomy degrades back to free text without a named owner and a change process. Level 1 and Level 2 are closed picklists that only one named owner can change, on a documented request. Level 3 is captured automatically and never typed. A taxonomy without that rule survives about a year.

Normalization

Lead source normalization:
mapping 400 messy values to 16 clean ones

Designing the taxonomy is the easy half. The hard half is that you already have years of records carrying values nobody agreed on, and those records are in every historical report your team trusts.


Normalization is the mapping layer: every existing value gets assigned to a clean Level 1 and Level 2 pair, the mapping gets reviewed by the people who created the values, and then it gets applied to history as well as to new records.

Messy existing value

Messy existing value

Level 1

Level 1

Level 2

Level 2

โ€œwbinarโ€, โ€œWebinar - Q3โ€, โ€œwebinar signupโ€

โ€œwbinarโ€, โ€œWebinar - Q3โ€, โ€œwebinar signupโ€

Marketing

Marketing

Webinar

Webinar

โ€œLI Adโ€, โ€œQ3 LinkedIn Retargetโ€

โ€œLI Adโ€, โ€œQ3 LinkedIn Retargetโ€

Marketing

Marketing

Paid social

Paid social

โ€œadwordsโ€, โ€œPPCโ€

โ€œadwordsโ€, โ€œPPCโ€

Marketing

Marketing

Paid search

Paid search

โ€œSDRโ€, โ€œOutboundโ€, โ€œCold email seq 4โ€

โ€œSDRโ€, โ€œOutboundโ€, โ€œCold email seq 4โ€

Sales

Sales

Outbound email

Outbound email

โ€œcust refโ€, โ€œfrom customerโ€

โ€œcust refโ€, โ€œfrom customerโ€

Customer Success

Customer Success

Customer referral

Customer referral

โ€œWebsiteโ€, โ€œwebโ€, โ€œcontact formโ€

โ€œWebsiteโ€, โ€œwebโ€, โ€œcontact formโ€

Direct

Direct

Direct or unattributed

Direct or unattributed

blank, โ€œOtherโ€, โ€œUnknownโ€, โ€œ-โ€

blank, โ€œOtherโ€, โ€œUnknownโ€, โ€œ-โ€

Direct

Direct

Direct or unattributed

Direct or unattributed

The rule that matters

Anything genuinely unknown maps to a single honest โ€œunattributedโ€ value rather than being distributed across plausible categories. A taxonomy that guesses is worse than one that admits a gap, because a guess cannot be audited and it silently inflates whichever channel absorbed it.

Rollout

Rolling it out without breaking
your historical reports

This is the part the framework articles skip, and it is the part that decides whether the project succeeds or gets quietly rolled back.


The naive rollout ships a clean picklist on a Monday, and on Tuesday every trend line in the business breaks at the boundary. Pre-migration records carry old values and post-migration records carry new ones, so year-over-year comparisons stop working, the board deck built last quarter cannot be reproduced, and within a month somebody has restored the old field โ€œtemporarilyโ€ alongside the new one. Now there are two fields and neither is trusted.


The sequence that works runs in five steps.

01

Preserve the original value

Copy every existing raw value into an archival field before mapping or converting anything. It costs one field and it is the difference between a reversible migration and an irreversible one.

02

Freeze new free-text entry

Convert the field to a closed picklist before touching history, so the problem stops growing while the migration runs.

03

Backfill history through the mapping

Apply the normalization map to historical records so trend lines run continuously across the cutover. Reports built on the new taxonomy should reach back through the archive, not start from go-live.

04

Rebuild the reports on the new levels, then reconcile

Run the old and new reports side by side for one full reporting period and explain every variance before retiring the old view. Unexplained variances are mapping errors, and finding them now is much cheaper than finding them in a board meeting.

05

Hand over the governance

Name the owner of the picklist, document the change-request process, and set the automation that captures Level 3 from UTM parameters and integrations so nobody types it.

We do this work in your Salesforce or HubSpot instance as part of a project cycle: the mapping is tested in a sandbox and reconciled, then released in a controlled deployment alongside your team.


The full framework, including audience mapping per level, is published in our lead source taxonomy documentation.

Customer proof

Attribution work we do,
and who we do it for

Lead and opportunity attribution is one of the standard projects in our practice catalog. Weโ€™ve owned the GTM systems for 100+ growth-stage B2B SaaS companies, including Mistral AI, Chainguard, AssemblyAI, Clio, Factory.ai, Anrok and Integrate.io, on a 90-day rolling subscription with a dedicated pod. Read our case studies.

Selected customers

Mistral AI

Mistral AI

Chainguard

Chainguard

AssemblyAI

AssemblyAI

Clio

Clio

Fountain

Fountain

RunPod

RunPod

Factory.ai

Factory.ai

Ocrolus

Ocrolus

Anrok

Anrok

Act-On

Act-On

GreyNoise

GreyNoise

Integrate.io

Integrate.io

CallRail

CallRail

Patlytics

Patlytics

SpyCloud

SpyCloud

Scandit

Scandit

Coactive

Coactive

wealth.com

wealth.com

OpenArt

OpenArt

OnBoard

OnBoard

Customer review ยท G2

VP, Go-to-Market Operations

โ€œLeanScale is an absolute partner in our go-to-market motion. They are experts when it comes to our technology stack as well as our business processes.โ€

David B.

FAQ

Lead source taxonomy
questions, answered

01

What is a lead source classification taxonomy?

It is a controlled, hierarchical set of values for recording where a lead came from, enforced as picklists rather than free text. A working taxonomy has levels, so executives, functional leaders and marketing operations can each read the same data at the detail they need.

02

How many lead source categories should we have?

Four to six at the executive level, and roughly seven to twenty at the source level, matched to the things you hold a budget for. Below that range the taxonomy cannot distinguish the channels you fund. Above it, reps guess.

03

What are the main types of lead sources?

At the grouping level: marketing, sales, partner, customer success and direct. Underneath those sit the specific sources: organic search, paid search, paid social, email, events, webinars, outbound, referrals and expansion.

04

Should lead source be first touch or last touch?

Store both, as separate fields, and never overwrite the first. First touch answers what created the opportunity, last touch answers what converted it. Overwriting one field with the other is the single most common cause of marketing and sales reporting different pipeline origins.

05

How do we clean up hundreds of existing lead source values?

Through a normalization map: every existing value is assigned to a clean grouping and source pair, the mapping is reviewed by the people who created the values, the raw original is archived, and then the map is applied to historical records as well as new ones.

06

Will this break our historical reporting?

Not if the history is backfilled through the same mapping and the old and new reports are reconciled side by side for a full reporting period before the old view is retired. Breaking trend lines at the cutover is the most common failure in this project, and it is avoidable.

07

Does this work in Salesforce and HubSpot?

Both. The taxonomy design is platform-independent. The enforcement mechanics differ: picklists and validation rules in Salesforce, properties and workflows in HubSpot. The automation that captures campaign detail from UTM parameters is configured per platform.

08

How do we stop it degrading back into free text?

Close the picklists, name one owner who can change them, document the change-request process, and capture the most granular level automatically from UTM parameters and integrations rather than letting anyone type it. Taxonomies without an owner last about a year.

09

How long does an implementation take?

It is normally one project cycle, which runs 4 to 12 weeks depending on how many historical records need mapping and how many reports depend on the field.

10

Can we do this ourselves?

Yes, and the full framework is published free in our documentation. Teams usually bring us in for the migration rather than the design, because backfilling years of records onto a new taxonomy without breaking live reporting is the part that is hard to do while also running the business.

Get started

Find out what your lead source data is actually telling you

Run a GTM diagnostic and we will look at your lead source field with you: how many distinct values it holds, and which of your reports depend on it.

Powering startups backed by the biggest VCs in tech

Lightspeed

a16z

General Catalyst

Insight Partners

Bessemer

Updata

Sapphire