Webhook in, no-email requests out
A custom webhook receives the lead as JSON. Requests without an email, or with an email that has no “@”, stop here.
People submit forms twice, refresh, or come back a week later. Without a check, each submission adds another row and pings your team again. This template looks up the lead’s email in your Google Sheet first. A new email adds one row and sends one Slack alert. An email that’s already in the sheet adds no row and sends no ping; the lead’s existing row gets the time and the latest message.
This page contains an affiliate link, marked “affiliate link”.
Tested in Make on 6 Oct 2026 with fictional data: a new lead adds a row (3 credits, 4 with Slack), a repeat email in different case with extra spaces updates the existing row (3 credits, no Slack), and a missing email stops at the filter (1 credit). The Slack step ran in our test, but against a channel that doesn’t exist, so posting to a real channel was not verified end to end. Send one fictional lead to your own test channel first.
One Make scenario with 6 modules (including the router). It runs in your own Make account with your own Google and Slack connections. Nothing runs through Flowpaja.
A custom webhook receives the lead as JSON. Requests without an email, or with an email that has no “@”, stop here.
Google Sheets › Search Rows checks column A of the Leads tab for the email, trimmed and lowercase.
The router reads Search Rows’ Total number of bundles. 0 means a new lead: Add a Row, then Slack › Send a Message. More than 0 means a repeat: Update a Row writes last_seen_at_utc and last_message, with no Slack message.
Three templates look similar. They solve different problems.
| You want… | Use |
|---|---|
| Google Form responses posted to Slack (no dedupe, scheduled) | Form responses to Slack |
Every webhook request saved once, deduped by a request_id (protection against retries) | Webhook to Sheets with duplicate check |
| Leads deduped by person (email), with one Slack alert per new lead, instantly | This template |
| Leads in HubSpot, with budget routing and error alerts | Lead Router ($19) |
One zip (v1.0, 6 Oct 2026).
Flowpaja_Lead_Capture_Sheets_Slack_Dedupe_FREE_blueprint.jsonThe Make scenario. No connections, IDs or tokens inside. You create your own webhook and connect your own Google and Slack accounts.Leads_sample.csvThe Leads tab with 8 columns and 5 fictional rows (example.invalid addresses).README.mdSetup in 7 steps, three curl test requests (plus a PowerShell tip), credits per request and limits.You need a Make.com account (the Free plan works), a Google account and a Slack workspace. No Make account yet? Create a free Make account (affiliate link).
Upload the CSV to Google Drive, open it as a Google Sheet and name the tab Leads. Keep the column order A–H.
Create a new scenario › ⋯ › Import Blueprint. In module 1 click Add, then Detect new values and send the first test request.
Choose the sheet and the Leads tab in modules 2 and 4, your Google connection in module 6, and a private test channel in module 5.
Click Run once, send the three test requests from the README and check the sheet and Slack. Then switch the scenario on.
Measured in our Make test.
A free, deliberately simple template.
Lead Router ($19) takes Google Form leads, looks up the exact email in HubSpot, creates or updates the contact, sends $10k+ budgets to a hot Slack channel and alerts you when a HubSpot step fails. It’s a one-time purchase with a 30-day money-back guarantee.
More free templates: Webhook to Sheets with duplicate check, Google Form responses to Slack Quote Reply Signal and Overdue Invoice Digest.
Questions: flowpaja.fi@gmail.com.
Tools we use for our builds: our tools page.
Make, Google, Google Sheets and Slack are trademarks of their owners. Flowpaja is independent and not affiliated with or endorsed by them. Flowpaja develops its templates with AI assistance.