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.

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.
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.
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

Chainguard

AssemblyAI

Clio

Fountain

RunPod

Factory.ai
Ocrolus

Anrok

Act-On

GreyNoise

Integrate.io

CallRail

Patlytics

SpyCloud

Scandit

Coactive

wealth.com
OpenArt

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.
4.9 / 5
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