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

How to Export Pipeline to Sheets with Power Automate

Automatically query Salesforce for open opportunities every morning and write them to a Google Sheet.

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 daily pipeline visibility in Sheets without manual Salesforce exports

Not ideal for

Teams needing real-time updates or complex SOQL queries with multiple object relationships

Sync type

scheduled

Use case type

reporting

Real-World Example

💡

A 25-person B2B sales team uses this to export their open opportunities to a shared Google Sheet every morning at 8 AM. Sales managers review pipeline health in Sheets during daily standups instead of logging into Salesforce. Before automation, the VP of Sales manually exported data twice per week, missing deals that closed between exports.

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 Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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.

Salesforce user account with API access enabled (not available in all editions)
Google account with edit access to the target spreadsheet
Microsoft Power Platform license (included with most Office 365 plans)
Salesforce permissions to read Opportunity objects and fields

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Opportunity NameName
AmountAmount
Close DateCloseDate
Stage NameStageName
3 optional fields▸ show
Account IDAccountId
Owner IDOwnerId
ProbabilityProbability

Step-by-Step Setup

1

My flows > + New flow > Scheduled cloud flow

Create scheduled cloud flow

Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then '+ New flow' in the top toolbar. Select 'Scheduled cloud flow' from the dropdown menu. Name your flow 'Daily Pipeline Export' and set it to run every day at 8:00 AM.

  1. 1Click 'My flows' in left sidebar
  2. 2Click '+ New flow' button
  3. 3Select 'Scheduled cloud flow'
  4. 4Name it 'Daily Pipeline Export'
  5. 5Set frequency to daily at 8:00 AM
What you should see: You should see a new flow designer with a Recurrence trigger already configured for daily execution.
Common mistake — The timezone defaults to UTC - change this to your local timezone or opportunities will export at the wrong time.
2

Flow designer > + New step > Salesforce > Get records (V2)

Add Salesforce connection

Click '+ New step' below the Recurrence trigger. Search for 'Salesforce' in the connector search bar and select it. Choose the 'Get records (V2)' action from the list. Power Automate will prompt you to create a connection - click 'Sign in' and authenticate with your Salesforce credentials.

  1. 1Click '+ New step' under Recurrence
  2. 2Type 'Salesforce' in search bar
  3. 3Select 'Salesforce' connector
  4. 4Choose 'Get records (V2)' action
  5. 5Click 'Sign in' and authenticate
What you should see: You should see 'Connected to Salesforce as [your-email]' with Object type and Filter query fields visible.
Common mistake — If you see 'Invalid Login' errors, your Salesforce admin may have IP restrictions enabled for API access.
3

Salesforce step > Configuration

Configure opportunity query

In the Object type dropdown, select 'Opportunities'. Leave the Filter query field blank to get all opportunities, or add 'IsClosed eq false' to get only open deals. Set the Order by field to 'CreatedDate desc' to get newest opportunities first. Leave Fetch only top records blank to get all matching records.

  1. 1Select 'Opportunities' from Object type dropdown
  2. 2Enter 'IsClosed eq false' in Filter query
  3. 3Set Order by to 'CreatedDate desc'
  4. 4Leave Fetch only top records blank
What you should see: The Salesforce step shows 'Opportunities' selected with your filter query visible in the configuration panel.
4

Flow designer > + New step > Excel Online (Business) > Update a range

Add Google Sheets connection

Click '+ New step' below the Salesforce action. Search for 'Excel Online (Business)' - this connector also handles Google Sheets in Power Automate. Select 'Update a range' action. You'll need to authenticate with your Google account that has access to the target spreadsheet.

  1. 1Click '+ New step' below Salesforce
  2. 2Search 'Excel Online Business'
  3. 3Select the connector
  4. 4Choose 'Update a range' action
  5. 5Sign in with Google account
What you should see: You should see file selection dropdowns and range configuration options for your Google Sheets.
Common mistake — Power Automate's Google Sheets connector is limited - use Excel Online (Business) which has better batch update capabilities.
5

Excel step > File selection

Select target spreadsheet

In the Location dropdown, select 'OneDrive for Business' if your Sheet is there, or browse to find your Google Drive. Select your target spreadsheet from the Document Library dropdown. Choose the specific worksheet tab from the Table dropdown. Set the Range field to 'A2:G2' to start writing data in row 2, leaving row 1 for headers.

  1. 1Select location from dropdown
  2. 2Choose your spreadsheet file
  3. 3Select worksheet tab
  4. 4Enter range 'A2:G100' for data rows
What you should see: You should see your spreadsheet and worksheet selected with the range field populated.
Common mistake — If your spreadsheet isn't visible, check that your Google account has edit permissions and the file isn't restricted by your organization.
6

Excel step menu > Add an action before > Excel Online (Business) > Clear range

Clear existing data first

Before the Excel step, add another action to clear old data. Click the '...' menu on the Excel step and select 'Add an action before'. Search for 'Excel Online (Business)' again and choose 'Clear range'. Use the same file selection but set the range to 'A2:G1000' to clear all data rows while preserving headers.

  1. 1Click '...' on Excel step
  2. 2Select 'Add an action before'
  3. 3Choose Excel Online (Business) connector
  4. 4Select 'Clear range' action
  5. 5Set range to 'A2:G1000'
