Campaigns, UTMs, and Attribution: Building a Reliable HubSpot–Salesforce Reporting Pipeline
Published by Bles Software, a custom software and AI company based in Yehud-Monoson, Israel, building web apps, AI agents and API integrations for clients in Israel, the US, the UK and the EU.
Attribution is only as good as the definitions, governance, and sync policies behind it. This playbook shows how to design a campaigns and UTMs pipeline that aligns HubSpot and Salesforce, so Marketing can prove impact without reconciling every board meeting and Sales can trust the source data that shows up on opportunities.
What We Mean by "Reliable"
Reliability isn’t perfection—it’s reproducibility. If you rerun your pipeline with the same inputs, you get the same outputs: first‑touch and last‑touch assignments, sourced vs. influenced pipeline, and campaign performance. The workflow today should still make sense three quarters from now.
Attribution Scope and Definitions
Lock definitions first. Every downstream decision depends on them.
- First‑Touch: First known marketing touch that created a new person in the database.
- Last‑Touch: The marketing touch immediately preceding a meaningful sales hand‑raise.
- Sourced Pipeline: Opportunities where the first sales engagement was driven by marketing; agree on a threshold (e.g., meeting booked from an MQL).
- Influenced Pipeline: Opportunities with at least N qualified marketing touchpoints post‑creation.
Document these in a one‑page glossary and link it in field descriptions.
UTM Hygiene and Standardization
UTMs drive your classification logic. Bad UTMs infect everything.
- Required:
utm_source,utm_medium,utm_campaign; optionalutm_term,utm_content. - Enforce a value catalog:
source(google, linkedin, partner),medium(paid, organic, email),campaignnaming conventions (YYQ-CHANNEL-THEME-VARIANT). - Normalize to enums at capture (e.g.,
utm_medium=ppc → Paid Search).
Campaign Ownership and Mirror Strategy
Decide where campaigns live.
- Option A (common): HubSpot owns campaigns; Salesforce mirrors membership and success for pipeline attribution.
- Option B: Salesforce owns campaigns; HubSpot sends summarized performance data.
Pick one and write a mirror policy that names owner fields, read‑only mirrors, and update cadence.
Touchpoint Modeling
Store touchpoints as normalized events with dimensions you can sum and filter.
- Dimensions: person, timestamp, channel, source, medium, campaign, content, asset, session.
- Capture Method: HubSpot interactions or custom events; export to a warehouse if you need multitouch models.
- De‑dupe: Collapse redundant touches in the same session/window to avoid over‑counting.
From UTMs to Source Enums
Introduce a simple classification layer between raw UTMs and reports.
- Map
utm_sourceandutm_mediumto one of 10–15 standardized enums such asPaid Search,Paid Social,Organic Search,Email,Referral,Partner,Event,Direct. - Expose the enum in both systems; prefer HubSpot as owner and mirror to Salesforce read‑only.
Contact and Opportunity Attribution
Contacts
- First‑Touch: Set at creation and never overwrite; store also the
first_touch_dateand canonical channel enum. - Last‑Touch: Update on qualifying events (form submissions, demo requests). Keep a bounded history for audit.
Opportunities
- Primary Campaign: Assign when the opp is created based on the contact that created or converted into the opp.
- Influenced: Roll up touches post‑creation; set a boolean or count field that drives reporting.
Sync Policy Across Systems
- HubSpot → Salesforce: First‑touch fields, last‑touch fields, source enums, campaign IDs for membership and success status.
- Salesforce → HubSpot: Opportunity primary campaign, stage changes, revenue signals used in marketing automations.
Governance and Change Safety
Attribution breaks when naming and value sets drift.
- Enforce UTM catalogs in link builders; reject unknown values.
- Version picklists like
Source Enum v2with a translation window. - Add validation rules to prevent free‑text campaign types.
Reporting Blueprints
Operational Dashboards
- MQLs by source enum and week; acceptance rate and time‑to‑first‑touch.
- Opps sourced by marketing by segment (ICP tier, region) and trend.
- Influenced opp count and revenue by channel.
Executive Board View
- Pipeline sourced by quarter vs. target; win rate trend; CAC efficiency by channel.
- Top campaigns by pipeline contribution and cost per qualified opp.
QA and Reconciliation
Set weekly reconciliation so small issues don’t pile up.
- Compare HubSpot MQL counts vs. Salesforce SALs by source enum.
- Sample opps for correct primary campaign assignment.
- Inspect campaign membership drifts and fill gaps.
Warehouse Optionality
For mature teams, push touchpoints to a warehouse (Snowflake/BigQuery/Redshift) and compute multitouch models offline. Keep CRM‑level metrics as the official system for day‑to‑day GTM, with warehousing used for analysis and forecasting.
Common Pitfalls
- Free‑text campaigns and inconsistent UTMs.
- Over‑counted touches due to duplicates and session fragmentation.
- Conflicting primary campaign rules between Marketing and Sales.
- Treating every download as “influence” without quality thresholds.
Implementation Steps (Practical)
- Glossary: Publish definitions and link within field descriptions.
- UTM Catalog: Ship a link builder with enforced values.
- Source Enums: Normalize at capture; mirror to Salesforce.
- Campaign Mirror: Decide ownership, map fields, schedule syncs.
- Opp Rules: Primary campaign assignment policy tied to contact creation/conversion.
- QA Loop: Weekly reconciliations and drift alerts.
FAQ
Should we store raw UTMs in Salesforce?
Store raw UTMs in HubSpot and mirror normalized source enums plus campaign IDs to Salesforce. Raw fields in Salesforce tend to fragment quickly and add little value.
How do we decide primary campaign on an opp with multiple engaged contacts?
Pick a deterministic approach: use the contact that triggered opp creation or the earliest qualified last‑touch in the buying group. Document and apply consistently.
Can we trust HubSpot’s native attribution for board‑level reporting?
Yes, if you standardize inputs and lock definitions. For multitouch, supplement with a warehouse model and reconcile totals to CRM pipeline.
When is it safe to change campaign naming conventions?
Version conventions in a new catalog, run dual‑write translations for a period, then migrate historical records with scripts and freeze uncontrolled changes during the window.
More RevOps Playbooks from Bles Software
- Attribution & Pipeline Reporting Setup | Bles Software
- Data Mapping Checklist (Leads/Contacts/Opportunities) | Bles Software
- Field Governance & Picklists | Bles Software
- Sync Rules: Deduping, Owners, Lifecycle | Bles Software
- HubSpot ↔ QuickBooks Integration Playbook | Bles Software
- Errors & Retries: Top Fixes | Bles Software
- HubSpot ↔ Salesforce Integration: Executive Guide | Bles Software
- HubSpot ↔ Salesforce: Cost & Timeline Drivers | Bles Software
- Daily AI Roundup: AI agent, model and enterprise AI news