Skip to main content
An Out-bound Webhook sends data from ChatSyncs to another application whenever a specific action happens — a subscriber submits a WhatsApp Flow, completes an Input Flow, clicks a Postback button, or shares their location. Instead of that data living only inside ChatSyncs, it’s automatically forwarded to Google Sheets, a CRM, your own server, Zapier, Make.com, Airtable, or any other endpoint that can receive an HTTP request.
Bot Manager module list with Out-bound Webhook highlighted and Create button in Out-bound Webhook Settings

Example: send Input Flow submissions to Google Sheets

Say you built a Customer Registration Form using an Input Flow or WhatsApp Flow with fields for Full Name, Phone Number, Business Type, Service Interested, and Demo Date. When a subscriber submits it, an Out-bound Webhook can push that submission straight into a Google Sheet — no manual copying, no server of your own required. The rest of this page walks through that exact setup, since it’s the most common use case.
User submits WhatsApp Flow or Input Flow

ChatSyncs Triggered

Out-bound Webhook

Google Apps Script

Google Sheet

Columns Created Automatically

Data Stored Automatically

Set up Google Sheets as the destination

1

Create a Google Sheet

Create a new, empty Google Sheet. You don’t need to add any columns — they’re created automatically later.
2

Open Apps Script

Inside the sheet, go to Extensions → Apps Script.
Google Sheets Extensions menu with Apps Script highlighted
3

Paste the script

Delete any existing code and paste a doPost(e) function that reads the incoming webhook payload and appends it as a row — creating header columns automatically the first time each field name is seen:
function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = JSON.parse(e.postData.contents);
  var headers = Object.keys(data);

  if (sheet.getLastRow() == 0) {
    sheet.appendRow(headers);
  }

  var values = headers.map(function(key) {
    return data[key];
  });
  sheet.appendRow(values);

  return ContentService
    .createTextOutput("Success")
    .setMimeType(ContentService.MimeType.TEXT);
}
Apps Script Code.gs editor with a doPost script and the Deploy button highlighted
4

Deploy as a Web App

Click Deploy → New deployment, set Select type to Web app, Execute as to Me (your Google account), and Who has access to Anyone (or Anyone with the link) — not Only myself, or ChatSyncs won’t be able to reach it. Click Deploy and authorize the requested Google permissions.
Apps Script New deployment dialog with Web app, Execute as, and Who has access fields highlighted
5

Copy the Web App URL

Google gives you a URL like https://script.google.com/macros/s/XXXXXXXXXXXX/exec. Copy it — this is your webhook URL.
Apps Script deployment success dialog showing the Web app URL and a Copy button

Create the Out-bound Webhook in ChatSyncs

Go to Bot Manager → Out-bound Webhook → Create, then fill in:
  • Webhook Name — e.g. Customer Registration Data.
  • Out-bound Webhook URL — paste the Web App URL you copied above.
Out-bound Webhook form with Webhook Name, Out-bound Webhook URL, trigger toggles, and data field toggles

Select the trigger

Choose which action fires the webhook: Postback, User Input Flow, or Location.
Out-bound Webhook configured with Postback trigger, a Get Balance postback selected, and several data fields enabled
For User Input Flow, also pick which specific flow(s) should trigger it (e.g. Appointment Booking, Customer Registration Form):
Out-bound Webhook configured with User Input Flow trigger, a Select Input Flows dropdown showing Appointment Booking and Customer Registration Form, and Input Flow Data toggled on

Select fields to send

Enable whichever fields you need: Subscriber ID, Subscriber Name, Phone Number, Date of Birth, Location, Labels, Postback ID, Input Flow Data.
Turn on Input Flow Data. Without it, the subscriber’s actual form answers won’t be sent — only metadata like the subscriber ID or name.
Click Save — the webhook is now active.

How automatic columns work

Whenever a webhook payload arrives, the Apps Script reads its JSON keys and adds any column that doesn’t already exist — you never edit the sheet by hand. For example, a payload from a Postback trigger like:
{
  "first_name": "Rahul",
  "chat_id": "919959623255",
  "postbackid": "73vwwaEqCBJt...",
  "reply_message_id": "wamid.HBgMOTE5..."
}
produces a sheet with first_name, chat_id, postbackid, and reply_message_id as columns, populated automatically — no manual setup per field:
Google Sheet with columns first_name, chat_id, postbackid, reply_message_id, wa_message_id, and whatsapp_bot_username auto-populated from a webhook payload
If you add a new field later (e.g. budget), the next submission that includes it automatically gets its own column — no need to edit the sheet first.

Real business examples

Use caseFields collectedDestination
Lead CollectionName, Phone, Business TypeGoogle Sheets
Appointment BookingName, Date, TimeGoogle Sheets
Property EnquiryName, Phone, Property Type, Budget, LocationGoogle Sheets
AI Automation AgencyName, Company, Service Required, Monthly BudgetGoogle Sheets
This is the simplest and most common way to connect a ChatSyncs WhatsApp Flow or Input Flow directly to Google Sheets without running your own server — the same approach works for any endpoint that accepts an HTTP POST, including a CRM, Zapier, Make.com, or Airtable.

Manage Out-bound Webhooks

Saved webhooks appear in the Out-bound Webhook list with three actions:
Out-bound Webhook Settings list showing View, Edit, and Delete action icons
  • View Report — see webhook logs and activity, and check whether data was sent successfully.
  • Edit — update the webhook URL, triggers, or selected data fields at any time.
  • Delete — permanently remove the webhook; ChatSyncs stops sending it data immediately.
Use View Report to confirm your Google Sheet, CRM, or server is actually receiving the data — don’t assume it’s working just because the webhook saved successfully.

Frequently asked

Deploy a Google Apps Script doPost web app on the target sheet, copy its URL, then create an Out-bound Webhook in Bot Manager with that URL, trigger it on User Input Flow (or Postback / Location), and make sure Input Flow Data is turned on.
Check three things: the Apps Script deployment’s Who has access is set to Anyone (not “Only myself”), the Out-bound Webhook URL in ChatSyncs exactly matches the deployed Web App URL, and the right trigger/fields are enabled. Use View Report on the webhook to see whether ChatSyncs is sending anything at all.
The Input Flow Data field toggle is probably off. Without it, the webhook still fires and sends subscriber metadata, but not the actual question answers.
No — the Apps Script reads the JSON keys in each payload and adds any missing column automatically, including for new fields you start sending later.
Yes — an Out-bound Webhook sends a plain HTTP request, so any endpoint that can receive one works: a CRM, your own server, Zapier, Make.com, or Airtable.
  • “Only myself” access blocks ChatSyncs entirely — the Apps Script deployment’s Who has access must be Anyone or Anyone with the link.
  • Input Flow Data must be explicitly enabled — it’s the one field that carries the actual form answers; everything else is just subscriber metadata.
  • The webhook URL must match the live deployment — redeploying a new version in Apps Script can change the URL, which then needs updating in ChatSyncs too.