How to connect an HTML form to Slack, Discord, or Telegram
Getting instant notifications when someone submits your form is essential for sales teams, support desks, and anyone who needs to respond quickly. Slack, Discord, and Telegram all support incoming webhooks that make this possible.
This guide covers three approaches: native integrations through a form backend, direct webhook forwarding, and building a custom solution.
Approach 1: Native integration (recommended)
Form backend services like FormsFort offer built-in Slack, Discord, and Telegram integrations. No webhooks, no middleware, no code.
Slack integration
- In the FormsFort dashboard, open your form settings
- Navigate to the Notifications section
- Select Slack
- Authorize the FormsFort Slack app
- Choose the channel to receive notifications
- Save
Each form submission appears as a formatted message in the channel:
New form submissionName: Ada LovelaceEmail: [email protected]Message: Need help with integration setupSubmitted: 2026-05-28 at 2:32 PMDiscord integration
- Open your form settings in the FormsFort dashboard
- Navigate to Notifications
- Select Discord
- Paste your Discord webhook URL (create one in Server Settings > Integrations > Webhooks)
- Save
Telegram integration
- Create a Telegram bot via @BotFather
- Add the bot to your group or start a direct chat
- Get the chat ID (use @userinfobot or the Telegram API)
- In FormsFort, enter the bot token and chat ID
- Save
Approach 2: Webhook forwarding
If your form backend supports webhooks but not native integrations, forward submissions to messaging platform webhooks directly.
Slack incoming webhook
- Create a Slack app at api.slack.com
- Enable Incoming Webhooks
- Create a webhook URL for your channel
- Configure your form backend to POST to the webhook URL
The webhook expects a JSON payload:
{ "text": "New form submission", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*New form submission*\n*Name:* Ada Lovelace\n*Email:* [email protected]\n*Message:* Need help with integration" } } ]}Discord webhook
- Go to Server Settings > Integrations > Webhooks
- Create a new webhook for your channel
- Copy the webhook URL
- Configure your form backend to POST to the URL
Discord webhooks accept this JSON format:
{ "content": "New form submission", "embeds": [ { "title": "New Contact Form Submission", "fields": [ { "name": "Name", "value": "Ada Lovelace", "inline": true }, { "name": "Message", "value": "Need help with integration" } ], "color": 3066993 } ]}Telegram bot API
Send messages via the Telegram Bot API:
POST https://api.telegram.org/bot<TOKEN>/sendMessage{ "chat_id": "-1001234567890", "text": "New form submission\nName: Ada Lovelace\nEmail: [email protected]\nMessage: Need help"}Approach 3: Custom serverless function
If you need full control over the notification format, create a serverless function that receives the form webhook and forwards to messaging platforms.
// Example: Cloudflare Worker or Vercel Edge Functionexport default { async fetch(request) { const data = await request.formData(); const name = data.get("name"); const email = data.get("email"); const message = data.get("message");
const slackWebhook = "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"; await fetch(slackWebhook, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ text: `*New submission*\n*From:* ${name} (${email})\n*Message:* ${message}`, }), });
return new Response("OK"); },};Configure your form backend to forward submissions to this function’s URL.
Formatting notifications
Include submission metadata
Add context to notifications:
- Timestamp
- Page URL where the form was submitted
- User agent or device type
- Form identifier
Use conditional formatting
Highlight high-priority submissions:
🔴 URGENT: Enterprise lead from [email protected] Company: BigCorp (500+ employees) Budget: $50,000+ Message: Need immediate quoteThread related submissions
In Slack, use message threading to group submissions from the same email address or session.
Filtering and routing
Route by form field value
Send submissions to different channels based on field values:
| Field value | Destination |
|---|---|
| Topic: Sales | #sales-leads |
| Topic: Support | #support-tickets |
| Topic: Partnership | #business-dev |
Filter spam before notifying
Only send notifications for submissions that pass spam checks. This prevents your team channels from being flooded with bot submissions.
Summary
Connect HTML forms to Slack, Discord, or Telegram using native integrations in your form backend service for the simplest setup. For custom formatting, use webhook forwarding to post directly to platform webhook URLs. For full control, create a serverless function that receives form webhooks and forwards formatted messages to any platform. All approaches deliver notifications within seconds of submission.
Frequently asked questions
Can I send HTML form submissions to Slack?
Yes. Use a form backend service that supports native Slack integration or webhook forwarding. Each form submission is posted as a message in your chosen Slack channel.
How do I send form data to a Discord webhook?
Create an incoming webhook in your Discord server settings, then configure your form backend to forward submissions to that webhook URL. The message appears in the designated channel.
Can I send form submissions to a Telegram group?
Yes. Create a Telegram bot, add it to your group, and configure your form backend with the bot token and chat ID. Each submission is sent as a message in the group.
Do I need Zapier to connect forms to messaging platforms?
No. Many form backend services, including FormsFort, offer native Slack, Discord, and Telegram integrations without requiring Zapier or any middleware.
Are webhook notifications real-time?
Yes. Form submissions are forwarded to messaging platforms within 1-3 seconds of receipt.
Get started free
Ready to add forms to your static site?
No backend required. Point your HTML form at FormsFort and start receiving submissions in minutes.