Integration

Send website form submissions to Slack

Formgong team ·

A form to Slack does not need a Slack app from us. Create an Incoming Webhook for one channel, paste the URL, and each submission posts as a formatted message.

Short answer: Create a Slack Incoming Webhook for a channel and paste its URL into the form webhook settings. Each website form submission then posts as a formatted message. There is no Slack app to install on our side. The Free plan includes this, with one webhook per form.

What an Incoming Webhook is, and what you need

This page is for a form on your own website. It is not how to create a form inside Slack. Slack Workflow Builder forms are a different product. A Google Form is different too, and Formgong does not connect to Google Forms.

An Incoming Webhook is a URL that posts into one Slack channel. Slack documents it as a JSON text message. The URL looks like https://hooks.slack.com/services/T000/B000/XXXX. GovSlack uses hooks.slack-gov.com with the same path. Treat the URL like a password.

How to get a webhook for a Slack channel, from the Incoming Webhooks guide:

  • Create a Slack app, or open one you already have. This app lives in your Slack workspace. It is not a Formgong app, and there is no Add to Slack button on our side.
  • Open Incoming Webhooks and turn Activate Incoming Webhooks on.
  • Click Add New Webhook to Workspace, pick the channel, and authorize. Copy the Webhook URL.

The older Incoming Webhooks app under Manage apps can mint the same kind of URL. Either URL works if the path is /services/ plus three parts. A Workflow Builder trigger URL uses /triggers/. Formgong does not format those. They get the raw signed JSON.

You also need a Formgong form. Use the HTML form docs or the HTML contact form. A WordPress site can post through the WordPress guide: a Custom HTML block, or an Elementor Pro webhook. People also search for Contact Form 7 Slack. There is no Contact Form 7 plugin here.

Add the form to a Slack channel, step by step

This is how to get notifications on Slack when someone submits the form. You send the webhook to Slack by pasting the URL. Formgong detects hooks.slack.com and switches to a chat message. There is no toggle.

  1. In Slack, create an Incoming Webhook for one channel and copy the URL. It looks like https://hooks.slack.com/services/T000/B000/XXXX.
  2. In Formgong, open My forms, then the form, then Form settings. If the Webhook tab is hidden, click Open expert mode. Open Webhook, paste the URL, and click Add webhook.
  3. Click Send test on that webhook and check the Slack channel for the test message.
  4. Submit the real form on your website and confirm the channel shows each field.
  5. Optional: connect Telegram on the same form for an instant phone alert. Telegram is also instant on Free.

The Webhook tab is hidden while the dashboard is in Standard mode. Click Open expert mode. The field label is URL. Click Add webhook. That stores the URL. You do not use the page Save button for this.

Send test delivers event webhook.test. The message field says Formgong test. The bold title starts with Test message from Formgong, then your form name. A test has no page URL, so that line is missing until a real submit.

You can also connect Telegram for an instant phone alert. Telegram is also instant on Free and does not use the webhook slot. Email on Free is a next-morning daily digest at 08:00 in the owner timezone.

Junk should not reach the channel. The honeypot is always on. Cloudflare Turnstile is optional, and required if the form accepts files. Spam stays in the inbox and is not posted. See contact form spam without a CAPTCHA.

Slack webhook message example

The body is plain mrkdwn in a text field. It is not Block Kit, and you cannot pick a template. Slack posts it as the Incoming Webhook you created. Formgong does not set a Slack username. unfurl_links and unfurl_media are both false, so Slack does not expand the page link into a preview.

This slack webhook example uses a form named Contact and placeholder values only:

mrkdwn
:bell: *Contact*

*name*
PLACEHOLDER

*email*
PLACEHOLDER

*message*
PLACEHOLDER

:paperclip: *Files*: PLACEHOLDER.pdf

Page: https://example.com/contact

06.10.2026, 09:15 (+00:00) · <https://example.com/dashboard/forms/PLACEHOLDER/submissions/PLACEHOLDER|Open in Formgong>

That is the slack webhook format message. Read it from top to bottom:

  • A bell emoji, then the form name in bold.
  • One bold field name and its value, for every submitted field. Each value is cut at 1,000 characters. If fields do not fit, a line says how many more there are.
  • The whole text is cut at 3,500 characters.
  • A paperclip line with file names only. The files are not uploaded into Slack. Open them in the dashboard.
  • The page URL, then the time in the owner timezone, then a link labeled Open in Formgong.

On Pro and Business, a traffic-source line can appear as well. Free does not include that line. @channel, @here and @everyone are defused, and < is escaped, so a visitor cannot ping the channel or forge a Slack link.

