Intermediate~15 min setupProductivity & CRMVerified April 2026
Google Sheets logo
HubSpot logo

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

scheduled

Use case type

reporting

Real-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.

/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 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.

HubSpot admin access or permission to read all deals and deal properties
Google account with edit access to the target spreadsheet
Google Sheet created with appropriate worksheet tab for the deal data
Knowledge of your HubSpot deal stage internal names for proper filtering

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Deal Namedealname
Deal Stagedealstage
Deal Valueamount
Deal Ownerhubspot_owner_id
4 optional fieldsβ–Έ show
Close Dateclosedate
Deal Sourcedeal_source
Company Nameassociatedcompanyid
Create Datecreatedate

Step-by-Step Setup

1

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.

  1. 1Click the 'New Workflow' button on your dashboard
  2. 2Enter 'Daily Deal Export' as the workflow name
  3. 3Click 'Create Workflow' to open the builder
βœ“ What you should see: You should see a workflow builder with Step 1 ready to configure as your trigger.
2

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.

  1. 1Click on the empty Step 1 box
  2. 2Select 'Schedule' from the trigger list
  3. 3Choose 'Cron scheduler' for daily runs
  4. 4Set expression to '0 8 * * *' for 8 AM daily
βœ“ What you should see: The trigger shows 'Schedule' with your cron expression and next run time displayed.
⚠
Common mistake β€” Cron expressions use UTC time. If you want 8 AM EST, set it to 13 (1 PM UTC) to account for timezone offset.
Pipedream
+
click +
search apps
Google Sheets
GO
Google Sheets
Add scheduled trigger
Google Sheets
GO
module added
3

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.

  1. 1Click '+ Add Step' below the trigger
  2. 2Search for 'HubSpot' and select the app
  3. 3Choose 'Search for Deals' action
  4. 4Click 'Connect Account' and authorize Pipedream
βœ“ What you should see: HubSpot step shows 'Connected' with your account email and the Search for Deals configuration form.
Pipedream settings
Connection
Choose a connection…Add
click Add
Google Sheets
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
4

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.

  1. 1Scroll to the 'Filters' section
  2. 2Add filter: Property = 'dealstage', Operator = 'NOT_HAS_PROPERTY_VALUE'
  3. 3Enter your closed stage names (closedwon, closedlost)
  4. 4Set 'Limit' to 500 to handle large pipelines
  5. 5Set 'Properties' to include dealname, dealstage, amount, hubspot_owner_id
βœ“ What you should see: Configuration shows your filter settings and the properties list you want to retrieve.
⚠
Common mistake β€” HubSpot's API returns internal stage names like 'closedwon' not display names like 'Closed Won'. Check your HubSpot settings for exact values.
Google Sheets
GO
trigger
filter
Deal Stage
matches criteria?
yes β€” passes through
no β€” skipped
HubSpot
HU
notified
5

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.

  1. 1Click '+ Add Step' after the HubSpot step
  2. 2Select 'Code' then 'Run Node.js code'
  3. 3Name the step 'Format Deal Data'
  4. 4Paste the transformation code in the code editor
βœ“ What you should see: Code step is created with your formatting script and shows the step name 'Format Deal Data'.
⚠
Common mistake β€” The HubSpot step returns owner IDs as numbers, not names. The code step will need to handle owner lookups or use placeholder values.

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 };
  }
});
6

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.

  1. 1Click '+ Add Step' after the code step
  2. 2Search for 'Google Sheets' and select it
  3. 3Choose 'Add Multiple Rows' action
  4. 4Click 'Connect Account' and authorize with Google
βœ“ What you should see: Google Sheets step shows 'Connected' with your Google account and the batch insert configuration.
7

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.

  1. 1Click the spreadsheet dropdown and select your target sheet
  2. 2Choose the worksheet tab (create 'Pipeline Export' if needed)
  3. 3Set 'Has Headers' to true
  4. 4Select 'Clear sheet before adding rows' to avoid duplicates
βœ“ What you should see: Configuration shows your selected spreadsheet, worksheet name, and the clear sheet option enabled.
⚠
Common mistake β€” Enabling 'Clear sheet before adding rows' will delete ALL data in that worksheet. Make sure you're not overwriting important data.
8

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.

  1. 1Click 'Add Column' for each field you want
  2. 2Set Column A header to 'Deal Name' and map to formatted deal name
  3. 3Set Column B to 'Stage' and map to deal stage
  4. 4Set Column C to 'Value' and map to formatted amount
  5. 5Set Column D to 'Owner' and map to owner name from code step
βœ“ What you should see: Column mapping shows 4 columns configured with proper headers and data sources from previous steps.
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
9

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.

  1. 1Click the 'Test' button at the top right
  2. 2Watch each step execute in sequence
  3. 3Check your Google Sheet to verify data was written correctly
  4. 4Review the step outputs for any errors or missing data
βœ“ What you should see: All steps show green checkmarks and your Google Sheet contains the exported deal data with proper formatting.
⚠
Common mistake β€” The test run will actually write data to your Google Sheet. Make sure you're testing with the correct spreadsheet and worksheet.
Pipedream
β–Ά Deploy & test
executed
βœ“
Google Sheets
βœ“
HubSpot
HubSpot
πŸ”” notification
received
10

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.

  1. 1Click the 'Deploy' button to activate the workflow
  2. 2Confirm the schedule settings in the deployment dialog
  3. 3Click 'Deploy Workflow' to make it live
βœ“ What you should see: Workflow status shows 'Active' with the next scheduled run time displayed in your dashboard.

Scaling Beyond 200+ active deals+ Records

If your volume exceeds 200+ active deals records, apply these adjustments.

1

Batch by deal owner

Create separate workflows for different sales reps to distribute API load and make troubleshooting easier.

2

Add retry logic

Wrap the HubSpot API call in try-catch with exponential backoff to handle rate limit errors gracefully.

3

Cache owner lookups

Store owner ID-to-name mappings in workflow state to avoid repeated API calls for the same team members.

4

Use pagination

For 1000+ deals, implement pagination in your code step to process deals in chunks of 500 rather than one massive call.

5

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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

Was this guide helpful?
← Google Sheets + HubSpot overviewPipedream profile β†’