Google Sheets 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.
- Ranges come back as rows of cell values; a Map fields or Code step turns the header row into field names for later steps
- To update a specific row, the flow reads the range, finds the row with a Filter or Lookup step, and writes back to that row's range
- There is no native change event: a Poll for changes trigger checks the sheet on a schedule, or an Apps Script in the sheet can call a Neblex Webhook trigger
- For large or heavily shared data, a database is the better home; keep the sheet as a view
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. A routing or mapping table lives in a sheet the team already edits, and the flow reads it on every run, so a rule change needs no flow change.
- Give a stakeholder a view without a login. A scheduled flow refreshes a sheet with the numbers someone needs, and they open it like any other spreadsheet.
- Catch the exceptions a flow cannot resolve. Records the flow cannot match are appended to an exceptions tab, where a person fixes the rule and a follow-up flow picks them up again.
Worked example
A real flow revenue ops teams turn on early, with the actual step-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: read
Routing!A:Dand map the header row tocountry,segment,owner_email, andnotes. - Match: a Lookup step finds the row where
countryandsegmentmatch, falling back to the row withcountry = ANYfor that segment, so the table needs one catch-all row per segment, not one per country. - No match at all: append a row to
Unrouted!A:Ewith the timestamp,email,country,segment, and the 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, deduplicated, and created as HubSpot contacts, with rejected rows written to a separate tab. (Marketing)
- Approval tracker. Each expense over a threshold appends to a review sheet, and a person approves it in a Neblex task before the payment is released. (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
The connector works at the spreadsheet, sheet, and range level through the Google Sheets API v4.
What you can work with
Spreadsheet, Sheet (tab), Range, Row, Cell, Developer metadata
Reads return formatted values by default; the API's value render option returns raw values or formulas instead when a flow needs them.
Security and access
The connection signs in with Google OAuth and acts as the Google account that authorized it.
- OAuth 2.0. Connect through Connect a Service and approve access in Google's window. Tokens are stored encrypted.
- The account's own access. The connection can open every spreadsheet the authorizing account can open, so authorize with an account that only has access to the sheets your flows need.
- Separate accounts per purpose. Use a dedicated Google account for automation, so access can be reviewed and revoked without touching anyone's personal files.
- Run history. Every run shows each step's status and errors; record data from successful runs is kept when the flow is set to keep run data for replay.
Limits, as Google publishes them
The shape of Google's limits, as published at the time of writing. Verify the exact figures for your project; they change without notice.
- The Sheets API allows about 300 read and 300 write requests per minute per project, and 60 per minute per user. A rate-limited read is retried with backoff; for writes, turn on Retry on failure for the step
- There is no push notification for edits: polling runs from every minute upward, and an Apps Script trigger can call a Neblex Webhook trigger for an immediate start
- A spreadsheet is capped at 10 million cells across all tabs
- A single request handles up to roughly 10 MB of values, so read very large sheets in smaller ranges
- Past tens of thousands of rows, or when several flows write the same sheet, keep the data in a database and the sheet as a view
What a flow can do in Google Sheets
Append rows to a range, read and update ranges, read several ranges in one call, clear ranges, create spreadsheets and copy sheets, update several ranges in one batch, and many more.
The connector has 17 operations, and 100% of them describe their output so later steps can map fields directly. Sign-in method: OAuth 2.0 sign-in.
Every operation, with its inputs and outputs, is listed in the Google Sheets connector reference.
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 as they happen?
Google Sheets does not send change events to Neblex. A Poll for changes trigger can check a range on the schedule you set, from every minute upward. With a change detection key it reports inserts, updates, and deletes. For an immediate start, an Apps Script trigger in the sheet can call a Neblex Webhook trigger.
How does a flow update one specific row?
It reads the range, finds the row by a key column such as an ID or an email with a Filter or Lookup step, and writes to that row's range. Matching on a key avoids relying on row numbers, which change when rows are inserted, deleted, or sorted.
What happens with formula columns?
Reads return the formatted values by default, so a formula result comes back as data. The API's value render option can return the formula itself 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 list, yes. Past tens of thousands of rows, or with several writers at once, move the data to a database and keep the sheet as a view.
How do I separate environments?
Use a separate spreadsheet per environment and a connection for each, 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.