Prompt
How do I tie CRM deals back to original marketing channels?
Latest observation
To tie CRM deals back to original marketing channels, you need to preserve the first-touch source from the moment a lead enters your system and carry it through to the deal record.
Core idea
Track these at minimum on the contact/lead:
- Original source (e.g. Google Ads, LinkedIn, referral, organic search)
- Original campaign
- Landing page / first page
- Date first created
- Optional: medium, term, content, referrer
Then, when a deal is created, link the deal to the contact and copy or reference those original attribution fields.
Practical approach
1) Capture source data at first touch
Use:
- UTM parameters on all campaign links
- Hidden form fields on lead capture forms
- Cookies / local storage to persist source across sessions
- Referrer for organic/direct traffic when UTMs are absent
Example:
- utm_source=google
- utm_medium=cpc
- utm_campaign=brand_search
- utm_content=ad_1
2) Store source on the lead/contact record
Create fields like:
- First touch source
- First touch medium
- First touch campaign
- First touch landing page
- First touch timestamp
Important: don’t overwrite these with later visits. Also store separate fields for:
- Last touch source
- Lead create source
- Deal create source if you want multiple attribution views.
3) Associate the deal to the contact
When a sales rep creates a deal or it’s auto-created:
- Link it to the primary contact
- Pull the original source fields from the contact into the deal
- Or query/report through the association instead of copying
This ensures the deal can be reported by:
- Original lead source
- Campaign
- Channel
- Rep
- Time period
4) Use attribution logic you actually trust
Pick a model and be consistent:
- First-touch: best for knowing what created the lead
- Last-touch: best for what drove the final conversion
- Multi-touch: best for complex journeys
For “original marketing channels,” you usually want first-touch.
If your CRM supports it
Many CRMs have built-in properties or attribution reports:
- HubSpot: Original source, latest source, attribution reports
- Salesforce: Campaign Influence, custom lead source fields, source tracking via middleware
- Pipedrive/Zoho/etc.: usually requires custom fields or third-party tools
Data model recommendation
At minimum, have:
Contact/Lead
- original_source
- original_medium
- original_campaign
- original_landing_page
- original_referrer
- first_touch_datetime
Deal
- associated_contact_id
- deal_source_snapshot (optional)
- won/lost date
- revenue
Why snapshot on deal too?
- Contacts can have multiple deals over time
- Source fields on the contact might change or get cleaned
- A snapshot preserves what was true when the deal was created
Common pitfalls
- Overwriting original source with every new visit
- Relying only on “created by form” without UTMs
- Not handling direct traffic properly
- Losing attribution when leads are imported manually
- Not linking multiple contacts to one deal properly
Simple example
- User clicks LinkedIn ad with UTMs
- They fill out a demo form
- Form stores
utm_source=linkedin,utm_campaign=q2_demo - Lead is created with original source = LinkedIn
- Sales creates a deal for that lead
- Deal inherits LinkedIn / q2_demo attribution
- Reporting shows revenue by original channel
Best practice
If you want reliable reporting, implement:
- UTM capture
- First-touch fields on contact
- Contact-to-deal association
- Deal-level source snapshot
- Attribution report by source/campaign
If you want, I can also give you:
- a HubSpot-specific setup
- a Salesforce schema
- or a SQL/data warehouse version for this tracking.