How to Connect Slack Forms to Form2Lead
Step-by-step developer instructions for Slack applications.
How do you send Slack form submissions to Form2Lead?
Enable your form’s HMAC-signed outbound webhook and forward it through a Slack incoming webhook, Zapier, Make, n8n, or a small worker that maps the JSON payload to Slack’s message format. Each form has its own webhook URL, so the contact form can post to #sales while the support form posts to #support.
Why use Form2Lead with Slack?
Form2Lead has no built-in Slack alert, so the reliable path is a webhook bridge: Form2Lead POSTs signed JSON for every valid submission, and an intermediary — a Slack incoming webhook plus a small transform in Zapier, Make, n8n, or your own worker — posts it to the channel within seconds. Verifying the HMAC signature in the intermediary confirms each POST genuinely came from Form2Lead before it reaches your team, and automatic retries with backoff cover transient Slack outages.
Prerequisites
- ✔A Slack workspace where you can create an incoming webhook
- ✔A Form2Lead form with webhooks enabled
- ✔A Zapier / Make / n8n account or a small worker (for the transform step)
Step-by-Step Integration Guide
01. Create a Slack Incoming Webhook
In Slack, create an app at api.slack.com/apps, enable Incoming Webhooks, and add one for your target channel. Copy the webhook URL and treat it as a secret — anyone holding it can post to your channel.
02. Point Your Form2Lead Webhook at the Bridge
In your form’s settings, add the webhook URL of your intermediary (the Zapier / Make / n8n catch hook, or your own worker that forwards to the Slack URL). Form2Lead signs every payload with HMAC and retries delivery automatically with backoff.
03. Map the Payload to Slack’s Format
No-code: use a webhook trigger, map the name / email / message fields, and add a Slack “send channel message” action. Code-first: put this minimal worker between Form2Lead and Slack — and verify the HMAC signature header before trusting the body.
export default {
async fetch(request, env) {
if (request.method !== 'POST') return new Response('ok');
// Verify Form2Lead's HMAC signature header before trusting the body.
const submission = JSON.parse(await request.text());
const text = 'New lead: ' + (submission.name || 'anonymous') +
' (' + (submission.email || 'no email') + ') — ' +
(submission.message || '');
await fetch(env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text }),
});
return new Response('forwarded');
},
};04. Route Each Form to Its Own Channel
Because webhook URLs are configured per form, give the contact form a transform that posts to #sales and the support form one that posts to #support. Submit a test lead per form and confirm both the Slack message and the dashboard entry.
Slack Integration FAQ
Does Form2Lead have a native Slack integration?
No. Form2Lead sends HMAC-signed webhooks with automatic retries; a small transform step in Zapier, Make, n8n, or your own worker bridges the payload to Slack’s incoming webhook format.
Can I send form submissions to Slack without writing code?
Yes. In Zapier, Make, or n8n: webhook trigger → map the JSON fields → Slack “send channel message” action. The message lands within seconds of each submission.
How do I stop fake messages from reaching my Slack channel?
Verify the HMAC signature in your intermediary and lock the form’s Allowed Domains so only your site can submit. Upstream, the invisible honeypot and IP rate limiting block automated submissions before the webhook fires.
Can different forms post to different Slack channels?
Yes — each form has its own webhook URL, so route the contact form to #sales and the support form to #support with separate transforms.