Build a Serverless Webhook Endpoint (doPost) in Apps Script
Turns a Google Sheet into an instant, free serverless webhook endpoint that receives JSON payloads from Stripe, GitHub, or Shopify and logs records in real time.
https://www.googleapis.com/auth/spreadsheetsfunction doPost(e) {
try {
const postData = JSON.parse(e.postData.contents);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Webhooks');
const timestamp = new Date();
const eventType = postData.event || 'unknown';
const payloadString = JSON.stringify(postData);
sheet.appendRow([timestamp, eventType, payloadString]);
return ContentService.createTextOutput(JSON.stringify({ status: 'success' }))
.setMimeType(ContentService.MimeType.JSON);
} catch (err) {
return ContentService.createTextOutput(JSON.stringify({ status: 'error', message: err.message }))
.setMimeType(ContentService.MimeType.JSON);
}
}Line-by-Line Code Explanation
Step-by-Step Setup & Deployment
- In Apps Script, click Deploy > New Deployment > Select type: Web App.
- Set "Execute as: Me" and "Who has access: Anyone".
- Copy the generated Web App URL and paste it as your webhook endpoint in Stripe or GitHub.
Best Practices for Quota & Rate Limit Management
When deploying this automation in Google Workspace, adhere to these operational principles:
- Batch Reads & Writes: Never execute
getValue()orsetValue()inside loops. Read ranges into memory in 1 call, process arrays in V8 memory, and commit changes with a singlesetValues()call. - Execution Timeouts: Apps Script terminates scripts exceeding 6 minutes. For multi-thousand row datasets, implement batch pagination with resume timestamps stored in
PropertiesService. - OAuth Permissions: Scope your manifest (
appsscript.json) narrowly to prevent security prompts from alarming external team members.
Frequently Asked Questions
Is Google Apps Script completely free to use?
Yes. Google Apps Script is built into all free Google accounts and Google Workspace editions. There are no server fees or subscription costs for running scripts within daily quotas.
Can I run this script on an automated schedule without keeping my computer on?
Yes. Time-driven triggers execute on Google's cloud infrastructure. Your script will run reliably even when your computer is closed or offline.
More API & Webhooks Automation Snippets
Post Instant Slack / Google Chat Webhook Alerts from Sheets
Sends real-time formatted notifications into Slack or Google Chat spaces whenever critical spreadsheet records (e.g. VIP lead, budget threshold) are updated.
API & WebhooksFetch External REST API JSON Data Directly into Google Sheets
Pulls data from any public or authenticated REST API (weather, currency, stock prices, or internal microservices) and populates spreadsheet rows on a schedule.
API & WebhooksRun BigQuery SQL and Export Results Directly to Google Sheets
Executes an asynchronous SQL query on a Google Cloud BigQuery dataset, waits for query completion, and streams analytical results directly into a Google Sheet tab.