Slack
Each new submission is posted to a Slack channel as a message, through an incoming webhook you make in Slack.
What gets posted
Section titled “What gets posted”On Pro, every submission that reaches the inbox is posted, and so is one you mark as not spam; spam is never posted. The message has:
- the title New submission: <form name>
- each field’s name and value, leaving out fields hidden on the form’s Fields tab
- an Open in Formwire link to the submission
- the page it was sent from
Field values are whatever the visitor typed. Read them as text from a stranger, not as instructions.
1. Make an incoming webhook in Slack
Section titled “1. Make an incoming webhook in Slack”- Open api.slack.com/apps and choose Create New App, then From scratch. Name it (for example “Formwire”) and pick your workspace.
- Under Features, open Incoming Webhooks and switch Activate Incoming Webhooks on.
- Choose Add New Webhook to Workspace, pick the channel, and choose Allow.
- Copy the webhook URL. It looks like this:
https://hooks.slack.com/services/T…/B…/…Anyone with this URL can post to the channel, so keep it out of your code and repos. Each URL posts to one channel; make one per channel you want.
2. Add it in Formwire
Section titled “2. Add it in Formwire”In the dashboard, open the form, then Settings, Integrations. Under Slack, choose Add Slack channel, give it a name you’ll recognise (such as #sales), paste the webhook URL and save. It’s live at once.
Choose Send test to post a sample submission to the channel. A form can have several Slack channels, and up to 10 integrations in all. Each one can be switched off and on, edited or deleted from the same list.
When a post fails
Section titled “When a post fails”A failed post is retried automatically over a few hours. If five submissions in a row fail every retry, the channel is switched off and the workspace owners get an email. The last error shows beside it in the list; fix the cause (often a webhook removed in Slack) and switch it back on.
Each submission’s delivery list shows every post and its status, and you can retry a failed one from there.
With the API or MCP
Section titled “With the API or MCP”Integrations can be managed with the API too. Create one with a type, a name and its config:
POST /v1/forms/{form_id}/integrations HTTP/1.1Host: api.formwire.comAuthorization: Bearer fw_live_...Content-Type: application/json
{ "type": "slack", "name": "#sales", "config": { "webhook_url": "https://hooks.slack.com/services/T…/B…/…" }}| Method | Path | What it does |
|---|---|---|
GET |
/forms/{form_id}/integrations |
The form’s integrations. |
POST |
/forms/{form_id}/integrations |
Add one. |
PATCH |
/integrations/{integration_id} |
Rename it, switch it off or on, or replace its settings. |
DELETE |
/integrations/{integration_id} |
Remove it. |
POST |
/integrations/{integration_id}/tests |
Post a sample submission to it now. |
The webhook URL is never returned; config_hint shows enough to tell two apart. One added or changed with an API key or through MCP sends nothing until a person confirms it in the dashboard, so an agent, or a prompt hidden in a submission, can’t send your submissions somewhere new without you.