xmetric / Use cases

Build a HubSpot Pipeline Waterfall Chart from a Deals Export

To build a HubSpot pipeline waterfall chart without a paid Sales Hub Professional or Enterprise subscription, export your HubSpot Deals view or property history to CSV and open it in xmetric. Classify each deal into Starting Pipeline, New Created, Expanded, Pushed Out, Closed Won, Closed Lost and Ending Pipeline with calculated fields, then draw the waterfall bars with a running total 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 Deals for a pipeline waterfall

HubSpot's built-in Deal pipeline waterfall report in the Sales Analytics suite requires a paid Sales Hub Professional or Enterprise plan. If you are on HubSpot CRM Free or Starter, you can build the exact same bridge from a standard Deals CSV export or property history export.

  1. In HubSpot, go to CRM > Deals, switch to the List view, and select your target pipeline.
  2. Click Edit columns and add Record ID, Deal Name, Pipeline, Deal Stage, Amount (or Amount in company currency), Create Date, Close Date, Deal Owner, Closed Won Reason, and Closed Lost Reason.
  3. Click Export in the top right, choose CSV or XLSX (the xmetric app imports both), and select All properties on records or Properties and associations in your view.
  4. For historical stage or amount changes within a quarter, export property history from Settings > Properties > Select an object: Deal properties, hover over Amount, Close Date, or Deal Stage, and click More > Export property history.
HubSpot Export ColumnData TypeRole in Waterfall Bridge
Record IDInteger / StringUnique deal identifier across snapshots
Deal NameStringDrill-down label on hover
PipelineStringFilters to New Business vs. Renewal pipeline
Deal StageStringIdentifies open stages vs. Closed Won and Closed Lost
AmountCurrencyUnweighted deal value (or Forecast amount for weighted)
Create DateTimestampClassifies deals created inside the period (+New Created)
Close DateTimestampClassifies deals slated to close inside the period vs. pushed to next quarter
Deal OwnerStringSlices the waterfall by AE or sales team

Waterfall bucket formulas and SQL equivalents

1. Single-Export Period Bridge (Create Date + Close Date + Stage Logic)

Even from a single Deals export, you can classify every deal touching a target quarter (for example Q4: 2026-10-01 to 2026-12-31) into its waterfall movement bucket.

xmetric / Tableau calculated field ([Waterfall Bucket]):

IF [Create Date] < #2026-10-01# AND [Close Date] >= #2026-10-01# THEN "1. Starting Pipeline"
ELSEIF [Create Date] >= #2026-10-01# AND [Create Date] <= #2026-12-31# THEN "2. + New Created"
END

To draw the waterfall in the xmetric app, use a Gantt bar mark: place RUNNING_SUM(SUM([Signed Amount])) on the Rows shelf and -SUM([Signed Amount]) on the Size card.

2. Two-Snapshot Waterfall Bridge (Exact Expansion, Contraction, and Push Detection)

When you compare two HubSpot Deals CSV exports (start-of-month snapshot s0 and end-of-month snapshot s1; joining two CSVs in the xmetric app is coming) or a HubSpot property history export, the SQL below classifies all seven movements.

SQL equivalent:

WITH joined AS (
  SELECT
    COALESCE(s1."Record ID", s0."Record ID") AS deal_id,
    COALESCE(s1."Deal Name", s0."Deal Name") AS deal_name,
    s0."Deal Stage" AS start_stage,
    s1."Deal Stage" AS end_stage,
    COALESCE(s0."Amount", 0) AS start_amount,
    COALESCE(s1."Amount", 0) AS end_amount,
    s0."Close Date" AS start_close_date,
    s1."Close Date" AS end_close_date
  FROM deals_start_snapshot s0
  FULL OUTER JOIN deals_end_snapshot s1
    ON s0."Record ID" = s1."Record ID"
)
SELECT
  CASE
    WHEN start_stage IS NULL THEN '2. + New Created'
    WHEN end_stage = 'Closed Won' THEN '5. - Closed Won'
    WHEN end_stage = 'Closed Lost' THEN '6. - Closed Lost'
    WHEN end_close_date > DATE '2026-12-31' AND start_close_date <= DATE '2026-12-31' THEN '4. - Pushed Out of Quarter'
    WHEN end_amount > start_amount THEN '3. + Expanded'
    WHEN end_amount < start_amount THEN '4b. - Contracted'
    ELSE '7. Unchanged Open'
  END AS waterfall_bucket,
  COUNT(*) AS deal_count,
  SUM(end_amount - start_amount) AS net_amount_delta,
  SUM(end_amount) AS ending_amount
FROM joined
GROUP BY 1
ORDER BY 1;

3. Pipeline Net Coverage Ratio (FIXED LOD)

Compare starting open pipeline plus newly created pipeline against the team's quarterly quota.

xmetric / Tableau formula:

{ FIXED [Deal Owner] :
  SUM(IF [Deal Stage] != 'Closed Won' AND [Deal Stage] != 'Closed Lost' THEN [Amount] END)
}

Where HubSpot Sales Analytics vs. xmetric fits

Questions people ask

Why do some open HubSpot deals have blank Amount values?

Reps often create early-stage discovery deals before entering a dollar value. In xmetric, wrap ZN([Amount]) so null amounts evaluate as 0 and still appear in deal-count waterfall views.

How do I handle multi-currency HubSpot exports?

Export the column Amount in company currency alongside Amount and map Amount in company currency as the measure in xmetric so EUR, GBP, and USD deals sum accurately.

Does xmetric upload our private customer deal list to the cloud?

No. Files you drop are read in your browser and nothing is uploaded, unless you sign in and save a workbook online. The app also imports Excel (.xlsx) exports.

Drop your HubSpot deals.csv export above for a first chart, then build the pipeline bridge in the xmetric app.