· 15 min read

Salesforce Google Sheets Integration: Connectors, Sync and Security (2026)

Most teams connect Salesforce and Google Sheets for one reason: someone needs CRM data in a spreadsheet, or spreadsheet rows in the CRM. Google’s free connector covers the basic case with reports, SOQL imports and scheduled refresh. Below: what it does, when an add-on, iPaaS or Apps Script fits better, how to set it up, and the security traps.
A CRM cloud with record cards and a spreadsheet grid connected by two arrows and a lock, illustrating a Salesforce Google Sheets integration
Moving Salesforce data in and out of Sheets?Tell us which reports, imports and updates your team runs through spreadsheets. We’ll map the data flow, tell you whether a connector is enough, and build and support the integration if it isn’t.
Map my Sheets and Salesforce flow

What people actually need from Sheets and Salesforce

“Integrate Salesforce with Google Sheets” usually means one of four jobs. Name yours first, because each one points to a different tool.

  • Pull for analysis. Finance or RevOps wants pipeline, bookings or activity data in a sheet to model, chart or blend with other numbers.
  • Recurring snapshot. A sheet that refreshes on a schedule and feeds a forecast, a commission calculation or a board pack.
  • Bulk edits. An admin or ops lead exports records, fixes owners, stages or regions in the sheet, and pushes the changes back.
  • Sheet as an intake form. Leads, event sign-ups or partner referrals land in a sheet (often from Google Forms), and each new row should become a Salesforce record.

The first three are mostly Salesforce → Sheets with occasional writeback. The fourth is Sheets → Salesforce, row by row, and is closer to a small integration than to a spreadsheet feature.

Google’s Salesforce connector for Sheets

Google builds and maintains a free add-on for this. As of October 2026, it is listed in the Google Workspace Marketplace as Salesforce Connector, while Google’s Docs Editors help still calls it Data connector for Salesforce. You install it in Sheets under Extensions, then Add-ons, then Get add-ons.

Google’s help describes four operations:

OperationWhat it doesDirection
ReportsImports an existing Salesforce report into a new or existing sheetSalesforce → Sheets
ImportBuilds a query with a query builder or SOQL, with up to 5 source objects, plus fields and filtersSalesforce → Sheets
RefreshRe-runs imported reports manually or on a schedule of every 4, 8 or 24 hoursSalesforce → Sheets
Update and DeleteInserts, updates or upserts records from a highlighted range, or deletes the highlighted records from Salesforce by a primary key columnSheets → Salesforce

Requirements

  • Salesforce API access. According to Salesforce’s REST API documentation, API access is on by default in Enterprise, Performance, Unlimited and Developer Edition orgs; Professional Edition needs the API add-on. Each user needs the API Enabled permission.
  • Workspace admin approval. Google’s admin help says the add-on must be allowed in the Admin console, either by enabling add-ons or by allowlisting this one.
  • Salesforce permissions apply. The add-on respects the object and field permissions of the Salesforce user who signs in. It cannot read or change anything that user can’t.
  • Connected app approval. The add-on signs in to Salesforce through OAuth. Salesforce has tightened the rules for third-party apps that aren’t installed in your org. If a user’s login is blocked, your Salesforce admin may need to install or approve the add-on’s app first.

Where it stops

  • Refresh is coarse. The shortest schedule is every 4 hours. Nothing is real time.
  • One source. It reads Salesforce only. Blending with HubSpot, Stripe or an ad platform needs another tool or formulas.
  • Writeback has no guardrails. Google’s help describes no approval step or preview of changes. Whatever is in the selected range goes to the org you signed in to, and Google tells you to use update and delete with caution.
  • English only, according to Google’s help.

Salesforce has its own route in the other direction. Its Data 360 (formerly Data Cloud) documentation describes a Google Sheets connector, labelled beta as of October 2026, that ingests sheet data into Data 360. It suits teams already licensed for Data 360, not a quick CRM export.

Your options compared

Five routes, from built-in to fully custom:

Salesforce reports and exportGoogle’s connectorSheets add-oniPaaSApps Script or custom
ExamplesReport export, subscriptions, dashboardsSalesforce Connector (Data connector for Salesforce)Coefficient, G-Connector, other Marketplace add-onsZapier, Make, WorkatoApps Script with the Salesforce REST API; middleware
DirectionSalesforce → fileBoth; writeback is manualBoth; often with scheduled or rule-based writebackUsually row by row, Sheets → Salesforce or the reverseYour design
FreshnessLive in Salesforce; files are one-offManual, or 4, 8, 24 hoursOften hourly or more frequent, depending on planNear real time per eventPer trigger, from every minute
Cost levelIncludedFreeSubscription per user or per workspaceSubscription per task or operationBuild cost plus upkeep
EffortHoursHoursHours to daysDaysDays to weeks
LimitsManual steps; no live linkSalesforce only; coarse schedule; no writeback controlsVendor pricing and row limits; another app with data accessNot built for bulk loads; costs grow with volumeGoogle quotas; you own auth, errors and changes

