Lead Source Taxonomy: How to Build One That Holds Up in Your CRM

A lead source taxonomy is a short, documented list of reporting categories, plus the rules that sort every raw label (“LinkedIn Ads,” “linkedin / cpc,” “paid-social”) into one of them. It keeps the original evidence in one field and the clean category in another. Build it with 8 to 12 mutually exclusive values, lock the first source so it never changes, and enforce the rules in your CRM instead of relying on people to remember them.
This guide covers the categories, the field design, the Salesforce mapping, and the governance that keeps it all from decaying.
TL;DR
- Use one small, mutually exclusive set of source categories, and keep campaign detail in a separate field.
- Store raw evidence (UTMs, referrer) apart from the normalized category your reports use.
- Keep two fields: an original source set once, and a latest source updated on re-engagement.
- In Salesforce, use a restricted picklist for Lead Source, Campaigns for detail, and map custom fields at lead conversion.
- Treat it as ongoing governance, not a one-time setup.
Table of Contents
- What a lead source taxonomy is, and what it is not
- The three layers: type, channel, campaign
- A starting set of categories
- Keep raw evidence and clean categories apart
- First touch, latest touch, offline, and unknown
- Mapping the taxonomy to Salesforce
- Capturing source data at the point of entry
- Governance: where taxonomies quietly fail
- Our perspective
- What a consistent taxonomy changes in reporting
- Need the taxonomy built, not just designed?
- FAQ
- Sources
What a lead source taxonomy is, and what it is not
A taxonomy is a naming system. It is not a channel strategy and it is not an attribution model, though it feeds both.
A lead source taxonomy turns inconsistent labels into a small set of reporting categories, keeping the original evidence and applying documented rules to a separate normalized field. That separation matters. If you overwrite raw data with your cleaned label, you can never audit or re-map it later.
The distinction from attribution is just as important. HubSpot explains that lead source tracking shows where leads come from, while attribution links those leads to business outcomes. Attribution models (first-touch, last-touch, multi-touch) decide how credit is spread. A taxonomy decides what the touches are called. If the labels are messy, no model can fix the output. For the modeling side, see our practical guide to multi-touch attribution setup.
One more boundary: lead source focuses on the entry point. LeadSources.io notes that, unlike multi-touch attribution, it looks only at how the lead first arrived rather than distributing credit across interactions. That makes it the right basis for questions like which channels create net-new demand and what each costs per lead.

