Key takeaways
- Define a controlled source taxonomy before changing forms or CRM fields.
- Capture the source at the form and store it unchanged, even when a later touch updates the latest source.
- Map every form field to one CRM field and test the path with a real submission.
- Audit unknown and direct traffic monthly; a high share usually means tracking is missing, not that buyers are mysterious.
On this page
Where source data breaks
A lead source records how the contact first found the business. It is easy to capture and easy to lose. Parameters disappear through redirects, forms fail to pass hidden fields, imports overwrite the original value, and sales creates records without a source.
The result is a report where direct and unknown dominate, paid campaigns take credit for branded searches, and the team argues about attribution.
Treat source data as a chain: link, landing page, form, CRM record, report. The chain is only as reliable as its weakest handoff.
Define the taxonomy first
A taxonomy is a fixed list of allowed values. Use a small hierarchy: source, medium, campaign, content, and term. Source is the platform or programme, medium is the type of traffic, and campaign is the specific initiative.
Use lower-case, hyphenated values and a convention that survives a spreadsheet and a URL. Restrict form and CRM fields to the list; free text produces variants of the same source.
| Parameter | Question it answers | Example |
|---|---|---|
| Source | Where did the visitor come from? | |
| Medium | What kind of traffic was it? | Paid social |
| Campaign | Which initiative? | invoice-automation-guide |
| Content | Which link or creative? | checklist-cta |
| Term | Which keyword or audience? | finance-director |
Capture at the form
The landing page should read UTM campaign parameters, persist them for the session, and write them into hidden fields. If parameters are missing, fall back to the referrer and then a self-reported field.
Test with a tagged URL, a redirect, and a direct visit. Check the payload and the CRM record. Keep source capture separate from advertising consent where allowed.
- Persist the parameters on page load and keep the first-touch values.
- Store first touch and current touch in separate fields.
- Include the landing page URL and referrer in the submission.
- Ask how the buyer found the business, with a controlled list.
Pass the source into the CRM
The form handler should create or update one contact, attach the company, and create a lead or deal with the source values. Map each field explicitly and keep the mapping under version control.
Keep first touch and latest touch separate. First touch answers which programme introduced the contact; latest touch answers what prompted the current visit. Collapsing them destroys both answers.
Match duplicates on email first, then company domain plus name. Give every lead a stable identifier that survives migration.
| Form field | CRM field | Rule |
|---|---|---|
| utm_source | Original source | Set on create, never overwrite |
| utm_medium | Original medium | Set on create, never overwrite |
| utm_campaign | Original campaign | Set on create, never overwrite |
| latest_source | Latest source | Update on identified touch |
| landing_page | First landing page | Set on create |
| self_reported_source | Self-reported source | Keep separate |
Handle the awkward cases
Most attribution errors sit in the exceptions. Write a rule for each and apply it consistently. Consent and source are different records: a contact can have a legitimate source and no marketing consent, so store status, date, and basis separately.
- Returning lead: keep the original source, update the latest, and do not create a second contact.
- Sales-sourced: use outbound or referral, with the salesperson in a separate field.
- Offline event: use a unique campaign value or QR code.
- Partner referral: record the partner as source and the activity as campaign.
- Unknown: leave it unknown and review the cause; never guess a channel.
Audit and report
Publish a monthly report with three checks: completeness, unknown rate, and reconciliation. Completeness is the share of new leads with source, medium, and campaign. Reconciliation compares platform leads with CRM records for the period.
Investigate the largest gap first. A form change may have dropped a hidden field, or an import may have mapped the source into a note. Fix the process and rerun the period rather than explaining the gap.
Report by source and campaign with lead volume, qualified rate, and closed revenue where available. Do not judge channels on lead volume alone. Keep a change log so a movement can be traced to performance or plumbing.
Frequently asked questions
What is the difference between source and medium?+
Source is the platform or programme, such as a partner newsletter. Medium is the traffic type, such as email. Campaign names the initiative.
Should first-touch or last-touch attribution be used?+
Store both. First touch shows which programme introduced the contact; last touch shows what prompted the latest visit. State which one the report uses.
How are leads from phone calls tracked?+
Use a dedicated number or a self-reported source field, and have the person logging the call select from the same list as the form.
Why is direct traffic so high in reporting?+
Missing parameters, redirects, untagged links, and privacy tooling all remove source data. Audit the capture path before treating direct as a real channel.
Need help applying this?
Get help with Lead Generation.
Review the service scope or tell us what you are trying to improve. We will reply with a clear next step.
Free KPI definition templateRelated reading
B2B landing page checklist for lead capture
A B2B landing page earns the lead when the offer, proof, form, and follow-up agree. Use this checklist to find and fix the weak points.
Short-form video workflow from footage to post
A repeatable short-form video workflow: shot planning, footage intake, a fixed edit structure, readable captions, and clean exports.