Webhook Workflow sends a WhatsApp template message automatically whenever an external system — like a Google Sheet — calls a webhook URL. Use this when a customer wants a WhatsApp message (order update, shipping notice, reminder) triggered by a new or edited row in a spreadsheet, or any third-party system that can call a webhook.
WhatsApp → Webhook Workflow sends a WhatsApp template message whenever data arrives from an
outside system through a webhook call — most commonly a new or edited row in Google Sheets.
Each workflow is tied to one WhatsApp Account and one Message Template, and every field
in the incoming data can fill in that template’s variables.
Before creating a workflow, the message template it will send needs Template Variables —
placeholders that get filled in from the webhook data.
1
Open Message Template settings
In Chatbot Manager, open Message Template, and scroll down to Template Variables.
2
Create a variable
Click Create and name it — no spaces allowed, e.g. deliverydate.
3
Use the variable inside a template
Create or edit a message template and insert your variables into the body using
#!variablename!#, alongside built-in Custom Fields and Variables like Name.
For example, a template body of:
Hi, Thanks for shopping with us! Here are the details of your order:Product: [productlist]Total: #!totalprice!#Delivery date: #!deliverydate!#
4
Sync the template
Click Sync Template so its approval status updates from Meta.
The template must show Approved before a workflow can send it.
In WhatsApp → Webhook Workflow, fill in Workflow Details:
Workflow Name — e.g. order update
WhatsApp Account — which connected number sends the message
Message Template — the approved template to send, e.g. orderdetails
Click Create Workflow. This workflow’s purpose, as ChatSyncs describes it: “Send WhatsApp
template message based on data received from 3rd party webhook call.”
ChatSyncs generates a unique Webhook Callback URL for this workflow, e.g.
https://platform.chatsyncs.com/webhook/whatsapp-workflow/xxxxxxx. Copy it — you’ll paste it
into whatever system will call it (a Google Sheet’s Apps Script, in this example). Each workflow
has its own URL, so a test submission or record sent to it only affects this one workflow.
Before touching Apps Script, set up your sheet’s header row to match the fields your template
needs — e.g. phone number, productlist, price. Each column becomes a field ChatSyncs can
map to a template variable, using either [fieldname] (custom field) or #fieldname#
(template variable) syntax depending on how it’s referenced in your template.
The phone number column is mandatory. Without it, ChatSyncs has no way to know which
WhatsApp number to send the message to — every other column is optional and only needed if your
template actually uses it.
Click Google Sheet Trigger Instruction for the exact script to paste in:
1
Open Apps Script
In your Google Sheet, go to Extensions → Apps Script.
2
Paste the code
Paste in the onChange function ChatSyncs gives you in the instructions above — it already
includes a sendToWebhook function wired to your workflow’s webhook URL:
It detects an inserted row (INSERT_ROW) or an edited row (EDIT) and sends that row’s data
to the webhook URL.
Press Ctrl+S to save the script before continuing. If you skip this, the trigger you add
next won’t run the code you just pasted.
3
Add a trigger
Click the Triggers (clock) icon, then Add Trigger:
Set Choose which function to run to onChange, Select event source to
From spreadsheet, and Select event type to On change. Save.
The onChange trigger fires automatically and calls your workflow’s webhook URL. Back in
ChatSyncs, click Capture Webhook Response so the workflow detects the incoming fields from
that test row:
The first time you do this, ChatSyncs shows a variable assigning / mapping step — match each
detected sheet field (phone number, productlist, price, …) to the corresponding template
variable you created earlier. Once mapped and saved, every future row sent through this webhook
fills in the template automatically using that same mapping.
The workflow list shows Sent, Delivered, Opened, Failed, Skipped, and
Unreached counts for every workflow. Click Workflow Report for the full call-by-call log:
Each row shows the Phone Number the message went to, its Status (e.g. Completed),
Response (e.g. Success), Triggered at / Scheduled at timestamps, and the raw
Response and Webhook Data payloads — useful for confirming exactly what data a specific
row sent.
How do I send a WhatsApp message automatically when a Google Sheet row is added?
Create a message template with the variables you need, create a Webhook Workflow pointing at
that template, copy its webhook URL into a Google Apps Script onChange trigger on your
sheet (via Google Sheet Trigger Instruction), then test with Capture Webhook Response.
Why isn't my workflow detecting the columns from my sheet?
Click Capture Webhook Response after triggering a fresh test row — this is how ChatSyncs
detects which fields are coming in. If it still doesn’t show your columns, check that the
Apps Script trigger is active and that the sheet’s header row matches what you expect.
Can one workflow send to many different customers?
Yes — every row that triggers the webhook (a new row, or an edit) runs the workflow again for
that row’s phone number.
Where do I check if a specific message actually sent?
Open Webhook Workflow → Workflow Report and search by phone number — it shows the
Status, Response, and the exact Webhook Data received for that send.
Does this only work with Google Sheets?
Google Sheets (via Apps Script) is the common case, but the webhook URL just needs an HTTP
call with the right data — any third-party system capable of calling a webhook can trigger
the same workflow.