

How to export deal pipeline to Google Sheets with Pipedream
Export all active HubSpot deals to Google Sheets 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 that need a daily snapshot of all active deals in a spreadsheet format for reporting or analysis
Not ideal for
Teams that need real-time deal updates or want to sync changes back to HubSpot
Sync type
scheduledUse case type
reportingReal-World Example
A 25-person B2B sales team exports their HubSpot pipeline to Google Sheets at 8 AM daily for their morning standup. The VP of Sales shares this sheet with leadership to review deal progress without giving everyone HubSpot access. Before automation, someone manually exported deals 3 times per week and the data was always stale.
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 Pipedream
Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 | |
| Deal Stage | dealstage | |
| Deal Value | amount | |
| Deal Owner | hubspot_owner_id | |
4 optional fieldsβΈ show
| Close Date | closedate |
| Deal Source | deal_source |
| Company Name | associatedcompanyid |
| Create Date | createdate |
Step-by-Step Setup
Workflows > New
Create new workflow
Go to pipedream.com and click New Workflow. Name it 'Daily Deal Export' or similar. You'll see the workflow builder with an empty trigger step at the top.
- 1Click the 'New Workflow' button on your dashboard
- 2Enter 'Daily Deal Export' as the workflow name
- 3Click 'Create Workflow' to open the builder
Workflow Builder > Step 1 > Trigger
Add scheduled trigger
Click on Step 1 to configure the trigger. Select 'Schedule' from the trigger options. Set it to run daily at your preferred time - most teams choose 8 AM in their timezone.
- 1Click on the empty Step 1 box
- 2Select 'Schedule' from the trigger list
- 3Choose 'Cron scheduler' for daily runs
- 4Set expression to '0 8 * * *' for 8 AM daily
Workflow Builder > Add Step > HubSpot
Connect HubSpot account
Add a new step and search for HubSpot. Select 'Search for Deals' action. You'll need to connect your HubSpot account through OAuth. Make sure you have admin access or deal read permissions.
- 1Click '+ Add Step' below the trigger
- 2Search for 'HubSpot' and select the app
- 3Choose 'Search for Deals' action
- 4Click 'Connect Account' and authorize Pipedream
HubSpot Step > Configuration
Configure deal search filters
In the HubSpot step, set up filters to get only active deals. Set dealstage to exclude 'Closed Won' and 'Closed Lost' stages. Leave other filters empty to get all active deals. Set the limit to 100 or higher based on your pipeline size.
- 1Scroll to the 'Filters' section
- 2Add filter: Property = 'dealstage', Operator = 'NOT_HAS_PROPERTY_VALUE'
- 3Enter your closed stage names (closedwon, closedlost)
- 4Set 'Limit' to 500 to handle large pipelines
- 5Set 'Properties' to include dealname, dealstage, amount, hubspot_owner_id
Workflow Builder > Add Step > Code
Add data transformation step
Add a Node.js code step to clean up the deal data. You'll format the owner ID into readable names and structure the data for Google Sheets. This step handles the owner lookup and data formatting.
- 1Click '+ Add Step' after the HubSpot step
- 2Select 'Code' then 'Run Node.js code'
- 3Name the step 'Format Deal Data'
- 4Paste the transformation code in the code editor
This code step transforms the raw HubSpot deal data and handles owner ID lookups. Paste it in the Node.js code step between HubSpot and Google Sheets.
JavaScript β Code Stepexport default defineComponent({βΈ Show code
export default defineComponent({
async run({ steps, $ }) {
const deals = steps.hubspot.data.results;... expand to see full code
export default defineComponent({
async run({ steps, $ }) {
const deals = steps.hubspot.data.results;
// Owner ID to name mapping (customize with your team)
const ownerMap = {
'12345': 'Sarah Johnson',
'67890': 'Mike Chen',
'54321': 'Alex Rivera'
};
const formattedDeals = deals.map(deal => {
const amount = deal.properties.amount;
const formattedAmount = amount ? `$${parseInt(amount).toLocaleString()}` : '$0';
const ownerName = ownerMap[deal.properties.hubspot_owner_id] || 'Unassigned';
const stageName = deal.properties.dealstage
.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/^./, str => str.toUpperCase());
return {
'Deal Name': deal.properties.dealname || 'Untitled Deal',
'Stage': stageName,
'Value': formattedAmount,
'Owner': ownerName,
'Close Date': deal.properties.closedate || 'Not set'
};
});
return { formattedDeals };
}
});Workflow Builder > Add Step > Google Sheets
Connect Google Sheets
Add a Google Sheets step and select 'Add Multiple Rows' action. Connect your Google account when prompted. You'll need edit access to the target spreadsheet.
- 1Click '+ Add Step' after the code step
- 2Search for 'Google Sheets' and select it
- 3Choose 'Add Multiple Rows' action
- 4Click 'Connect Account' and authorize with Google
Google Sheets Step > Spreadsheet Configuration
Configure spreadsheet target
Select your target Google Sheet from the dropdown or enter the spreadsheet ID. Choose the worksheet tab where deals should go. Most teams create a dedicated 'Daily Deals' or 'Pipeline Export' tab.
- 1Click the spreadsheet dropdown and select your target sheet
- 2Choose the worksheet tab (create 'Pipeline Export' if needed)
- 3Set 'Has Headers' to true
- 4Select 'Clear sheet before adding rows' to avoid duplicates
Google Sheets Step > Column Mapping
Map deal fields to columns
Configure the column mapping to match your desired output format. Map the formatted data from your code step to spreadsheet columns. Set up columns for Deal Name, Stage, Value, and Owner.
- 1Click 'Add Column' for each field you want
- 2Set Column A header to 'Deal Name' and map to formatted deal name
- 3Set Column B to 'Stage' and map to deal stage
- 4Set Column C to 'Value' and map to formatted amount
- 5Set Column D to 'Owner' and map to owner name from code step
Workflow Builder > Test
Test the workflow
Click 'Test' to run the workflow manually. Watch each step execute and check that deals are properly exported to your Google Sheet. The test run will show you exactly what data gets written.
- 1Click the 'Test' button at the top right
- 2Watch each step execute in sequence
- 3Check your Google Sheet to verify data was written correctly
- 4Review the step outputs for any errors or missing data
Workflow Builder > Deploy
Enable workflow
After successful testing, click 'Deploy' to activate the scheduled workflow. It will now run automatically at your specified time each day. You can monitor runs from the workflow dashboard.
- 1Click the 'Deploy' button to activate the workflow
- 2Confirm the schedule settings in the deployment dialog
- 3Click 'Deploy Workflow' to make it live
Scaling Beyond 200+ active deals+ Records
If your volume exceeds 200+ active deals records, apply these adjustments.
Batch by deal owner
Create separate workflows for different sales reps to distribute API load and make troubleshooting easier.
Add retry logic
Wrap the HubSpot API call in try-catch with exponential backoff to handle rate limit errors gracefully.
Cache owner lookups
Store owner ID-to-name mappings in workflow state to avoid repeated API calls for the same team members.
Use pagination
For 1000+ deals, implement pagination in your code step to process deals in chunks of 500 rather than one massive call.
Monitor API usage
Track your HubSpot API limit consumption in the workflow logs to avoid hitting daily quotas during peak usage.
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 Pipedream for this if you need reliable daily exports with custom data formatting. The Node.js code steps let you clean up owner IDs, format currency properly, and handle stage name transformations that other platforms struggle with. The scheduled triggers fire consistently without the polling delays you get with Zapier. Skip Pipedream if you want a pure no-code solution - Zapier's HubSpot integration is more point-and-click friendly.
Pipedream costs 1 credit per workflow run. At daily exports, that's 30 credits monthly on the free tier. Make costs 2 operations per run (HubSpot + Google Sheets) so 60 operations monthly, burning through their 1,000 free ops in 16 days. For daily reporting, Pipedream is cheaper long-term.
Zapier handles HubSpot deal formatting better out-of-the-box with built-in field formatters for currency and dates. Make's data transformation tools are more visual than writing Node.js code. N8N offers the same coding flexibility as Pipedream but requires self-hosting. Power Automate's Excel integration is superior if you need advanced spreadsheet features. But Pipedream wins on reliability - their cron scheduling never misses runs like Zapier's polling can.
You'll hit owner ID resolution headaches within the first week. HubSpot returns numeric IDs but your spreadsheet needs readable names. The API rate limits kick in around 300+ deals if you're also running other HubSpot automations. Google Sheets occasionally throws range parsing errors when worksheet names have spaces, forcing you to rename tabs and update the workflow.
Ideas for what to build next
- βAdd deal age calculation β Include a column showing days since deal creation to identify stalled opportunities.
- βCreate win rate analysis β Export closed deals to a separate sheet for monthly win rate and performance tracking.
- βBuild forecast accuracy report β Compare close date predictions with actual close dates to improve forecasting discipline.
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