Free Make.com template · Webhook → Google Sheets → Slack

One row and one Slack alert per new lead, never two

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”.

Download the free Lead Capture ZIP v1.0 · about 6 KB zip · no sign-up needed · blueprint, sample sheet (fictional data), setup and test guide
How setup works

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.

Lead capture to Google Sheets and Slack: a new email adds one row and one Slack alert, a repeat email updates its row with no second ping
Fictional example: the second request with the same email adds no row and no Slack alert.

What it does

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.

1 · Receive

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.

2 · Look up

Checks column A

Google Sheets › Search Rows checks column A of the Leads tab for the email, trimmed and lowercase.

3 · Route

New or repeat

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.

Which free template do you need?

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, instantlyThis template
Leads in HubSpot, with budget routing and error alertsLead Router ($19)

What’s in the download

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.

Setup in about 15 minutes

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).

Copy the sheet

Upload the CSV to Google Drive, open it as a Google Sheet and name the tab Leads. Keep the column order A–H.

Import and add a webhook

Create a new scenario › ⋯ › Import Blueprint. In module 1 click Add, then Detect new values and send the first test request.

Connect Google and Slack

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.

Test, then switch on

Click Run once, send the three test requests from the README and check the sheet and Slack. Then switch the scenario on.

Credits

Measured in our Make test.

  • New lead: 4 credits (webhook, Search Rows, Add a Row, Slack). The router uses none.
  • Repeat: 3 credits (webhook, Search Rows, Update a Row), or 2 if you delete the update step.
  • No email: 1 credit (the webhook only).
  • On the Free plan’s 1,000 credits a month, that is roughly 250 new leads, before retries and any other scenarios. Check your actual usage in Scenario history.

Limits

A free, deliberately simple template.

  • Dedupe key is the lowercase, trimmed email. Plus-aliases and Gmail dots count as different people. Keep column A lowercase.
  • Repeat leads don’t trigger Slack. Column H keeps only their latest message.
  • Form tools such as Tally or Typeform send their own payload formats. Map their email, name and message fields once after importing.
  • Sheets and Slack aren’t one transaction. If a run fails at Slack after the row was added, Make stores it as an incomplete execution (the blueprint turns “Store incomplete executions” on, and it worked on Make’s Free plan in our test). Retry it from Incomplete executions.
  • A failed run pauses the queue. Sequential processing is on, so while an incomplete execution is waiting, new leads wait in the webhook queue. Nothing is lost, but nothing is processed either. Retry or delete the incomplete execution and the waiting leads run in order. Check Incomplete executions if new leads stop appearing.
  • It sends no email, doesn’t update a CRM and doesn’t verify addresses or consent.

Ready for a CRM?

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.

FAQ

What counts as a duplicate?
The same email after trimming spaces and lowercasing, already present in column A of the Leads tab.
Does a returning lead get lost?
No. Their existing row gets last_seen_at_utc and their latest message in last_message, but your team isn't pinged again.
Can I use it with Make's Free plan?
Yes. It is one active scenario and uses 4 credits per new lead, 3 per repeat and 1 per request without an email. The Free plan includes 1,000 credits a month and 2 active scenarios.
Does it work with Tally or Typeform?
Yes, once you map their fields. Their webhooks send a different JSON shape than the example, so map email, name and message once after importing.
What happens if the Slack step fails?
Make stores the run as an incomplete execution, and the row is already written, so a retry resumes at Slack without adding a second row. Because sequential processing is on, new leads wait in the webhook queue until you retry or delete that incomplete execution. Check Incomplete executions if new leads stop appearing.
Is my data sent to Flowpaja?
No. The scenario runs in your own Make account with your own webhook, Google and Slack connections. The download contains no connections, IDs or tokens.

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.