On this page
Email notifications are easy to miss. If your team lives in Slack, posting each new lead, support request or job application to a channel means someone sees it — and can claim it — within minutes.
This guide shows three ways to get HTML form submissions into Slack.
How Slack receives messages
The simplest way to post into Slack from outside is an incoming webhook: a Slack URL that posts a message to one channel when you send it JSON like this:
{ "text": "New enquiry from Jane Smith" }
To create one, make a Slack app in your workspace, enable Incoming Webhooks, and add a webhook for the channel you want (for example #leads). You'll get a URL starting with https://hooks.slack.com/services/…. Keep it private — anyone with the URL can post to your channel.
Because Slack expects its own message format, you need something in between that turns a form submission into a Slack message. Here are three options.
Option 1: n8n (built into Formclick)
Formclick has a native n8n integration, which makes this a small, visual workflow:
- In n8n, create a workflow starting with a Webhook trigger. Copy its production URL.
- In the Formclick dashboard, open your form's Integrations, choose n8n and paste the URL. You can protect it with header, basic or JWT authentication.
- In n8n, add a Slack node (Send Message), pick your channel, and build the message from the submission fields.
- Activate the workflow and send a test submission.
n8n can be self-hosted for free or used as a cloud service, and you can add steps — for example, only post to Slack when the budget is high, and send everything else to a spreadsheet.
Option 2: Zapier or Make (via webhook)
- In Zapier, create a Zap with Webhooks by Zapier → Catch Hook (or a Custom webhook in Make). Copy the URL.
- In Formclick, add it under your form's Webhooks (paid plans).
- Add a Slack → Send Channel Message action and map the fields.
Step-by-step: How to Connect HTML Forms to Zapier.
Option 3: A small serverless function
If you'd rather not use an automation tool, a few lines of code can receive Formclick's webhook and forward it to Slack:
// e.g. a Cloudflare Worker, Vercel Function or Netlify Function
export default {
async fetch(request, env) {
if (request.method !== 'POST') return new Response('Method not allowed', { status: 405 });
const submission = await request.json(); // { submissionId, formId, data, fromName, fromEmail, submittedAt }
const d = submission.data || {};
await fetch(env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
text: 'New form submission from ' + (d.name || 'someone'),
blocks: [
{ type: 'header', text: { type: 'plain_text', text: '📬 New enquiry' } },
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Name*\n' + (d.name || '—') },
{ type: 'mrkdwn', text: '*Email*\n' + (d.email || '—') },
],
},
{ type: 'section', text: { type: 'mrkdwn', text: '*Message*\n' + String(d.message || '').slice(0, 2500) } },
],
}),
});
return new Response('ok');
},
};
Point a Formclick webhook at your function's URL. Formclick lets you add custom headers to webhooks, so you can send a shared secret header and check it in the function before posting.
Making Slack notifications useful
- Put the essentials first: who, what they want, how to reach them.
- Keep long messages short — truncate and link to the full submission in your dashboard.
- Use one channel per form type —
#leads,#support,#careers— so the right people see the right things. - Add a reaction convention — 👀 when someone's looking, ✅ when handled — so nothing falls through the cracks.
- Don't post sensitive data (ID numbers, health details) into a busy channel.
Prefer Discord?
Formclick has a native Discord integration — paste a Discord channel webhook URL in your form's integrations and every submission is posted automatically, no automation tool needed. See all options on the integrations page.
Whatever you choose, Formclick still emails each submission and keeps it in your dashboard, so a misconfigured Slack workflow never means a lost message.