What you should see: You should now have Clear range step before Update range, both pointing to the same spreadsheet.
7

Update range step > Values field > Dynamic content

Map opportunity fields

In the Update range step, click inside the Values field. Power Automate will show 'Apply to each' since Salesforce returns multiple opportunities. Map each column: A=Name, B=Amount, C=CloseDate, D=StageName, E=AccountId, F=OwnerId, G=Probability. Use dynamic content picker to select these fields from the Salesforce response.

  1. 1Click in Values field
  2. 2Select opportunity Name for column A
  3. 3Map Amount to column B
  4. 4Add CloseDate, StageName, AccountId, OwnerId, Probability
  5. 5Ensure all 7 columns are mapped
What you should see: You should see an 'Apply to each' loop containing the Update range action with all field mappings visible.
Common mistake — OwnerId and AccountId will show as Salesforce IDs, not names - add lookup steps if you need readable names instead.
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
8

Flow toolbar > Save > Test > Manually > Run flow

Test the flow

Click 'Save' in the top toolbar to save your flow. Then click 'Test' and choose 'Manually' to run it immediately. Click 'Run flow' to execute the test. Watch the run history to see each step complete - green checkmarks indicate success, red X's show errors. Check your Google Sheet to verify opportunity data appeared.

  1. 1Click 'Save' in top toolbar
  2. 2Click 'Test' button
  3. 3Select 'Manually' option
  4. 4Click 'Run flow'
  5. 5Monitor execution in run history
What you should see: You should see green checkmarks for all steps and fresh opportunity data in your Google Sheet starting at row 2.
Common mistake — If the test fails with 'Too many requests', your Salesforce org has API limits - reduce query scope or run less frequently.
Power Automate
▶ Test flow
executed
Google Sheets
Salesforce
Salesforce
🔔 notification
received
9

Action menu > Settings > Configure run after

Add error handling

Click on each action and select 'Settings' from the action menu. Turn on 'Configure run after' and check 'is successful' and 'has failed'. Add a final step using 'Send an email (V2)' action to notify you if the daily export fails. This ensures you know when data isn't updating.

  1. 1Click each action's '...' menu
  2. 2Select 'Settings'
  3. 3Enable 'Configure run after'
  4. 4Check success and failure options
  5. 5Add email notification for failures
What you should see: Each step shows run-after configuration and you have an email alert for failures.

Use this Power Fx expression in the Amount field to format currency values with proper comma separators and dollar signs instead of raw numbers.

JavaScript — Code Stepconcat(
▸ Show code
concat(
  "$",
  formatNumber(

... expand to see full code

concat(
  "$",
  formatNumber(
    float(items('Apply_to_each')?['Amount']),
    "#,##0.00"
  )
)

Scaling Beyond 500+ opportunities+ Records

If your volume exceeds 500+ opportunities records, apply these adjustments.

1

Use date-based filtering

Add 'CreatedDate ge 2024-01-01T00:00:00Z' to your filter query to limit results to recent opportunities. This prevents timeouts and reduces API usage.

2

Implement batching with Skip tokens

For orgs with 5,000+ opportunities, use the Skip token parameter in Get records to page through results. Each batch processes 5,000 records maximum.

3

Clear ranges efficiently

Instead of clearing A2:G1000, calculate the exact range based on your opportunity count. Use length(body('Get_records')?['value']) to determine how many rows to clear.

4

Monitor API governor limits

Salesforce limits API calls per 24-hour period. Check Setup > System Overview > API Usage regularly and reduce frequency if you approach limits.

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 Microsoft Power Automate for this if you're already in the Microsoft ecosystem and need a basic daily export without complex data transformation. The Excel Online connector handles batch updates better than individual row inserts, and the scheduled triggers are reliable. Skip this for real-time updates or complex SOQL queries - use Zapier for simple webhook-based syncing instead.

Cost

Costs run about $15/user/month for the base Power Platform license, which includes 2,000 API calls. At 100 opportunities exported daily, you'll use roughly 3,000 API calls per month, pushing you into premium connector territory. Zapier costs $20/month for 2,000 tasks but counts each opportunity as one task - making Power Automate slightly cheaper for bulk operations.

Tradeoffs

Make handles SOQL queries better with its Salesforce Search module and proper relationship traversal - no separate lookups needed for Account.Name. N8n gives you full JavaScript access for data transformation and costs nothing for self-hosted deployments. Pipedream excels at error handling and retry logic for failed API calls. But Power Automate wins on enterprise compliance and built-in Office 365 integration if you're already paying for Microsoft licenses.

You'll hit Salesforce API limits faster than expected - most Professional editions cap at 1,000 calls per day across all integrations, not just your flow. The Excel Online connector occasionally fails with 'Service Unavailable' errors during Microsoft maintenance windows. Power Automate's Apply to each loops can timeout after 60 seconds with large datasets, forcing you to add pagination logic that should be automatic.

Ideas for what to build next

  • Add account name lookupReplace AccountId with readable company names using additional Get record steps for cleaner reports.
  • Create closed deals trackerBuild a second flow to export won/lost opportunities to a different sheet tab for historical analysis.
  • Set up Slack notificationsAdd a step to post daily pipeline summaries to your sales channel when the export completes.

Related guides

Was this guide helpful?
Google Sheets + Salesforce overviewPower Automate profile →