Add-on and iPaaS features and plans change often. Check the current Marketplace listing or pricing page for refresh frequency, row limits and writeback rules before you trial one.

Which option fits you?

The job, the refresh rate, writeback and the audience decide the tool here. Answer four questions and you get a route, which may be to skip the sheet and stay in Salesforce reports.

Which Salesforce Google Sheets setup fits?

How the data flows

The setup that holds up keeps Salesforce as the system of record. The sheet is a working copy: it reads on a schedule, and anything it writes back goes through one controlled path with a record ID and a results column.

Salesforce is the record, the sheet is a copy Salesforce (system of record) Reports, SOQL Opportunities, accounts Records Matched on ID or external ID Leads, contacts Created from new rows Google Sheets (working copy) Import tab Read only for most users Edit tab ID column + results column Form responses Status column per row Scheduled import Controlled writeback iPaaS or Apps Script, per row Google’s connector refresh manually or every 4, 8 or 24 hours; add-ons and scripts can run more often Outside Salesforce security anyone with the file sees every row; import only fields the readers need
Data flows into the sheet on a schedule. Changes and new rows flow back through one controlled path, keyed on a Salesforce ID or external ID.

Column and field mapping

Most sync problems come from the mapping, not the tool. Settle these columns before anyone edits a row.

Sheet columnSalesforceDirectionSystem of record
Record IDId of the record (Opportunity, Account, Contact…)Salesforce → Sheets; used as the key on updateSalesforce
External ID or emailA field marked as External ID, or Email on Lead or ContactBoth; the key for upserts from new rowsWhichever system creates the record
OwnerOwnerId (a user ID, not a name)Salesforce → Sheets; writeback only by adminsSalesforce
Stage, status, regionPicklist fieldsBoth, with values copied exactlySalesforce
Amount, close dateCurrency and date fieldsSalesforce → SheetsSalesforce
Account nameAccount.Name via the relationship (AccountId on write)Salesforce → Sheets; write the ID, not the nameSalesforce
Calculated columnsNothingStay in the sheetSheets
Results or statusNothingWritten by the tool after each writeback or row syncSheets

Two rules prevent most damage. First, never write back by name: owners, accounts and record types are IDs in Salesforce, and a name lookup in a sheet will eventually pick the wrong one. Second, keep imports and edits on separate tabs, so a scheduled refresh never overwrites someone’s unsent changes.

How to set it up with Google’s connector

Do the read-only part first and add writeback last, on a sandbox. For the current menus and labels, follow Google’s Docs Editors help alongside these steps.

  1. Write down the jobWhich report or objects, which fields, who reads the sheet, and whether anything goes back to Salesforce. If the answer to the last one is “no,” you can skip the writeback steps entirely.
  2. Check access on both sidesYour Salesforce org needs API access and each user the API Enabled permission. Your Workspace admin must allow the add-on in the Admin console.
  3. Install the add-onIn Sheets, open Extensions, then Add-ons, then Get add-ons, search for the Salesforce connector by Google and add it.
  4. Sign in to a sandbox firstUnder Extensions, open the connector and log in to Salesforce. Google’s help shows a choice of Salesforce environment at sign-in; pick your sandbox for anything that will write back.
  5. Import a report or build a queryUse Reports for an existing Salesforce report. Use Import (query builder or SOQL) for raw records, and include the record ID column every time.
  6. Set the refresh scheduleChoose manual, or every 4, 8 or 24 hours. Pick the slowest schedule the job can live with.
  7. Lock the import tabProtect the imported range so readers can’t type over it, and keep formulas and notes on another tab.
  8. Test writeback, if you need itOn the sandbox, edit a few rows, select the range, and choose Update and the object. Pick Insert, Update or Insert or Update, and choose a results column. Check every row’s result before trusting a larger batch.
  9. Move to production and share narrowlyRepeat the setup against production, share the file with named people only, and write down who may run Update or Delete.

Built by Gilzor

Results we’ve shipped

70+products launched
98%delivered on time
85%clients come back
Art Scherbakov, Co-FounderAndrew Laminsky, CTOYuri Rudenya, Head of Mobile Development at GilzorAlena Timofeeva, Product Marketing Lead

Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.

See how we’d approach yours

Add-ons, Zapier and Make, and Apps Script

