🤖 Automations & Chatbots

Using a Google Sheet as your automation's database

The cheapest way to give a bot access to data you already keep, with no developer and no database.

The Google Sheets step lets an automation add a row, update a row, or find a row and copy its cells onto the customer's contact record — turning a spreadsheet you already maintain into the memory behind your WhatsApp flows. It branches two ways, success and failure, and needs no code.

For most small stores this is the practical alternative to building an integration. If the answer to a customer's question is already in a spreadsheet somewhere, a flow can read it.

The three actions

ActionWhat it doesYou configureTypical use
AppendAdds a new row at the bottomWhich column gets which valueWaitlists, return requests, lead capture
FindLocates the first matching row and saves its cells onto the contactMatch column, match value, which cells to save whereOrder status lookup
UpdateEdits the first matching rowMatch column and value, plus the cells to changeMarking a return as received

Connecting a sheet

  1. Add a Google Sheets step to your flow.
  2. Sign in with Google inside the step and pick the sheet from the file picker.
  3. Choose the worksheet tab.
  4. Map columns by their header name, not their letter.

No sheet is ever pre-filled for you, including in ready-made blueprints — we cannot know which of your files is the right one, and guessing would mean a flow silently writing to the wrong place.

Column headers are the contract. The mapping matches on the header text in row 1. Rename a column in the sheet and the step stops finding it — without an error, because from its point of view the column simply is not there. If a flow starts failing for no reason, check whether someone tidied the spreadsheet.

A lookup flow, end to end

The most valuable use is answering "where is my order?" from a sheet your fulfilment team already updates.

Order status from a spreadsheet

TriggerCustomer messages you
ConditionMessage mentions an order
Ask"What's your order number?"Free text · saved to order_number
Google SheetsFind the row where Order = their numberCopies Status and Tracking onto the contact
success
Send the status and tracking link

Reads back the saved cells as variables.

failure
Say a person is checking
Assign the chat

Fires when no row matches — which happens constantly.

Install this lookup flow

You'll need three contact fields and your orders sheet connected.

Add this automation to my account It installs as a draft. Nothing is switched on and no customer is messaged until you press Publish.

Always wire the failure branch

The failure port fires whenever there is no matching row or the sheet cannot be reached — a typo in the order number, a row not yet added, a revoked Google connection. In a lookup flow this is not an edge case; it is a routine outcome.

A flow that leaves it unwired stops dead, and the customer is left staring at a conversation that went silent after they answered a question. Wire it to a message and a handover, every time.

Saving values so you can use them later

A find action copies cells onto the customer's contact record, which means they are available as variables in every later step. The one prerequisite catches people: the contact field must already exist under Settings → Contact Attributes, or the save silently does nothing and your message renders a blank. That mechanic is covered in saving customer answers to contact fields.

What a sheet is good and bad at

Good forBad for
Data a human already maintains by handAnything changing second by second
A few thousand rowsHundreds of thousands of rows
Capturing requests for your team to workBeing the single source of truth for orders
Getting a flow live this afternoonA permanent integration you will scale on

The honest framing: a sheet is the right answer when the alternative is not building the flow at all. If you outgrow it, the Call External API step does the same job against your real system.

Capturing rather than reading

The append action is the other half, and it is how you build lists a flow cannot otherwise create. A back-in-stock waitlist is the clearest example: nothing in WhatsApp monitors your stock, so no automation can tell a customer their item has returned. What a flow can do is capture who asked, into a sheet you later send as a broadcast audience.

That is a genuinely different promise from the one competitors make, and it is the accurate one. The mechanics are in back-in-stock alerts on WhatsApp, and sending the sheet is covered in broadcasting from a Google Sheet.

Two-way, not one-way

The same Google connection also works in the other direction — sending WhatsApp messages straight from a spreadsheet, without building a flow at all. If your team lives in Sheets, that is often the faster route: sending WhatsApp from Google Sheets.

Cost and timing

A lookup happens inside a live conversation, so every message around it is free text inside an open window — free, per Meta's pricing rules. The lookup itself adds a moment of delay, which on WhatsApp reads as natural rather than slow.

One thing worth designing for: if your sheet is large or Google is slow, the customer waits. Sending a short "let me check that" before the lookup step makes the pause feel intentional.

A checklist before you publish

  1. Column headers in the sheet match the mapping exactly.
  2. Every contact field you save into exists under Settings → Contact Attributes.
  3. The failure branch goes somewhere useful.
  4. The Google account you connected is one that will still exist next year — not a personal account belonging to someone who might leave.
  5. Tested in the simulator with both a matching and a non-matching value.

Point four is not paranoia. A flow connected through a departing colleague's Google account fails the day their access is revoked, and the failure looks like a bug rather than an access problem.

Frequently asked questions

Can a WhatsApp automation read from a Google Sheet?

Yes. The Google Sheets step's 'find' action locates the first row matching a value and copies its cells onto the customer's contact record, where later steps read them as variables.

Why did my Google Sheets step stop working?

Most often because a column header was renamed. The mapping matches on header text in row 1, so a renamed column simply is not found — with no error raised.

Can a flow tell customers when an item is back in stock?

Not automatically — nothing monitors stock levels. A flow can append interested customers to a sheet, which you then send as a broadcast audience when the stock lands.

Do I have to wire the failure branch?

You should. It fires whenever no row matches or the sheet is unreachable, which in a lookup flow is routine. Unwired, the flow stops dead and the customer is left in silence.