The three layers: type, channel, campaign
Most broken taxonomies mix levels. “Webinar,” “Google Ads,” and “Q3 Product Launch” end up in one picklist even though they describe different things. Separate them.
Transformation Insights distinguishes three layers:
- Source type: Inbound, Outbound, Partner, Customer Expansion, Event.
- Channel: the specific mechanism inside the type, such as paid search or organic social.
- Campaign or program: the named initiative that produced the lead.
A practical rule: if the value changes every quarter, it belongs in the campaign layer. If it describes how someone converted (a demo request, a pricing page form), it is a conversion type, not a source. Attributy makes this point: “demo request” is not a source, and a clean structure keeps dimensions such as source, medium, campaign, conversion type, lead motion and landing page apart.
A starting set of categories
A commonly recommended structure includes Paid Search, Paid Social, Organic Search, Organic Social, Direct, Referral, Email, Events, Content and Partner. The same guidance says categories should be mutually exclusive, collectively exhaustive and aligned with your channel strategy (LeadSources.io).
Here is how we would adapt that for a B2B team:
| Category | What goes in | Typical raw evidence |
|---|---|---|
| Paid Search | Search ads | utm_medium=cpc, utm_source=google or bing |
| Paid Social | Sponsored posts, social lead forms | utm_medium=paid-social, linkedin / cpc |
| Organic Search | Unpaid search visits | Search engine referrer, no paid parameters |
| Organic Social | Unpaid posts, community | Social referrer, no paid parameters |
| Newsletters, outbound sequences you track as email | utm_medium=email | |
| Content | Gated assets, guides, tools | Asset-specific landing page |
| Events | Conferences, webinars, field events | Event badge scan, registration list |
| Partner | Co-marketing, resellers, integrations | Partner code or referral ID |
| Referral | Other sites, customer referrals | Non-search, non-social referrer |
| Direct | Typed URL, no usable evidence | No referrer, no parameters |
| Unknown | Source could not be determined | Missing or contradictory data |
That is 11 values, inside the range most teams can manage. The principle behind the size: granularity matters, but consistency matters more, and ten well-defined sources beat twenty inconsistent ones. The same source notes that most CRMs hold a Lead Source picklist of 8 to 12 options alongside a Campaign lookup that can carry unlimited detail.
Keep raw evidence and clean categories apart
Classify source and medium together. A platform name alone rarely proves the channel: “LinkedIn” could be an organic post, a sponsored ad, or an employee share (Leadzep).
The fields you want:
- Raw fields: utm_source, utm_medium, utm_campaign, referrer, landing page. Written once, never edited.
- Normalized source: the category from your picklist, assigned by documented mapping rules.
- Campaign: the named initiative, held in the CRM’s campaign object.
Write the mapping rules down as a plain table: raw value in, category out. When a new platform appears, you add a row instead of inventing a new category.
First touch, latest touch, offline, and unknown
Two source fields, not one
Keep the earliest eligible touchpoint and the most recent one separately. Leadzep recommends a first known source that is never overwritten by a later visit and a latest known source updated by qualifying events (Leadzep). ActiveProspect describes the same architecture: an Original Source set once at creation and immutable, and a Latest Source updated on every re-engagement.
Original source answers “what creates demand?” Latest source answers “what brings people back?” Collapsing them into one field forces you to lose one of the answers.
Offline and sales-sourced leads
Trade show scans, phone calls, and rep prospecting have no UTM. Give them explicit categories (Events, Outbound) and a required entry rule at creation. For store or call outcomes that need to connect back to marketing, our guide to durable offline conversion tracking from CRM and POS covers the data plumbing.
Referral and direct
Direct is where lost evidence goes to hide. TDstats warns that when teams tag inconsistently, one using social, another paid-social, a third omitting the parameter, reporting fragments and direct traffic gets inflated. Fix the tagging standard first, then audit what remains in Direct.
Unknown is a valid answer
Keep an Unknown value. MooseRank, as summarized in the Leadzep guide, advises preserving unknown data rather than backfilling a preferred answer (Leadzep). A visible Unknown percentage is a to-do list. A guessed value is a reporting error that looks like data.
If customers tell you how they found you in a form field, that is useful extra evidence. See how to turn self-reported attribution into pipeline signals.
Mapping the taxonomy to Salesforce
Salesforce gives you a few places for source data, and each has a job.
- Lead Source (standard picklist): broad categories. Salesforce Ben explains that it covers broad source categories, while Campaigns track more granular marketing and sales initiatives.
- Custom fields: raw UTMs, first and latest source, landing page.
- Campaigns and Campaign Members: the named programs.
The general approach is custom fields for granular data and standard fields for high-level rollups. At conversion, use the Object Manager to map custom lead fields to the matching Account, Contact and Opportunity fields so the source data persists once the lead object is gone. Skip this step and your opportunity reports will show blank sources for every converted deal.
A workable build order:
- Replace the Lead Source picklist values with your approved categories and restrict the picklist.
- Create custom fields for original source, latest source, and each UTM value.
- Create matching fields on Contact, Account and Opportunity, then map them in lead conversion settings.
- Add leads to the right Campaign at creation.
- Build one report that joins source to opportunity and closed-won revenue, and check it against finance totals.
If you also run HubSpot, the field alignment between systems is the usual failure point; our admin’s setup guide for the HubSpot and Salesforce integration walks through it.
Capturing source data at the point of entry
A taxonomy is only as good as the data entering it. Four entry routes matter:
- Web forms: Leadfeeder outlines the process: create custom lead fields for each UTM value, add hidden fields to web-to-lead forms that write to them, map each to the Contact, Account or Opportunity, and add new leads to the matching campaign.
- Persistence: capture UTMs from the landing URL, store them, and write them into hidden Salesforce fields at form submission, so a multi-page visit does not lose the original parameters.
- Integrations: let the integration write to the raw fields, then let a rule derive the normalized category.
- Manual entry: making Lead Source required on the page layout means every lead has a value, as Salesforce Ben describes. The catch is the same source’s warning: users tend to pick the first value in a list to finish faster. Where you can, default the value automatically by record type or entry channel.
Governance: where taxonomies quietly fail
The first version is easy. The second year is hard. Treat it as a continuous data governance problem rather than a one-time setup.
Controls that work in Salesforce:
- Use a restricted custom picklist as the reporting authority, and avoid editable original-source fields, unmapped custom fields at conversion, and campaign detail inside Lead Source (guidance on proper setup).
- Set original source at creation with a record-triggered flow, and block later edits with a validation rule, per the same guide.
- Name an owner for the mapping table. Changes go through that person.
- Review the Unknown and Direct share monthly, and review the full category list quarterly.
- Without a shared taxonomy, reports fill with overlapping values such as Google, Google Ads, paid search and PPC (Attributy). A monthly duplicate check catches the drift early.
Many of these problems are process failures rather than technical ones. A review of common CRM implementation mistakes is a good checklist for the habits that erode source data, such as unclear ownership and inconsistent entry.
Our perspective
We see the same pattern in scaling teams: the taxonomy is rarely the hard part. The hard part is that marketing owns the UTMs, sales ops owns the picklist, and nobody owns the join between them.
That is why we treat source taxonomy as a revenue operations system, not a spreadsheet exercise. The people who design the categories should also build the capture logic, the conversion mapping, and the dashboards, because the design decisions only show up as errors once data flows through the build.
Our approach is to start from the question finance will ask, which source produces pipeline and revenue, then work backward to the fields and rules that answer it. We keep the roadmap visible, and the strategists who set the rules stay involved while they are implemented and refined.
Service
What a consistent taxonomy changes in reporting
Once labels are consistent, you can stop reporting on lead volume and start reporting on outcomes. Consistent taxonomy links pipeline and revenue to specific sources, so budget follows performance rather than volume. Teams can then measure SQL conversion, win rates and revenue per source.
Standard categories also make channel comparison fair, and an upfront framework prevents misalignment between marketing and sales. The practical test is one dashboard that finance accepts without spreadsheet reconciliation.
A worked example of the payoff: say Paid Social generates the most leads but Partner produces the highest share of closed-won deals. With one clean source field carried through to opportunities, that comparison takes a single report. With five spellings of “LinkedIn,” it takes a week and still gets argued about.
From there, you can layer scoring and attribution on top. Our guide to dual score lead scoring models for B2B assumes a source field you can trust, and the HubSpot attribution reporting guide shows how the same logic works there.