Sheets add-ons

Third-party add-ons in the Google Workspace Marketplace, such as Coefficient and Xappex’s G-Connector, target the gaps in Google’s connector. They sell more frequent refresh, several data sources in one sheet, scheduled or rule-based writeback, and alerts. They are subscriptions, and each one is another app holding a Salesforce token.

Review what scopes it requests and who in your org can install it.

Zapier, Make and other iPaaS

An iPaaS fits events, not bulk loads: “when a row is added to this sheet, create a lead,” or “when an opportunity closes, add a row to the commissions sheet.” Pricing is per task or operation, so a flow that touches thousands of rows a day gets expensive fast.

Two habits keep these flows clean. The flow writes a status column after success, and it does a lookup by email or external ID before creating anything, so a re-run updates instead of duplicating. If the rows come from a website form, a direct form-to-Salesforce flow is often cleaner; see our Salesforce website integration guide.

Apps Script and the Salesforce REST API

Apps Script is Google’s JavaScript runtime inside Sheets. A script can call the Salesforce REST API with UrlFetchApp, run a SOQL query, write the results to a tab, and send rows back with upserts on an external ID. It is a good fit for custom rules that no add-on supports, at modest volume.

The limits come from Google’s published Apps Script quotas, as of October 2026:

  • 6 minutes per script execution.
  • 20,000 URL Fetch calls a day for consumer accounts and 100,000 for Google Workspace accounts.
  • Total trigger runtime of 90 minutes a day on consumer accounts and 6 hours on Workspace accounts.
  • Time-driven triggers can run as often as every minute; add-ons are limited to once an hour.

On the Salesforce side, every call counts against your org’s daily API request allocation, which depends on edition and licenses. Authenticate with OAuth through an external client app rather than a stored password.

Run the script as a dedicated integration user that can see only the objects and fields the script touches. Our Salesforce integration user guide covers that setup, and the Salesforce API integration guide covers the API choices. Store tokens in script properties, never in a cell.

Pitfalls and how to fix them

ProblemWhat happensFix
Writeback overwrites newer dataA sheet exported this morning pushes old values over changes reps made sinceRefresh right before any update; write back only the changed columns; compare LastModifiedDate
Accidental mass deleteDelete removes the highlighted records from production, not just the rowsLimit Delete to admins; test on a sandbox; know how your team restores from the Salesforce Recycle Bin
Duplicates from new rowsEach re-run or edited row creates another leadStatus column; upsert on email or an external ID; Salesforce duplicate rules on
Picklist mismatch“Closed Won ” with a space, or a renamed stage, fails or creates a bad valueData validation in the sheet with the exact Salesforce values; change picklists in both places together
Refresh wipes editsA scheduled import overwrites notes or formulas in the import rangeSeparate import and working tabs; protect the import range
Sync tied to one personThe connection and schedule run under someone’s login and stop when they leaveA dedicated account or integration user the team controls, documented in your runbook
Sheet grows too bigFull-history imports slow the file and approach the Sheets cell limitFilter by date or owner; archive old tabs; move history to a warehouse
Quota or API limit errorsScripts stop mid-run; API calls fail late in the dayBatch queries, cache results, run at off-peak times, and alert on failures

Security: a sheet is a copy outside Salesforce

This is the risk most teams underestimate. Inside Salesforce, sharing rules, roles and field-level security decide who sees which record. Once rows land in a sheet, the only control left is who can open the file.

  • Import the minimum. Leave out personal data, notes and financial fields the readers don’t need.
  • Share with named people, not “anyone with the link,” and turn off downloading, printing and copying for viewers where it matters.
  • Remember version history. Removing a column today doesn’t remove it from earlier versions of the file.
  • Watch the importer’s access. An admin who imports a report sees everything; the sheet then shows everything to whoever opens it.
  • Own the file in a shared drive, so it doesn’t disappear or change hands when its creator leaves.
  • Review add-on access in the Google Admin console and Salesforce connected app usage, and remove tools nobody uses.

When reports, dashboards or a warehouse are the better answer

A sheet is the right tool for one-off analysis, modeling and bulk edits by one or two people. It is often the wrong tool for the rest:

  • Team reporting. If a sales manager needs pipeline every morning, a Salesforce report or dashboard is live, respects sharing rules and can be emailed on a schedule with a subscription. No copy, no refresh to break.
  • History and joins. If finance wants three years of bookings joined with billing and product usage, the data belongs in a warehouse. Sheets can sit on top of it as a front end. Our Salesforce data integration guide covers pipelines and warehouses.
  • Large volumes. In September 2026, Google made a limit of up to 20 million cells per spreadsheet generally available in Sheets. That is a lot for a sheet and little for a warehouse table.
  • Operational sync. If another system reads the sheet as its source, the sheet has become a fragile database. Replace it with a real integration between the two systems.

