Integrations
Send form submissions to Slack
Create an incoming webhook in Slack, then add it to your form in Formward as a webhook of type Slack. From then on every processed submission is posted to that channel as a readable message: the form name in bold, then the submitted fields, one per line. No Zapier, no code, no server of your own.
It takes about five minutes and needs the Professional plan. The steps below use the exact labels you will see in Slack and in the Formward dashboard.
Set it up
- In Slack, create an app for your workspace at api.slack.com/apps, open Incoming Webhooks and switch on Activate Incoming Webhooks.
- Click Add New Webhook to Workspace, choose the channel that should receive submissions and copy the URL. It starts with https://hooks.slack.com/services/.
- In Formward, open the form, go to its Settings tab and scroll to the Connections panel. Choose Webhooks.
- Pick Slack in the type menu, paste the URL, add a label if you like and click Add webhook. Leave the signing secret empty: Slack does not check it.
- Click Test next to the new webhook. A message reading "This is a test delivery from Formward" should appear in the channel.
- Send one real submission through your form and watch it land. The form's Webhooks settings tab shows the delivery and its response code.
What Formward sends to Slack
This is the body Formward POSTs for a three-field contact form, built by the same function the worker uses. The blocks carry the formatted message; text is the plain fallback.
json
{
"text": "*New submission to Contact form*\nname: Ada Lovelace\nemail: ada@\u200bexample.com\nmessage: Do you ship to Norway?\n",
"blocks": [
{
"type": "section",
"text": { "type": "mrkdwn", "text": "*New submission to Contact form*" }
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "name: Ada Lovelace\nemail: ada@\u200bexample.com\nmessage: Do you ship to Norway?"
}
}
]
}The \u200b after each @ is a zero-width space. Field values come from strangers, so Formward breaks every @ to stop a submission from pinging @channel or @here, and escapes the characters Slack uses for formatting.
The message lists the first six fields. Control fields whose names start with an underscore, such as _gotcha or _redirect, are left out. When AI summaries are on, the summary is appended to the text fallback.
Plan and limits
- Webhooks, including the chat formats, need the Professional plan or above. A form can have several webhooks, and each one gets every submission independently.
- Only submissions that finish processing are sent. Spam is never posted, and neither is a submission that is held because the form's notification address has not been confirmed yet.
- A delivery succeeds when the endpoint answers 2xx within 10 seconds. A timeout, an error status or a redirect counts as a failure and is retried up to three more times with increasing delays.
- Every attempt appears in the delivery log on the form's Webhooks settings tab, with the response code and a Replay button for workspace owners and admins.
Where the data goes
Slack is a US service, so posting submissions there sends a copy outside the EU. That transfer is yours to assess as controller.
Formward stores and processes the submission in the EU. Posting it to a chat tool is a second copy that you choose to make, and it then lives under that platform's storage and retention rules. Record the destination in your own records of processing, and keep forms that collect sensitive data away from chat channels: send those to your own endpoint with a generic webhook instead.
Your data-flow page lists every destination each of your forms uses right now.
Troubleshooting
- Test shows "failed"
- Hover the word failed to see the error. The usual cause is a webhook URL that no longer exists in Slack: the app was removed, or Slack revoked the URL after it was exposed somewhere public. Create a new webhook and replace the URL.
- The test works but real submissions never arrive
- Open the submission in your inbox and check its status. Spam is never forwarded, and a submission stays held, and undelivered everywhere, while the form's notification address is unconfirmed. Confirm the address from the email Formward sent to it and new submissions flow through.
- Some fields are missing from the message
- Slack messages show the first six fields by design, to keep the channel readable. Open the submission in Formward for the full set, or add a generic webhook if a system needs every field.
- Email addresses look slightly odd when copied
- That is the zero-width space after the @. It is invisible in Slack but travels with a copy and paste. Copy the address from the Formward dashboard instead.
Other integrations
Connect Slack to your first form
Create a form, point your HTML at it and set up Slack in a few minutes. Submissions are stored and processed in the EU.