Google Sheets connector
Read, append, and update rows in a Google Sheet from any Neblex workflow or agent, with the header row mapped to field names and rows identified by a key you choose, so a sheet can serve as a routing table, a review queue, or a lightweight export target, all under the same governance and audit trail as every other connector.
Overview
The Google Sheets connector lets a Neblex workflow or agent treat a spreadsheet as a small, human-editable data source: read a lookup table a business team maintains, append rows for review, or write a report a stakeholder opens without a login. It is the common bridge to work that does not justify a database, used with a clear eye on where a sheet stops being the right tool.
- The first row is treated as headers, so downstream steps use
owner_email, notcolumn D - Rows are matched on a key column you choose, or a content hash, never the row number, which shifts when rows are inserted or sorted
- There is no native change event: a flow polls on a schedule, or an Apps Script trigger in the sheet pushes edits to Neblex
- The connector flags a sheet that grows past a working threshold, where a database is the better home
Why teams use the Google Sheets connector
The three jobs this connector is picked for most often, and what each one gets you.
- Let a business team own the config.
- Give a stakeholder a view without a login.
- Catch the exceptions a flow cannot resolve.
Worked example
A real flow revenue ops teams turn on early, with the actual field-level detail.
Lead assignment driven by a sheet the sales ops team owns
A lead-routing flow reads the owner from a Google Sheet keyed on country and segment. Rows it cannot match append to an exceptions tab for sales ops to fix, and a follow-up flow reprocesses them.
- Upstream: an enriched lead arrives with
email,country,segment(one ofsmb,mid,ent), andemployee_count. - Read the table:
Find rowinRouting!A:Dwherecountrymatches andsegmentmatches, returningowner_email. - Fallback: if there is no country match, retry
Find rowwithcountry = ANYand the same segment, so the table needs one catch-all row per segment, not one per country. - No match at all:
Append rowtoUnrouted!A:Emappingnow() → timestamp,email → email,country → country,segment → segment,"no rule" → reason, then stop. - Assign: on a match, write
owner_emailto the CRM lead and post the lead link to that owner. - Reprocess: a second flow polls
Unrouted, and once sales ops adds a matching rule toRoutingand clears the row, it runs the assignment again.
Example flows
Common patterns other teams start from with this connector.
- CRM export for review. A weekly flow refreshes a Google Sheet of open pipeline for the sales leader, with a last-updated stamp and no CRM login needed. (RevOps)
- Bulk contact intake. Rows added to an event sign-up sheet are validated, deduped, and created as HubSpot contacts, with bad rows flagged in place. (Marketing)
- Approval tracker. Each expense over a threshold appends to a review sheet, and a status change in the sheet releases or rejects the payment. (Finance)
- Sheet to warehouse. A reference table maintained in Sheets loads into Snowflake on a schedule, so models can join against it. (Data)
Supported objects
A spreadsheet is a shallow structure, and that is the point. The connector works at the row and range level, with the header row as the schema.
What you can work with
Spreadsheet, Sheet (tab), Header row, Row, Cell, Range, Named range, Computed value, Formula
The connector reads computed values by default, so a formula column comes back resolved. It can read the underlying formula instead when a flow needs to copy logic rather than results.
Security and access
The connection uses Google OAuth, scoped to the spreadsheets you share with it, not your whole Drive.
- OAuth 2.0. Authorize with a Google account or a service account. A service account only sees sheets that are explicitly shared with its address.
- Per-file access. Scope the connection to specific spreadsheets. It cannot open a sheet that has not been shared with the connected identity.
- Read-only where that is enough. A routing-table flow authorizes read-only, so the connection cannot alter the sheet even if a step is misconfigured.
- Full audit trail. Every read, append, and update, with the spreadsheet ID, the range, and the values written, flows into the same Neblex audit trail as every other connector.
Limits, as the vendor publishes them
The shape of the vendor's limits, as published at the time of writing. Verify the exact figures for your plan; they change without notice. Neblex honors the vendor's own rate-limit and retry signals and backs off within them.
- The Sheets API allows about 300 read and 300 write requests per minute per project, and 60 per minute per user. The connector batches cells and paces to fit
- There is no push notification for edits: polling has a floor of about one minute, and an Apps Script trigger is the on the next poll option
- A spreadsheet is capped at 10 million cells across all tabs
- A single read or write request handles up to roughly 10 MB of values, so a very wide or very long range is paged
- Past about 50,000 rows, or when several flows write the same sheet, the connector recommends moving the data to Postgres or a warehouse and keeping only a view in Sheets
What a flow can do in Google Sheets
Append rows, read and update ranges, look up rows by a key column, clear ranges, create spreadsheets and sheets, update several ranges in one batch, and many more.
The connector exposes 17 operations, generated from Google Sheets as it ships, and 100% of them describe their output so later steps can map fields without guessing. Authentication: OAuth2.
How flows react to changes in Google Sheets
Google Sheets does not push change events to Neblex. A flow reacts to changes either with a Poll for changes trigger that reads the connector on a schedule and detects inserts, updates, and deletes, or by giving Google Sheets a Neblex webhook endpoint to call when it supports outbound notifications on your plan.
Frequently asked questions
Can it react to sheet edits on the next poll?
Google Sheets does not push change events to Neblex. A Poll for changes trigger reads the connector on the schedule you set and detects inserts, updates, and deletes, including deletes, through a cursor or a snapshot comparison. If Google Sheets can send webhooks on your plan, point them at a Neblex webhook endpoint for an event-driven start instead.
How does it identify a row to update?
By a key column you choose, such as an ID or an email, or by a hash of the row contents. It does not use the row number, which changes when rows are inserted, deleted, or sorted.
What happens with formula columns?
The connector reads the computed value by default, so a formula result comes back as data. It can read the raw formula when a flow needs the logic instead.
Is a Google Sheet a safe place for important data?
For a small, human-maintained table or a review queue, yes. Past tens of thousands of rows, or with concurrent writers, move the data to a database and keep the sheet as a view. The connector flags this.
How do I separate environments?
Use a separate spreadsheet per environment and bind each connection to its own file, so a test run cannot write the production sheet.
Bring one real integration
We will build it with you against your own systems, with the run log open.