Limits for a form to Slack

The Slack URL counts as a webhook. On Free, the form can have Slack or Discord or one other webhook, and Telegram on top. Plan sizes are on the pricing page.

Slack delivery limits from the Formgong code and Slack docs
LimitWhat applies
Message textCut at 3,500 characters
Each valueCut at 1,000 characters
Extra fieldsA +N more line when some fields are left out
Files in the messageNames only. Up to 3 files, 5 MiB each, 10 MiB per submission
File storageFree 100 MiB, Pro 1 GiB, Business 5 GiB. Uploads need Turnstile
Webhooks per formFree 1. Pro and Business 5. 300, 5,000 and 25,000 submissions a month
Formgong rate30 submissions a minute per form, and 20 a minute per IP
Slack rateAbout 1 message a second per Incoming Webhook. Bursts can pass. Then Slack may send 429
Retries5 attempts. Waits of 30 seconds, 2 minutes, 10 minutes and 30 minutes
URLHTTPS, port 443, no password in the URL, public host, at most 2,048 characters

Slack rate limits say an Incoming Webhook is about one message per second, and a 429 includes Retry-After. Formgong does not read that header. It retries on the fixed schedule above. The last try is about 42 minutes after the first. Each attempt times out after 10 seconds, and a redirect counts as a failure.

If nothing arrives in Slack

Open the Webhook tab and expand Recent deliveries. A failed attempt shows the status and a short Slack error, such as no_service or channel_is_archived.

  • Workflow trigger URL: hooks.slack.com/triggers/... is not formatted. Create an Incoming Webhook whose path starts with /services/.
  • no_service or 404: the webhook was removed or disabled. Make a new one and paste the new URL. Slack documents invalid_token and no_active_hooks for the same kind of break.
  • channel_is_archived: the channel is archived. Unarchive it, or point a new webhook at a live channel.
  • posting_to_general_channel_denied: that workspace blocks the webhook from posting in #general. Pick another channel.
  • 429: Slack is rate-limiting. A quiet form will rarely hit one message a second. The retries are not spaced from Retry-After.
  • Empty log: the row was spam or held, so nothing was sent. Look in the inbox.
  • Email after the last failure: the owner is emailed when all 5 attempts fail. That email is at most once a day per form and channel, on every plan including Free, and it is not the daily digest. The lead is still in the inbox.

Slack ignores X-Signature. The header is still sent. You do not configure it for an Incoming Webhook. Read the webhook reference only if you also want the raw JSON somewhere else.

Want the raw JSON instead?

Any URL that is not a Slack Incoming Webhook or a Discord channel webhook gets the signed JSON. Use that when you need your own Slack webhook URL format, or to feed another tool.

One webhook URL is one channel. Add form to Slack channel means that one channel. Field routing can send email or Telegram to one person. It does not choose a Slack channel per submission. Pro and Business can store 5 webhook URLs on one form if you need several channels.

Questions

Is a form to Slack free?

Yes. Slack delivery is on the Free plan. Free allows one webhook per form, so the form gets Slack or Discord or one other webhook. Telegram stays available and is instant. Email on Free is a next-morning daily digest at 08:00 in your timezone.

Do I need to install a Formgong Slack app?

No. There is no Add to Slack step and no OAuth screen on the Formgong side. In Slack you create an Incoming Webhook, which Slack treats as a small app in your workspace. You paste that URL here.

Can I add the form to several Slack channels?

On Free, no. One form has one webhook URL, and one URL is one channel. Pro and Business allow 5 webhook URLs per form. Paste one Incoming Webhook URL per channel.

Are files uploaded into Slack?

No. The message lists file names only. Files stay in Formgong and open from the dashboard after sign-in. They are not attached to the Slack message.

Can a visitor ping @channel or @here?

No. @channel, @here and @everyone are defused. Characters that would build a Slack mention link are escaped. A visitor cannot ping the channel.

What if Slack is down?

Formgong tries 5 times over about 42 minutes. Recent deliveries shows each attempt and Slack error text. If the last attempt fails, the owner gets an alert email. That email is at most once a day per form and channel, on every plan including Free, and it is not the daily digest. The submission remains in the inbox.

Can Contact Form 7 or Google Forms use this?

A WordPress site can post through the WordPress guide, with a Custom HTML block or an Elementor Pro webhook. There is no Contact Form 7 plugin. Google Forms is a different product and is not connected.

Sources

Checked on 06.10.2026 against these public pages: Slack: Sending messages using incoming webhooks, Slack: Rate limits, Formgong webhook reference, Formgong pricing.

← Formgong