Google Sheets workflow action
The Google Sheets action reads from and writes to a Google Sheet directly inside a workflow — creating, looking up, updating, and deleting rows — without a third-party integration. For how triggers and actions fit together, see Workflows Overview.
Set up the Google Sheets action
Add the action from the workflow canvas, link your Google account, then pick the spreadsheet and worksheet the action should use.
Open Automations > Workflows and open the workflow.
Click + Add Action and select Google Sheets. It is listed under Send data actions in the Workflow actions catalog.
Link and authenticate the Google account if it is not linked yet.
Select the spreadsheet, then select the worksheet.
The basic settings appear in this order: Account, Drive, Spreadsheet, Worksheet, Refresh Headers, Columns. The first row of the worksheet is treated as the header row. You can include all columns or a specific range.
Knowing the exact Drive, Spreadsheet, and Worksheet names makes searching fast; without them, the dropdowns may require substantial scrolling.
Click Refresh Headers to fetch the latest header values from the sheet, then update the mapping to match the current sheet configuration. If headers are renamed in Google Sheets, refresh headers and reconfigure the affected workflows. A single workflow can use multiple Google Sheets — each action specifies its own spreadsheet.
Functions
The action offers nine functions. The function you pick determines what the action does when a contact reaches it.
Function | What it does |
|---|---|
Create Spreadsheet Row | Adds a new row at the end of the spreadsheet. New rows are always added after the highest-numbered row. |
Create Multiple Spreadsheet Row(s) | Adds one or more new rows at the end of the sheet. |
Lookup Spreadsheet Row | Finds the first row that matches a search. |
Lookup Multiple Spreadsheet Row(s) | Finds a matching row and returns a number of additional rows, set with the Row Count field. |
Update Specific Spreadsheet Row | Alters data in a numbered row. Requires the row number, often obtained through a Lookup action; the number can also come from the Custom Variable Picker for dynamic values. Leave the starting or ending column blank when that column should not be updated. |
Update Multiple Spreadsheet Row(s) | Alters data in multiple rows. |
Update Spreadsheet Row Using Lookup | Alters data in a row that matches a search. Requires a Lookup action placed before it; only Lookup actions added above it appear for selection, and only one can be selected at a time. Skipped if the Lookup returns no rows. |
Delete Specific Spreadsheet Row | Erases all data in a numbered row and leaves it blank. Clears contents but does not permanently remove the row. The row number can come from the Custom Variable Picker. |
Delete Spreadsheet Row Using Lookup | Erases all data in a row that matches a search. Requires a Lookup action placed before it; only Lookup actions added above it appear for selection. Clearing does not permanently remove the row. Skipped if the Lookup returns no rows. |
Lookup behavior
A Lookup action finds a row by matching column values, and its result feeds later actions and conditions.
Choose a worksheet: selects which worksheet the lookup searches.
Select Search Order: From the top of the Sheet returns the first matching row; From the bottom of the Sheet returns the most recent matching row.
Select a Column and Lookup Value to find the matching row: the first row is treated as headers.
Select an extra Column and Lookup Value: when an extra column is selected, both column values must match.
Create Spreadsheet row if it doesn't exist yet: when enabled, executes Create Spreadsheet Row if no matching row is found. This create is logged separately.
Lookup Multiple Spreadsheet Row(s) uses the same configuration plus a Row Count field that determines how many rows to extract.
Lookup results are saved as custom values for later workflow actions. Values are stored under their corresponding header names, and an index is generated automatically when the Lookup action is added. The index maps row data to custom variables and cannot be removed or edited after it is added; the row number is referenced as {{sheet.x.rowNumber}}, where x is the Lookup action's index.
If a Lookup finds no matching row, later Google Sheets actions that depend on that result are skipped, especially Update Spreadsheet Row Using Lookup and Delete Spreadsheet Row Using Lookup. Lookup results are also available to If/Else conditions, so a branch can choose between Create Spreadsheet Row and Update Spreadsheet Row Using Lookup based on whether a lookup result exists.
Update and delete rows
Update and delete actions target one specific row, either by number or by a lookup result.
Update Specific Spreadsheet Row needs the row number, which is usually obtained through a Lookup action or pulled dynamically from the Custom Variable Picker. Leave the starting or ending column blank when a particular column should not be updated.
Delete Specific Spreadsheet Row and Delete Spreadsheet Row Using Lookup erase all data in the row and leave it blank. Clearing does not permanently remove the row from the sheet.
Update and Delete actions operate on one row at a time. Lookup Multiple Spreadsheet Row(s) retrieves several rows, but Update and Delete actions do not automatically loop through multiple lookup results; to update or delete multiple rows, use custom logic such as code actions or an external automation tool with batch processing. For creating and updating multiple rows in one pass, see the workflow action for creating and updating multiple rows in Google Sheets.
Troubleshooting
Three issues cover most Google Sheets action failures.
Index mapping issues: refresh headers in the platform after the sheet changes, then reconfigure the affected workflows.
Authentication errors: reauthorize the Google account.
Spreadsheet not appearing: confirm the correct account is linked and that it has permission to access the spreadsheet.