xmetric / Use cases

Track HubSpot Original Source to Closed Revenue from CSV Exports

To measure which HubSpot lead sources drive actual closed revenue rather than top-of-funnel form fills, export your HubSpot Contacts or Deals with Original Traffic Source properties to CSV and open them in xmetric. Build lead-to-customer rate, revenue per lead and closed-won revenue by channel in the free xmetric app (/app/); the file stays in your browser.

Chart your own CSV

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.

  1. In HubSpot, go to CRM > Contacts (or CRM > Deals for deal-level source analysis).
  2. 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, and Total Revenue.
  3. Click Export > CSV and drop the file into xmetric. Joining a contacts.csv and a deals.csv export on Associated Contact IDs is coming to the xmetric app.
HubSpot Export ColumnData TypeRole in Lead Source Attribution
Original Traffic SourceStringFirst-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 1StringCampaign name, referring domain, social site, AI domain, or import/integration label
Original Traffic Source Drill-Down 2StringExact ad keyword, campaign name, or specific piece of content
Latest Traffic SourceStringMost recent known web source through which the contact interacted
Lifecycle StageStringCurrent funnel stage (Lead, Marketing Qualified Lead, Sales Qualified Lead, Opportunity, Customer)
Number of Associated DealsIntegerIdentifies contacts that generated pipeline
Total Revenue / AmountCurrencyTotal 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]
END

Limits of HubSpot source properties vs. multi-touch attribution

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.