Need the taxonomy built, not just designed?
If your source data spans HubSpot, Salesforce, forms, and offline channels, the design is the easy part. We embed with revenue and marketing teams to build the taxonomy, field mapping, flows, and reporting as one connected system. Our revenue operations service covers it, and engagements start with Core capacity at $3,500 to $5,999 per month, as listed on our pricing page.

If you already know the scope, see how our capacity tiers work and tell us which systems your source data lives in.
FAQ
How many lead source categories should we have?
Aim for 8 to 12. Most CRMs maintain a Lead Source picklist in that range, with detail pushed into a campaign field (LeadSources.io). Fewer, well-defined categories produce more reliable reports than a long list people choose from inconsistently.
What is the difference between Lead Source and Campaign in Salesforce?
Lead Source is a picklist for broad categories, and Campaigns track granular initiatives (Salesforce Ben). Use Lead Source for channel-level budget questions and Campaigns for optimizing within a channel.
Should original lead source ever change?
No. Set it once at creation and treat it as immutable, then track later touches in a separate latest source field (ActiveProspect). A validation rule can block edits after creation.
What do we do with leads whose source we cannot determine?
Label them Unknown instead of guessing. Track the percentage over time, and fix the capture gaps that create it, such as missing UTMs or forms without hidden fields.
Sources
- Lead Source Attribution, LeadSources.io
- Lead source: What is it and why it’s valuable to your team, HubSpot
- Lead Source Taxonomy: Categories & Mapping Examples, Leadzep
- A practical guide to lead source tracking, ActiveProspect
- Salesforce Lead Source: how to set it up properly
- Salesforce Lead Source vs. Campaign: Which to Use When?, Salesforce Ben
- UTM Parameters in Salesforce and HubSpot, Leadfeeder
- UTM + Salesforce: Lead Source Mapping and Campaign, OpenUTM
- Lead Source Attribution: Track Leads to Revenue, Attributy
- Lead Source Tracking: A RevOps Implementation Guide
- Building a touchpoint taxonomy for lead source accuracy, TDstats