UTM Attribution: First Touch, Last Touch, and More
/ 5 min read
Table of Contents
Marketing teams love custom UTM structures. They track campaigns with precision: utm_source=linkedin-sponsored, utm_medium=social-paid-q1, utm_campaign=webinar-ai-future-2025.
Then they implement HubSpot and discover their beautiful UTM taxonomy doesn’t map to attribution reports.
This article explains why, and more importantly, how to build an architecture that preserves your custom UTMs while enabling HubSpot’s native attribution.
The Attribution Gap
HubSpot’s attribution reporting - Revenue Attribution, Contact Attribution, Deal Attribution - only works with 10 fixed source categories:
- Organic Search
- Paid Search
- Email Marketing
- Social Media (Organic)
- Paid Social
- Referrals
- Other Campaigns
- Direct Traffic
- Offline Sources
- (Unassigned)
You cannot add custom values. Your utm_source=partner-network will land in “Other Campaigns” regardless of how important partner marketing is to your business.
Understanding HubSpot’s Source Properties
HubSpot maintains several source properties automatically:
Original Source Properties
- Original Source (dropdown): The categorised first-touch source
- Original Source Data 1: First drill-down (campaign name, social platform, etc.)
- Original Source Data 2: Second drill-down (specific content, keyword, etc.)
Latest Source Properties
- Latest Source (dropdown): The categorised most recent source
- Latest Source Data 1: First drill-down
- Latest Source Data 2: Second drill-down
Critical point: These dropdown properties only accept HubSpot’s 10 fixed values. You cannot add custom options.
How HubSpot Categorises Traffic
HubSpot uses rules based on UTM parameters and referrer information:
| If HubSpot Sees… | It Assigns… |
|---|---|
utm_medium=cpc/ppc + search referrer | Paid Search |
utm_source=[social] + utm_medium=paid/cpc | Paid Social |
utm_source=email OR utm_medium=email | Email Marketing |
| Social referrer without paid indicators | Social Media |
| Search referrer without paid indicators | Organic Search |
| External domain referrer | Referrals |
| UTMs that don’t match other rules | Other Campaigns |
| No referrer + no UTMs | Direct Traffic |
Your custom utm_source=partner-webinar triggers “Other Campaigns” because it doesn’t match any specific rule.
The Hybrid Solution
The architecture that works: capture custom UTMs in dedicated properties while allowing HubSpot to populate its native source properties.
Step 1: Create Custom UTM Properties
Create these custom contact properties:
| Property | Internal Name | Type |
|---|---|---|
| UTM Source | utm_source | Single-line text |
| UTM Medium | utm_medium | Single-line text |
| UTM Campaign | utm_campaign | Single-line text |
| UTM Content | utm_content | Single-line text |
| UTM Term | utm_term | Single-line text |
These store the raw values exactly as they appear in your URLs.
Step 2: Create First/Last Conversion Properties
Because UTM properties get overwritten on each form submission, create preservation properties:
First Conversion (FC) Properties:
- FC UTM Source
- FC UTM Medium
- FC UTM Campaign
- FC UTM Content
- FC UTM Term
Last Conversion (LC) Properties:
- LC UTM Source
- LC UTM Medium
- LC UTM Campaign
- LC UTM Content
- LC UTM Term
Step 3: Add Hidden Fields to Forms
On every HubSpot form, add the five UTM properties as hidden fields. HubSpot automatically populates them from URL parameters.
In the form editor:
- Add field → Select your UTM Source property
- Set as “Hidden field”
- Repeat for all five UTM properties
Step 4: Build Preservation Workflows
Workflow 1: First Conversion Capture
- Trigger: Contact is created
- Condition: FC UTM Source is unknown
- Actions:
- Copy UTM Source → FC UTM Source
- Copy UTM Medium → FC UTM Medium
- Copy UTM Campaign → FC UTM Campaign
- Copy UTM Content → FC UTM Content
- Copy UTM Term → FC UTM Term
- Re-enrollment: Disabled
Workflow 2: Last Conversion Update
- Trigger: Form submission occurs
- Actions:
- Copy UTM Source → LC UTM Source
- Copy UTM Medium → LC UTM Medium
- Copy UTM Campaign → LC UTM Campaign
- Copy UTM Content → LC UTM Content
- Copy UTM Term → LC UTM Term
- Re-enrollment: Enabled (every submission)
Workflow 3: Clear Base Properties (Optional) After copying to LC properties, clear the base UTM properties so they’re ready for fresh data on the next submission.
Step 5: Map to HubSpot Categories
If you need your custom UTMs to correctly populate HubSpot’s native source categories (for attribution reports), create a mapping workflow:
Trigger: UTM Medium is any of: partner-cpc, partner-paid, affiliate-cpcAction: Set Latest Source to "Paid Search" (via API update)Wait - you can’t directly set the Latest Source dropdown via workflow. But you can influence how HubSpot categorises by ensuring your UTMs match expected patterns:
Strategy: Align your UTM values with HubSpot’s recognition patterns.
| Your Goal | Use These UTMs |
|---|---|
| Track as Paid Search | utm_medium=cpc or ppc |
| Track as Paid Social | utm_source=[platform] + utm_medium=paid |
| Track as Email Marketing | utm_source=email or utm_medium=email |
| Track as Specific Campaign | Add details in utm_campaign, utm_content |
The Complete UTM Strategy
For campaigns you want in native attribution:
URL: site.com/page?utm_source=facebook&utm_medium=paid&utm_campaign=spring-promo-2025→ HubSpot categorises as “Paid Social” → Your LC UTM Campaign captures “spring-promo-2025”
For campaigns where detail matters more than category:
URL: site.com/page?utm_source=partner-acme&utm_medium=referral&utm_campaign=comarketing-q1→ HubSpot categorises as “Other Campaigns” → Your custom properties capture the precise values → Build custom reports using your UTM properties
Reporting Architecture
Native Attribution Reports
Use for: Executive reporting on channel performance Limitation: Only shows 10 categories
Custom Reports with UTM Properties
Use for: Campaign-level performance analysis
Example report:
- Object: Contacts
- Measures: Count of contacts, Sum of associated revenue
- Breakdown by: LC UTM Campaign
- Filter: LC UTM Source = “partner”
The Full Picture Dashboard
Create a dashboard combining both:
- Channel Overview (Native Attribution): High-level channel mix
- Campaign Performance (Custom): Drill into specific campaigns
- Source Quality (Custom): Conversion rates by UTM source
Advanced: Multi-Touch Attribution
HubSpot’s native multi-touch attribution uses interaction data, not just first/last touch. To track all touchpoints with your UTMs:
Option 1: Marketing Events
Log a marketing event for each form submission:
- Event name: Form Submission
- Properties: Include UTM values as event properties
Option 2: Custom Object for Touchpoints
Create a “UTM Touchpoint” custom object:
- Contact association
- Touchpoint Date
- UTM Source
- UTM Medium
- UTM Campaign
- UTM Content
- UTM Term
- Form Name
Each form submission creates a new touchpoint record, preserving the complete journey.
Workflow to Create Touchpoints
Trigger: Form submission (any form)Action: Create UTM Touchpoint recordProperties: - Touchpoint Date = Current date - UTM Source = [UTM Source property] - UTM Medium = [UTM Medium property] - (etc.)Association: Contact who submittedIntegration with External Tracking
If you’re also using GA4 or other analytics, ensure consistency:
GA4 ↔ HubSpot Alignment
- Use the same UTM parameter structure
- GA4 captures all page views; HubSpot only captures form conversions
- Stitch data using contact email as the join key
Data Warehouse Approach Export HubSpot contact data (with UTM properties) to your data warehouse. Join with GA4 data for complete journey analysis that neither platform provides alone.
Key Takeaways
- HubSpot’s native attribution is limited to 10 categories - you cannot add custom values
- Create dedicated UTM properties to capture your exact parameter values
- Use First Conversion/Last Conversion properties to preserve attribution history
- Add hidden UTM fields to every form
- Build custom reports using your UTM properties for detailed campaign analysis
- Consider a custom object for full multi-touch attribution tracking
- Align critical campaign UTMs with HubSpot’s recognition patterns when native attribution matters
The hybrid approach gives you the best of both worlds: native attribution for high-level reporting, custom UTM tracking for detailed analysis.
Need help implementing UTM tracking architecture in HubSpot? Connect with me on LinkedIn.