Chart your export here
Drop a CSV here. xmetric reads every row in this browser and draws a first chart you can regroup or change the measure of. Nothing is uploaded.
No file loaded yet. You can also drop a CSV on this box.
How to export HubSpot Original Traffic Source and revenue columns
HubSpot's multi-touch Deal Create Attribution and Deal Revenue Attribution reports require Marketing Hub Enterprise (while Contact Create Attribution is included in Marketing Hub Professional and Content Hub Professional as of October 2026). However, HubSpot automatically stamps Original Traffic Source (and two drill-down properties) on every Contact and mirrors them to associated Companies and Deals across all plans.
- In HubSpot, go to CRM > Contacts (or CRM > Deals for deal-level source analysis).
- Click Edit columns and add
Record ID,Lifecycle Stage,Original Traffic Source,Original Traffic Source Drill-Down 1,Original Traffic Source Drill-Down 2,Latest Traffic Source,Create Date,First Conversion,Number of Associated Deals, andTotal Revenue. - Click Export > CSV and drop the file into xmetric. Joining a
contacts.csvand adeals.csvexport onAssociated Contact IDsis coming to the xmetric app.
| HubSpot Export Column | Data Type | Role in Lead Source Attribution |
|---|---|---|
Original Traffic Source | String | First-touch channel (Organic search, Paid search, Email marketing, Organic social, Referrals, AI Referrals, Other campaigns, Direct traffic, Paid social, Offline sources) |
Original Traffic Source Drill-Down 1 | String | Campaign name, referring domain, social site, AI domain, or import/integration label |
Original Traffic Source Drill-Down 2 | String | Exact ad keyword, campaign name, or specific piece of content |
Latest Traffic Source | String | Most recent known web source through which the contact interacted |
Lifecycle Stage | String | Current funnel stage (Lead, Marketing Qualified Lead, Sales Qualified Lead, Opportunity, Customer) |
Number of Associated Deals | Integer | Identifies contacts that generated pipeline |
Total Revenue / Amount | Currency | Total dollar amount of all associated deals that have been closed as won |
Three lead-source-to-revenue formulas and SQL equivalents
1. Revenue per Lead (RPL) vs. Lead-to-Customer Conversion Rate
For example (sample numbers), a paid social webinar campaign might generate 2,000 leads at a 0.2% customer conversion rate, while organic search generates 200 leads at a 6% conversion rate with 2x higher average contract value. Revenue per Lead (SUM([Total Revenue]) / COUNT([Record ID])) combines conversion rate and deal size into one number per channel.
xmetric / Tableau formula ([Revenue per Lead]):
SUM(ZN([Total Revenue])) / COUNTD([Record ID])xmetric / Tableau formula ([Lead to Customer Rate]):
SUM(IF [Lifecycle Stage] = 'Customer' OR [Total Revenue] > 0 THEN 1 ELSE 0 END)
/ COUNTD([Record ID])SQL equivalent:
SELECT
"Original Traffic Source" AS source,
"Original Traffic Source Drill-Down 1" AS campaign_or_referrer,
COUNT(DISTINCT "Record ID") AS total_contacts,
COUNT(DISTINCT "Record ID") FILTER (WHERE "Number of Associated Deals" > 0) AS contacts_with_deal,
COUNT(DISTINCT "Record ID") FILTER (WHERE "Lifecycle Stage" = 'Customer' OR "Total Revenue" > 0) AS customers,
ROUND(
COUNT(DISTINCT "Record ID") FILTER (WHERE "Lifecycle Stage" = 'Customer' OR "Total Revenue" > 0) * 100.0
/ NULLIF(COUNT(DISTINCT "Record ID"), 0),
2
) AS lead_to_customer_pct,
SUM(COALESCE("Total Revenue", 0)) AS closed_revenue,
ROUND(SUM(COALESCE("Total Revenue", 0)) * 1.0 / NULLIF(COUNT(DISTINCT "Record ID"), 0), 2) AS revenue_per_lead
FROM hubspot_contacts
GROUP BY 1, 2
HAVING COUNT(DISTINCT "Record ID") >= 20
ORDER BY closed_revenue DESC;2. First-Touch (Original) vs. Last-Touch (Latest) Channel Shift (FIXED LOD)
Compare how much closed revenue a channel originates (Original Traffic Source) versus how much it closes as the final session (Latest Traffic Source).
xmetric / Tableau formula:
SUM([Total Revenue])
/ MIN({ FIXED : SUM([Total Revenue]) })Place Original Traffic Source on Rows and Latest Traffic Source on Columns in the xmetric app (or group by both in SQL) to view a cross-tab transition matrix showing which top-of-funnel channels get closed by Direct or Branded Search later.
3. Separating Real "Offline Sources" from Automated CRM Syncs
In HubSpot, Original Traffic Source = Offline sources (alongside the Record Source property) often becomes a catch-all bucket mixing trade show CSV imports, CRM integrations, and manual creation.
xmetric / Tableau calculated dimension ([Clean Channel]):
IF [Original Traffic Source] = 'Offline Sources'
THEN 'Offline: ' + COALESCE([Original Traffic Source Drill-Down 1], 'Manual')
ELSE [Original Traffic Source]
ENDLimits of HubSpot source properties vs. multi-touch attribution
- First/Last touch vs. intermediate touches: Standard HubSpot exports give you
Original Traffic Source(first touch) andLatest Traffic Source(most recent touch). If a prospect read 4 blog posts, clicked a LinkedIn ad, and registered for a webinar in between, those intermediate interactions across conversion paths (scored via First Touch, Last Touch, Linear, Time Decay, or Empirical attribution models) require HubSpot's multi-touch attribution reporting. - Contact creation date vs. deal close date lag: When evaluating recent months, filter or segment by
Create Datecohort so a 60-day B2B sales cycle does not make last month's paid campaigns look like they produced zero revenue.
Questions people ask
Why do so many closed-won deals show "Direct Traffic" or "Offline Sources"?
When a sales rep manually types a prospect's email into HubSpot before the prospect ever fills out a tracked web form, HubSpot sets Original Traffic Source to Offline Sources (CRM_UI or SALES in Drill-Down 1). Use the [Clean Channel] formula above in xmetric to split outbound rep creation from inbound marketing.
Can I join my Google Ads and Meta Ads spend CSV with this HubSpot export?
Not yet. Joining several CSVs is coming to the xmetric app. Once it lands, you can load both your HubSpot export and your ad spend CSV and join on LOWER([Original Traffic Source Drill-Down 1]) = LOWER([Campaign name]) to calculate closed-won ROAS and CAC by campaign.
Does xmetric upload our HubSpot contact list to any server?
No. Files you drop are read in your browser, and customer emails and revenue figures are not uploaded unless you sign in and save a workbook online.
Drop your HubSpot contacts.csv or deals.csv export above for a first chart, then rank your lead sources by closed revenue and revenue per lead in the xmetric app.