Teams on Microsoft 365 face the same choices with different tools; see our Excel Salesforce integration guide.

When a custom integration makes sense

A custom build earns its cost once the sheet has become part of a process. Typical signs: rows trigger approvals, writeback needs validation and an audit trail, several Salesforce orgs feed one report, or volumes keep hitting Apps Script quotas.

A typical build is a small service that reads Salesforce through the REST or Bulk API and applies your rules. It writes to Sheets or a warehouse through Google’s APIs and logs every write, with retries and alerts.

$2–10kSimple one-way custom integration
$10–40kTypical custom two-way sync with a CRM
15–25%Of the build cost per year to keep it running

If Google’s connector or a short Apps Script covers your job, these numbers don’t apply. When they do, our API integration cost guide, the source of these ranges, explains what drives the price. For the wider picture of patterns and tools, see the Salesforce integration guide.

Go-live checklist

A sheet with live CRM data in it deserves the same review as any other integration. Check off what you have done; the score suggests your next step.

Salesforce Google Sheets go-live

FAQ

Can I connect Salesforce to Google Sheets for free?
Yes. Google publishes a free add-on, listed in the Google Workspace Marketplace as Salesforce Connector (Google’s help calls it Data connector for Salesforce). It imports Salesforce reports or SOQL queries into a sheet, refreshes imported reports manually or every 4, 8 or 24 hours, and can push edits back. Your Salesforce org still needs API access, and your Workspace admin must allow the add-on.
Does the Google Sheets Salesforce connector update Salesforce?
It can. According to Google’s help, the add-on has an Update function with Insert, Update and Insert or Update operations on a selected range, plus a Delete function that removes the highlighted records from Salesforce. Google’s help tells you to use both with caution because they change data in your Salesforce org, so test on a sandbox and limit who has edit rights in Salesforce.
How often does Salesforce data refresh in Google Sheets?
With Google’s add-on you refresh imported reports manually or set a schedule of every 4, 8 or 24 hours. Third-party add-ons usually offer hourly or more frequent schedules on paid plans. If you need data that is current to the minute, a sheet is the wrong place: use a Salesforce report or dashboard, or an event-driven integration.
Which Salesforce editions work with Google Sheets?
Any tool that reads Salesforce from Sheets uses the Salesforce API. According to Salesforce’s REST API documentation, API access is enabled by default in Enterprise, Performance, Unlimited and Developer Edition orgs, and Professional Edition orgs can add it as an add-on. Each user also needs the API Enabled permission.
How do I send Google Sheets rows to Salesforce automatically?
Use an iPaaS such as Zapier or Make with a “new or updated spreadsheet row” trigger and a Salesforce create or update action, or an Apps Script trigger that calls the Salesforce REST API. Add a status column so each row is sent once, and match on an external ID or email so repeats update instead of creating duplicates.
Is it safe to keep Salesforce data in Google Sheets?
Only with care. Once data lands in a sheet, Salesforce sharing rules and field-level security no longer apply: anyone with access to the file sees every row, including in version history. Import only the fields you need, share the file with named people, and use Salesforce reports instead when the audience is wide.

Where Gilzor fits

Often the right answer is Google’s free connector and a few rules about tabs and sharing. If you aren’t sure, Gilzor can help you choose between that connector, an add-on or an iPaaS. As a software development company, our team in Poland and Cyprus builds and maintains Salesforce integrations.

Where the sheet has become part of a process, we set up controlled writeback or build a custom integration on the Salesforce and Google APIs, and support it after launch. Our Salesforce integration services page explains how that work is scoped.

No sales pitch

Get a straight answer for your project

Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Next, a few optional questions so the first call is useful. We use your details only to reply to your request. Privacy Policy

Yuri Rudenya
Written byYuri Rudenya

Head of Mobile Development at Gilzor. Leads iOS and Android delivery and the mobile app audits, from release process to architecture.

LinkedIn →

Gilzor · Web Development partner

Need a team for your web product?

95%referred by business partners
70+successful launches
85%repeat business
98%delivered on time

The team behind them

Art Scherbakov
Art ScherbakovCo-Founder
Andrew Laminsky
Andrew LaminskyCTOLinkedIn
Yuri Rudenya
Yuri RudenyaHead of Mobile Development at GilzorLinkedIn
Alena Timofeeva
Alena TimofeevaProduct Marketing LeadLinkedIn
Tell us what you’re buildingOptions, a rough cost and timeline for your project. No commitment.

More insights