Lead Source Taxonomy: Categories and CRM Normalization Rules

Mapping UTMs, Original Sources, and Offline Attribution for Effective CRM Integration

How to Build a Lead Source Taxonomy That Survives the Trip Into Your CRM

A usable lead-source classification template: preserve raw evidence, map it to stable categories, and keep first touch, latest touch, and record creation separate.

A lead source taxonomy turns inconsistent labels such as “LinkedIn Ads,” “linkedin / cpc,” and “paid-social” into a small set of reporting categories. Keep the original evidence and apply documented rules to a separate normalized field. The example below is a starting template for a B2B CRM, not a vendor's default channel definition.

A starter lead-source classification table

Normalized categoryEvidence requiredExample
Paid SearchRecognized search source and paid medium or verified ad-platform evidencegoogle / cpc
Organic SearchRecognized search source with organic mediumbing / organic
Paid SocialRecognized social source and a paid indicatorlinkedin / paid_social
Organic SocialSocial referral with no paid evidencelinkedin.com / referral
EmailKnown email campaign or email mediumcustomer_newsletter / email
Partner ReferralRecorded partner identifier or verified referralpartner_id = agency_07
EventNamed event and evidence of participationevent_id = summit_2026
OutboundRecorded prospecting campaign or activityoutreach_sequence = manufacturers_q4
DirectA tracked visit recorded as direct(direct) / (none)
Other / ReviewEvidence exists but no approved rule matchesunknown_vendor / promo
UnknownInsufficient evidence to classifyBlank source and no known acquisition event

Use stable machine values such as paid_social behind the display labels. Add categories only when someone needs the distinction to make a decision. If webinar and trade-show performance must be compared, keep event_type as a detail rather than creating a category for every event.

Separate channel, source, campaign and record creation

“LinkedIn” describes a platform; it does not prove paid acquisition. “Imported” describes how a record entered the CRM; it does not say how the prospect discovered the business. Keep those concepts in different fields.

FieldPurposeUpdate policy
raw_source, raw_medium, raw_campaignEvidence captured from the touchpointPreserve with the event and timestamp
normalized_channelApproved reporting categoryComputed from versioned rules
first_known_sourceEarliest eligible touchpoint the system actually knowsDo not overwrite with a later visit
latest_known_sourceMost recent eligible touchpointUpdate from qualifying events
record_creation_methodImport, integration, form or manual entryPreserve separately from acquisition
self_reported_sourceThe prospect's own answerKeep their words and collection date
mapping_rule_id, taxonomy_versionWhy this classification was appliedWrite with every calculated result

HubSpot explicitly distinguishes Original/Latest Traffic Source from Record Source. Its automatically managed fields and drill-downs have their own behavior. Use custom normalized fields where necessary instead of overwriting vendor evidence. “First known” is deliberately narrower than “first ever”: missing tracking cannot reconstruct an earlier visit.

Normalize to predefined categories in a fixed order

  1. Store the raw value. Retain the original label, capture time and collection method before trimming or changing case.
  2. Standardize a working copy. Trim surrounding whitespace and use an explicit alias table, such as LinkedIn Ads → linkedin / paid_social. A lone LinkedIn value remains ambiguous unless other evidence resolves it.
  3. Match specific rules before broad ones. A verified paid-social event must not fall into a generic social-referral rule. Document precedence when platform data and manual tags disagree.
  4. Require the evidence the rule expects. Do not infer Event from an import job name or Paid Search from the word “Google” alone.
  5. Send unmatched evidence to review. Unknown and Direct are different outcomes. A blank imported spreadsheet cell is Unknown.
  6. Write the matched rule and version. Keep an auditable explanation, not only the final label.

Google Analytics uses rule-based channel definitions, but a CRM taxonomy may need partner, event and outbound categories that differ from web analytics. Document those differences before comparing dashboards. For tagged campaigns, use consistent source, medium and campaign values; use content or term when they carry useful information. Every URL does not need all five fields. Google explains the separate roles of these traffic-source dimensions.

A worked example: imported attendee, then paid ad

A salesperson imports a contact from a verified trade-show attendee list on Monday. On Thursday, the same person clicks a tagged LinkedIn advertisement and submits a demo form. In this example the first known acquisition is Event, the latest known touch is Paid Social, and the record creation method stays Import. If the person writes “a colleague recommended you,” store that answer separately. None of those fields has to erase another.

When merging duplicate contacts, compare timestamps and evidence quality. Do not simply keep whichever source field happens to be on the surviving record. Preserve the losing record's original evidence in the merge history.

Test before backfilling the CRM

InputExpected result in this template
LinkedIn / CPCPaid Social after case normalization and paid-medium mapping
LinkedIn with no medium or referral evidenceOther / Review; insufficient paid-versus-organic evidence
Blank source on a CSV importUnknown; record creation method is Import
Known partner code plus a later direct visitPreserve first-known Partner Referral; evaluate latest touch under the documented policy
Self-report “podcast” with an organic search visitKeep both self-report and tracked Organic Search

Run the rules on a copy of real records and inspect category changes before writing a backfill. Report the unmapped rate, conflicting-evidence count and first-source overwrites; retain a before/after export and a rollback path. Assign an owner to approve new aliases. A new rule version should not silently rewrite last quarter's channel mix. For AI-filled fields, preserve the evidence described in our CRM field-provenance guide.

Sources

Related