There is no built-in Google Sheets connector. You have three ways to get missed calls into a sheet:
- Download the CSV and import it. Free with no webhook set. See CSV Export.
- Ask us to set it up: we connect a sheet for your account on request. Tell us on the Missed Call Service page.
- Build it yourself with Google Apps Script, as below. It takes about 10 minutes.
1. Prepare the sheet#
Create a Google Sheet with these headers in row 1:
received_at | from | to | number_name | call_sid
2. Add the script#
In the sheet choose Extensions > Apps Script, replace the code with this, and save:
function doPost(e) {
var event = JSON.parse(e.postData.contents);
if (event.event !== "call.missed") {
return ContentService.createTextOutput("ignored");
}
var d = event.data;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
// Skip retries and replays of an event already written.
var sids = sheet.getRange("E:E").getValues().flat();
if (sids.indexOf(d.call_sid) === -1) {
sheet.appendRow([event.timestamp, d.from, d.to, d.phone_number_name, d.call_sid]);
}
return ContentService.createTextOutput("ok");
}
3. Deploy it as a web app#
- Choose Deploy > New deployment, type Web app.
- Execute as Me; who has access: Anyone.
- Deploy, authorise, and copy the web app URL (
https://script.google.com/macros/s/.../exec).
4. Point the webhook at it#
In missedcall.edesy.in open Webhook, paste the web app URL (the one ending in /exec) and save. Click Send test: it should report delivered. Then give your number a missed call and check that a row appears. Read the limits below before using this for a live campaign.
Limits of the DIY route#
- Apps Script cannot read request headers, so it cannot check
X-Edesy-Signature. Keep the web app URL private; anyone with it can add rows. - Redirects. An Apps Script web app runs your
doPostand then answers with a redirect toscript.googleusercontent.com. Our webhook follows that one redirect, so deliveries show as delivered. Use thehttps://script.google.com/macros/s/.../execURL itself: a shortened or custom-domain link to it redirects elsewhere first, and that redirect is not followed. Thecall_sidcheck above keeps retries and replays from adding duplicate rows. - Want the signature checked too? Put a small relay of your own in front of the sheet (see Connect Your CRM) or ask us to set it up.
- Apps Script has daily quotas. For large campaigns, use the CSV export or a proper database.
timestampis UTC. Format the column in the sheet if you want IST.