

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
scheduledUse case type
reportingReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Deal Name | dealname | |
| Stage | dealstage | |
| Value | amount | |
5 optional fields▸ show
| Owner | hubspot_owner_id |
| Close Date | closedate |
| Company | associatedcompanyid |
| Created Date | createdate |
| Source | hs_deal_source_id |
Step-by-Step Setup
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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 tracking — Export closed deals to a separate sheet with close reasons and actual close dates for sales performance analysis.
- →Create weekly pipeline digest — Build a summary report that emails pipeline changes and key metrics to stakeholders every Friday.
- →Sync sheet changes back to HubSpot — Allow sales managers to update deal values or stages in the Google Sheet and push those changes back to HubSpot.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup