Beginner~12 min setupProductivity & CRMVerified April 2026
Google Sheets logo
HubSpot logo

Deal pipeline export — HubSpot to Google Sheets in Make

Exports all active deals from HubSpot to a Google Sheet every morning with deal name, stage, value, and owner.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Sales teams who need daily pipeline visibility in spreadsheets for reporting or analysis.

Not ideal for

Teams needing real-time deal updates or complex multi-stage approval workflows.

Sync type

scheduled

Use case type

reporting

Real-World Example

💡

A SaaS startup's sales director reviews pipeline data every morning in a Google Sheet that feeds into board reports. The team has 50+ active deals across 5 stages in HubSpot. Without automation, someone manually exports deals and reformats the data daily, taking 20 minutes. This workflow delivers clean pipeline data to their sheet at 8 AM automatically.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into Make

Copy the pre-built Make blueprint and paste it straight into Make. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

HubSpot account with CRM access and some deal records
HubSpot Private App with scopes: crm.objects.deals.read and crm.objects.owners.read
Google Sheets spreadsheet with column headers in row 1
Google account with edit access to the target spreadsheet
Make account with available operations quota

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Deal Namedealname
Stagedealstage
Valueamount
5 optional fields▸ show
Ownerhubspot_owner_id
Close Dateclosedate
Companyassociatedcompanyid
Created Datecreatedate
Sourcehs_deal_source_id

Step-by-Step Setup

1

Create scheduled scenario

In Make, click Create a New Scenario. Click the clock icon to add a Schedule trigger module. Set it to run Daily at 8:00 AM in your timezone. Click the Scheduling tab and verify Advanced scheduling is OFF. The module will show a green clock icon when configured correctly.

Common mistake — Make uses UTC by default. Set your local timezone in the Schedule settings or your export will run at the wrong time.
2

Connect HubSpot search module

Click the + button after Schedule. Search for HubSpot and select Search for CRM Objects. Choose your HubSpot connection or create one using a Private App token. Set Object Type to Deals. Leave Query empty to get all deals. Set Limit to 100. This pulls active deals in batches.

Common mistake — HubSpot's API returns 100 records maximum per call. Make will automatically paginate for larger datasets.
3

Add deal properties

In the HubSpot module, expand Additional Fields. Click Properties and add: dealname, dealstage, amount, hubspot_owner_id, closedate. These map to the columns you want in your sheet. Click OK to save. The module will now fetch these specific properties for each deal.

Google Sheets fields
Column A
Column B
Email
Status
Notes
available as variables:
1.props.Column A
1.props.Column B
1.props.Email
1.props.Status
1.props.Notes
4

Filter active deals only

Click the wrench icon between HubSpot and the next module to add a filter. Name it Active Deals Only. Set Condition to dealstage not equal to closedwon AND dealstage not equal to closedlost. This excludes completed deals from your export. Only deals in active pipeline stages will pass through.

Common mistake — HubSpot stage names are case-sensitive. Check your exact stage values in HubSpot Settings > Objects > Deals > Pipeline.
Google Sheets
GO
trigger
filter
Deal Stage
≠ "Closed"
yes — passes through
no — skipped
HubSpot
HU
notified
5

Look up owner names

Add another HubSpot module: Get a CRM Object. Set Object Type to Owners and Object ID to hubspot_owner_id from the previous module. Add firstname and lastname to Properties. This converts owner IDs to readable names. The output gives you the actual person's name instead of an ID number.

6

Clear existing sheet data

Add Google Sheets: Clear Values. Connect your Google account and select your target spreadsheet and worksheet. Set Range to A2:Z1000 (keeps headers, clears data). This prevents duplicate rows on each daily run. Your header row in A1:E1 stays intact.

Common mistake — Don't include row 1 in the clear range or you'll delete your column headers every day.
7

Format deal values

Add a Tools: Set Variables module. Create variables for clean data: deal_name = dealname, stage = dealstage, value = formatNumber(amount; 0; '.'; ','), owner = firstname + ' ' + lastname. This formats currency properly and combines first/last names into one field.

Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
8

Write to Google Sheets

Add Google Sheets: Add a Row. Select your spreadsheet and worksheet. Map columns: Deal Name = deal_name, Stage = stage, Value = value, Owner = owner. Make automatically handles the iteration, writing one row per deal. Each deal becomes a separate row with your formatted data.

9

Test with sample data

