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 category | Evidence required | Example |
|---|---|---|
| Paid Search | Recognized search source and paid medium or verified ad-platform evidence | google / cpc |
| Organic Search | Recognized search source with organic medium | bing / organic |
| Paid Social | Recognized social source and a paid indicator | linkedin / paid_social |
| Organic Social | Social referral with no paid evidence | linkedin.com / referral |
| Known email campaign or email medium | customer_newsletter / email | |
| Partner Referral | Recorded partner identifier or verified referral | partner_id = agency_07 |
| Event | Named event and evidence of participation | event_id = summit_2026 |
| Outbound | Recorded prospecting campaign or activity | outreach_sequence = manufacturers_q4 |
| Direct | A tracked visit recorded as direct | (direct) / (none) |
| Other / Review | Evidence exists but no approved rule matches | unknown_vendor / promo |
| Unknown | Insufficient evidence to classify | Blank 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.
| Field | Purpose | Update policy |
|---|---|---|
| raw_source, raw_medium, raw_campaign | Evidence captured from the touchpoint | Preserve with the event and timestamp |
| normalized_channel | Approved reporting category | Computed from versioned rules |
| first_known_source | Earliest eligible touchpoint the system actually knows | Do not overwrite with a later visit |
| latest_known_source | Most recent eligible touchpoint | Update from qualifying events |
| record_creation_method | Import, integration, form or manual entry | Preserve separately from acquisition |
| self_reported_source | The prospect's own answer | Keep their words and collection date |
| mapping_rule_id, taxonomy_version | Why this classification was applied | Write 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
- Store the raw value. Retain the original label, capture time and collection method before trimming or changing case.
- Standardize a working copy. Trim surrounding whitespace and use an explicit alias table, such as
LinkedIn Ads → linkedin / paid_social. A loneLinkedInvalue remains ambiguous unless other evidence resolves it. - 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.
- Require the evidence the rule expects. Do not infer Event from an import job name or Paid Search from the word “Google” alone.
- Send unmatched evidence to review. Unknown and Direct are different outcomes. A blank imported spreadsheet cell is Unknown.
- 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
| Input | Expected result in this template |
|---|---|
| LinkedIn / CPC | Paid Social after case normalization and paid-medium mapping |
| LinkedIn with no medium or referral evidence | Other / Review; insufficient paid-versus-organic evidence |
| Blank source on a CSV import | Unknown; record creation method is Import |
| Known partner code plus a later direct visit | Preserve first-known Partner Referral; evaluate latest touch under the documented policy |
| Self-report “podcast” with an organic search visit | Keep 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.
