Are you tired of dealing with Zapier issues when sending leads to Google Sheets? Well, you're in luck! In this article, we'll show you how to automate this process using Snitcher’s automation and a Google Sheets Webhook—no Zapier required.
Follow our step-by-step guide and save time by having contacts automatically revealed and transferred to your Google Sheets.
What You'll Need
Before we dive into the setup, make sure you have the following:
👉 A Google Sheet with the necessary columns (e.g., First Name, Last Name, Email, Job Title, LinkedIn URL)
👉 A Snitcher Account with automation access
👉 The Google Apps Script (we’ll paste this into the Google Sheet’s App Script Editor)
Copy the Google Sheet Template
Click on this shared template link.
Select “Make a Copy” to create your own version of the spreadsheet.
Keep this file open—we’ll need it for the next steps.
Set Up the Google Apps Script
Open the Script Editor:
In your copied Google Sheet, click on Extensions > Apps Script.
Delete any existing code in the script editor.
Paste and Configure the Code:
3. Paste the provided script into the editor.
function doPost(e) {
try {
// Parse the incoming JSON payload
var jsonData = JSON.parse(e.postData.contents);
// Open the spreadsheet by its ID
var ss = SpreadsheetApp.openById("Insert_sheet_ID_here");
var sheet = ss.getSheetByName("Sheet1");
// Safety check - make sure sheet exists
if (!sheet) {
return ContentService
.createTextOutput(JSON.stringify({ result: "error", message: "Sheet not found" }))
.setMimeType(ContentService.MimeType.JSON);
}
// Fetch existing emails from column H to check for duplicates
var emailRange = sheet.getRange("H:H").getValues();
var existingEmails = emailRange ? emailRange.flat().filter(String) : [];
// Safety check - make sure person exists
if (!jsonData.person) {
return ContentService
.createTextOutput(JSON.stringify({ result: "error", message: "No person found in payload" }))
.setMimeType(ContentService.MimeType.JSON);
}
var person = jsonData.person;
var org = jsonData.organisation || {};
// Check for duplicate email
if (existingEmails.includes(person.email)) {
Logger.log('Duplicate email found: ' + person.email + ', skipping entry.');
return ContentService
.createTextOutput(JSON.stringify({ result: "success", message: "Duplicate skipped" }))
.setMimeType(ContentService.MimeType.JSON);
}
// Build the row
var rowData = [
new Date(), // Timestamp
jsonData.event || "", // Webhook Event
person.first_name || "", // First Name
person.last_name || "", // Last Name
person.title || "", // Title
person.headline || "", // Headline
person.linkedin_url || "", // LinkedIn URL
person.email || "", // Email
"", // Location (not in real payload)
org.name || "", // Company Name
org.domain || "", // Company Domain
org.url || "", // Company URL
"", // Industry (not in real payload)
"", // Founded Year (not in real payload)
"", // Employee Range (not in real payload)
"", // Annual Revenue (not in real payload)
"", // Country (not in real payload)
"", // City (not in real payload)
"", // Postal Code (not in real payload)
"", // Street (not in real payload)
"", // Street Number (not in real payload)
"", // LinkedIn Company URL (not in real payload)
"", // Crunchbase (not in real payload)
"" // Twitter (not in real payload)
];
// Append the row to the sheet
sheet.appendRow(rowData);
// Return success
return ContentService
.createTextOutput(JSON.stringify({ result: "success", message: "Data added" }))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService
.createTextOutput(JSON.stringify({ result: "error", message: error.toString(), stack: error.stack }))
.setMimeType(ContentService.MimeType.JSON);
}
}
4. Locate “Insert_sheet_ID_here” in the code and replace it with your Google Sheet’s ID (found in the URL of your sheet).
5. Click Deploy > New Deployment.
Deploy the Web App
Select “Web app” as the deployment type.
Under Who has access, choose “Anyone”.
Click Deploy and authorize the script when prompted.
4. Once deployed, copy the Web App URL—this is your webhook endpoint.
Integrate Webhook with Snitcher
Go to Snitcher Settings:
Navigate to Snitcher > Settings > Integrations.
Click “Create Webhook”.
Then configure the webhook:
3. Name your webhook (e.g., Google Sheets Webhook).
4. Paste the Web App URL copied from the previous step.
5. Click Create Webhook.
What's Next?
Now we need to set up an automation in Snitcher to send the contacts to your Google Sheet via the webhook.
Setting up the Automation in Snitcher
In Snitcher, click on “Add an Automation”.
Set up the automation to trigger on “New Lead”.
Select the Segment you'd like to target.
Select “Reveal Contacts” (right at the bottom of the page).
💡 To learn more about how automations work, check out Sales use cases of Automations or copy the example below.
Then configure contact reveal:
5. Select the Buyer Persona you'd like to use.
6. Decide how many contacts you want to reveal per company (e.g., two).
7. Select the webhook you created as the external destination and save.
Test the Webhook
Head Back to Google Sheets:
Wait for a new lead to trigger the automation in Snitcher.
Check your Google Sheet to see if the contacts are being added as expected.
🚨 This test depends on the automation we just set up. It might take a while before any companies trigger the automation and send data to Google Sheets.
Enjoy the Automation!
That's it! You've successfully set up an automated system to reveal contacts and send them to Google Sheets using Snitcher and a webhook—without Zapier. If you have any questions, refer to the step-by-step guide above or use the template provided.
Feel free to reach out if you have any questions.
✌️ Team Snitcher