Click Run Once to test. Make will fetch your deals and write them to the sheet. Check that currency formatting looks correct, owner names appear (not IDs), and only active deals are included. The test run shows exactly how many deals were processed in the execution log.

Common mistake — Test runs use real data. Run this when you're ready to populate your actual sheet.
Make
▶ Run once
executed
Google Sheets
HubSpot
HubSpot
🔔 notification
received
10

Enable daily automation

Turn the scenario ON using the toggle switch. Verify the schedule shows your correct timezone and time. The scenario will now run automatically every morning. Check the Execution History tab after the first scheduled run to confirm it worked correctly.

HubSpot returns deal stages as internal IDs that aren't readable in reports. This formula maps stage IDs to clean display names for your sheet. Add this to the Set Variables module to transform technical stage names into business-friendly labels.

Copy this templateswitch(dealstage; 'appointmentscheduled'; 'Demo Scheduled'; 'qualifiedtobuy'; 'Qualified'; 'presentationscheduled'; 'Presentation Set'; 'decisionmakerboughtin'; 'Decision Maker Engaged'; 'contractsent'; 'Contract Sent'; 'closedwon'; 'Won'; 'closedlost'; 'Lost'; dealstage)
▸ Show code
switch(dealstage; 'appointmentscheduled'; 'Demo Scheduled'; 'qualifiedtobuy'; 'Qualified'; 'presentationscheduled'; 'Presentation Set'; 'decisionmakerboughtin'; 'Decision Maker Engaged'; 'contractsent'; 'Contract Sent'; 'closedwon'; 'Won'; 'closedlost'; 'Lost'; dealstage)

... expand to see full code

switch(dealstage; 'appointmentscheduled'; 'Demo Scheduled'; 'qualifiedtobuy'; 'Qualified'; 'presentationscheduled'; 'Presentation Set'; 'decisionmakerboughtin'; 'Decision Maker Engaged'; 'contractsent'; 'Contract Sent'; 'closedwon'; 'Won'; 'closedlost'; 'Lost'; dealstage)

Scaling Beyond 200+ Records

If your volume exceeds 200 records, apply these adjustments.

1

Use iterator for large datasets

Add an Iterator module after HubSpot search to process deals one by one. This prevents memory issues and provides better error handling for individual records.

2

Implement batch writing

Use Array Aggregator to collect multiple rows, then write them all at once with Bulk Add Rows. This reduces API calls and improves performance significantly.

3

Add progress tracking

Include a timestamp column in your sheet to track when each export completed. This helps identify partial runs or processing issues with large datasets.

4

Split by deal age

Run separate scenarios for recently modified deals vs. older deals. Export recent changes hourly and full datasets daily to balance freshness with API efficiency.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy Make for this workflow

Use Make for this if you need reliable daily exports with proper error handling and data formatting. Make's visual builder makes it easy to add owner lookups and currency formatting that pure API exports miss. The scheduled trigger is rock-solid reliable compared to Zapier's occasional hiccups. Pick Zapier instead if you need this to run immediately when deals change rather than daily.

Cost

This workflow uses about 8 operations per deal exported (search, filter, owner lookup, format, write). With 50 deals daily, that's 400 operations per month. Make's free tier covers 1,000 operations monthly, so you're fine until around 125 deals daily. Zapier would cost $20/month for the same volume since their tasks count higher.

Tradeoffs

Zapier has better HubSpot triggers for real-time deal updates, and n8n offers more flexible data transformation with its code nodes. But Make hits the sweet spot for scheduled exports with its reliable cron scheduling and visual data mapping. The built-in formatNumber function handles currency properly without custom code, unlike n8n where you'd write JavaScript for the same result.

You'll hit HubSpot's 100-record API limit on the first search call if you have more deals than expected. The owner lookup can fail silently if deals lack assigned owners, leaving blank names in your export. Google Sheets occasionally throws rate limit errors if multiple Make scenarios write to the same sheet simultaneously, so space out your automations by 10-15 minutes if you build more.

Ideas for what to build next

  • Add win/loss trackingExport closed deals to a separate sheet with close reasons and actual close dates for sales performance analysis.
  • Create weekly pipeline digestBuild a summary report that emails pipeline changes and key metrics to stakeholders every Friday.
  • Sync sheet changes back to HubSpotAllow sales managers to update deal values or stages in the Google Sheet and push those changes back to HubSpot.

Related guides

Was this guide helpful?
Google Sheets + HubSpot overviewMake profile →