

Google Sheets + Salesforce Integration
Sync data between Google Sheets and Salesforce — import leads from spreadsheets, export reports to Sheets, and keep both systems updated.
What can you automate?
The most common ways teams connect Google Sheets and Salesforce.
Import leads from spreadsheets
When rows are added to a Google Sheet, create or update leads in Salesforce.
Export pipeline to Sheets
Every morning, query Salesforce for open opportunities and write them to a Google Sheet.
Bi-directional contact sync
When a Salesforce contact is updated, update the matching row in Sheets and vice versa.
Event lead import
After a trade show, paste attendee data into a Sheet and import all rows as Salesforce leads.
Weekly sales report
Every Friday, run a SOQL query for closed-won deals and append a summary to a spreadsheet.
Platform Comparison
How each automation tool connects Google Sheets and Salesforce.

Iterator for bulk row processing. SOQL support for precise exports.
Top triggers
Top actions
Code-first with pre-built components. Full npm/PyPI access in every step. Free tier includes 10K invocations/day.
Top triggers
Top actions
Find or Create Lead in one step. Salesforce is a premium app.
Top triggers
Top actions
Deep Microsoft 365 integration. Best when both apps have Power Automate connectors. Desktop flows add RPA capability.
Top triggers
Top actions
Full SOQL query access. Bulk API support for large imports.
Top triggers
Top actions
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.
When this pair isn't the right answer
Honest scenarios where Google Sheets + Salesforce via an automation platform isn't the best fit.
Salesforce Data Loader is free and built specifically for Sheet-to-Salesforce bulk loads. For scheduled imports or exports of more than about 1,000 rows, Data Loader uses the Salesforce Bulk API — dramatically faster and cheaper than row-by-row automation tool flows. The Data Import Wizard is even simpler for basic cases. Only use an automation tool when the sync needs to run on demand, trigger follow-up workflows, or combine Sheets data with another source first.
Row-by-row upserts at scale are the wrong approach. Automation tools typically call Salesforce once per row. Salesforce's Bulk API can ingest 10,000 records in a single call and is what Salesforce itself recommends above about 2,000 records. A 10,000-row nightly sync via an automation tool burns 10,000 tasks; the same job via Bulk API is one call. If your Sheet has that much data, move to Bulk API.
Salesforce Connect with the Google Sheets connector is native and live. If Salesforce needs to show Sheet data in a list view or Lightning component, Salesforce Connect can expose the Sheet as an "External Object" that Salesforce queries live — no sync job, no stale copies. It's a paid feature, but for read-only patterns it's the right choice.
What breaks at scale
Where Google Sheets + Salesforce integrations hit ceilings — API rate limits, tier quotas, and per-task economics.
Salesforce's 24-hour call limit is the real bottleneck. Enterprise Edition allocates about 1,000 calls per licensed user per 24 hours with a minimum floor. A nightly upsert of 5,000 rows one-at-a-time burns 5,000 calls before anything else runs — often 30 to 50% of a small org's daily budget. Bulk API jobs count as 1 call per batch of up to 10,000 records, which is how Salesforce expects you to handle volume.
Sheets read limits are per project, not per user. 100 reads per 100 seconds per user per project. A Zapier account running a polled Sheets read every 15 minutes across 20 different flows hits this during peak hours. You don't get errors, just slower polls — the integration falls behind without raising alarms.
Per-task pricing collapses on high-row-count syncs. Row-level upserts bill 1 task per row whether the row actually changed or not. A weekly 10,000-row sync = 40,000 tasks a month on that flow alone, which is above most team plans. Bulk API plus a simple scheduled script does the same job with about 1/40th the task count.
Our Recommendation

