Google Sheets
Trigger a WhatsApp message every time a new row is added (or edited) in a Google Sheet. Because Google Sheets doesn’t have a native webhook, this uses a short Apps Script that POSTs to Splashify on change.
Setup
1. Copy the Splashify webhook URL
https://apis.splashifypro.com/api/v1/webhooks/integrations/<your-user-id>/google_sheets2. Open Apps Script on your sheet
Sheet → Extensions → Apps Script. Paste:
function onEdit(e) {
// Only fire on edits in the main data sheet
if (e.range.getSheet().getName() !== 'Sheet1') return;
const row = e.range.getRow();
if (row === 1) return; // header row
const sheet = e.range.getSheet();
const values = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
// Map your columns — adjust to match your sheet
const payload = {
phone: String(values[0]),
first_name: String(values[1]),
amount: String(values[2]),
order_id: String(values[3]),
};
UrlFetchApp.fetch('PASTE_SPLASHIFY_URL_HERE', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
});
}Replace PASTE_SPLASHIFY_URL_HERE with the URL from step 1. Save the script.
3. Grant permissions
First time the script runs, Google prompts for permissions (UrlFetch + read sheet). Approve.
4. Configure in Splashify
- Phone Field →
phone - Variables →
first_name,amount,order_id(match what you sent in the Apps Script payload) - Enabled → Save.
5. Test
Add a row with a real phone number. The onEdit trigger fires within a second; check the Splashify logs.
Alternatives
- If you want new row events (not just edits), use
onChangeinstead and filtere.changeType === 'INSERT_ROW'. - For batched syncs (daily send based on a column value), use a time-based trigger in Apps Script instead.
Gotchas
- Apps Script triggers don’t fire on API / external edits — only on human edits in the UI. For API-driven updates, you need an installable trigger plus a time-based check.
- Rate limit. Apps Script limits UrlFetch to 20,000 calls/day (business), 2000/day (consumer). Past that, batch the notifications.
- Sheet changes are lossy under high-frequency writes. Don’t expect millisecond-precise ordering.