Make wins this pair on the math.
- Sheets-to-Salesforce flows are routinely multi-row — a 500-row marketing list, a 2,000-row pipeline export — and Make's Iterator module processes the rows as a single scenario rather than billing one task per row.
- Zapier's point-and-click model is faster to set up for a one-row trigger but inverts on cost the moment the Sheet has more than a few hundred rows.
- Make also handles raw SOQL queries on the Salesforce-to-Sheets direction, which is what most useful exports actually need (Zapier hides SOQL behind point-and-click field selection that doesn't cover joins or aggregations).
- For the dev-heavy edge cases — custom matching logic, complex field transformations — Pipedream is a cheaper alternative if the team can write a small node, but for most RevOps and marketing-ops teams the visual Iterator workflow in Make is the right balance of power and accessibility.
Analysis
Every RevOps team has a shared spreadsheet that's secretly running half the Salesforce workflow, and a Google Sheets-to-Salesforce automation is what stops the manual re-import cycle.
The pattern is the same everywhere: a marketing list lands in a Sheet, an event roster lives in a Sheet, the AE territory map sits in a Sheet — and someone, eventually, exports as CSV and walks it through Salesforce's Data Import Wizard at the end of every quarter. The pair exists to short-circuit that loop in both directions.
Sheets-to-Salesforce: a new row becomes a Lead, Contact, or Opportunity with deduplication on email or external ID. Salesforce-to-Sheets: a scheduled SOQL query writes pipeline, opportunity history, or activity counts to a tab the team actually opens.
Once both directions run, the Sheet stops being a holding pen and starts being a working surface — and the CRM stays in sync without a human in the loop.
The integration is asymmetric: Sheets-to-Salesforce is row-level and write-heavy, Salesforce-to-Sheets is query-level and read-heavy.
Going in, the trigger is "new row added" or "row updated" on a named tab, and the action is Find Record (by email, external ID, or custom matching field) followed by Create or Update — the dedup step is non-negotiable, because re-importing the same Sheet twice without it doubles every record. Going out, the trigger is a schedule (every morning at 6am, or every Monday), and the action is a SOQL query (or a Salesforce report) feeding rows back into a target tab. Make's Iterator module processes a multi-row export as a single scenario rather than one operation per row, which makes it dramatically cheaper than Zapier for any export over a few hundred rows.
Salesforce API access is required: Professional Edition with API add-on or Enterprise Edition and up; Essentials does not expose the API at all, so the cheapest Salesforce tier blocks this pair entirely.
RevOps, marketing operations, and finance teams who use Salesforce alongside spreadsheets get the clearest lift from this pair, because the spreadsheet is where the human work happens and Salesforce is where the system of record needs to live.
The recurring patterns cluster around three jobs. First, list ingestion: a partner sends a CSV of leads, marketing pastes it into a Sheet, the automation fires Find or Create Lead with source attribution and routes the new ones to the right owner — replacing the "every Friday I do the import" task.
Second, scheduled pipeline export: a SOQL query runs every morning and dumps open opportunities, stage history, and last-activity dates into a Sheet, where finance or the leadership team builds forecasts and pivot tables that don't exist as Salesforce reports. Third, mass field correction: an analyst exports a slice of records to a Sheet, fixes 200 wrong industry codes or owner assignments, and the automation writes the corrections back as Update Record actions — far faster than clicking through Salesforce list views.
Three things to check before wiring this up.
Salesforce Data Loader is free, native, and built for exactly this job at scale: it uses Bulk API 2.0, handles up to 150 million records per day, and is what Salesforce itself recommends above roughly 50,000 records — for one-time migrations or scheduled large loads, Data Loader will outperform any iPaaS by an order of magnitude. The Google-Salesforce data connector that used to live in the Workspace Marketplace was sunset in late 2024, so teams that relied on the official Workspace integration need to migrate to a third-party connector (Coefficient is the most-cited replacement for live two-way Sheets-Salesforce links).
And third, watch the API budget: Enterprise Edition starts at 100,000 calls per 24-hour rolling window plus 1,000 per licensed user, and a row-by-row sync of a 5,000-row Sheet burns 5,000 calls before any other automation runs — at that volume, switch the job to Bulk API 2.0 (which counts as one call per 10,000-record batch) instead of running it through a per-row connector.
Google Sheets + Salesforce Workflow Guides
Step-by-step setup guides for connecting Google Sheets and Salesforce.