Skip to content

Slack

Each new submission is posted to a Slack channel as a message, through an incoming webhook you make in Slack.

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. Open api.slack.com/apps and choose Create New App, then From scratch. Name it (for example “Formwire”) and pick your workspace.
  2. Under Features, open Incoming Webhooks and switch Activate Incoming Webhooks on.
  3. Choose Add New Webhook to Workspace, pick the channel, and choose Allow.
  4. 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.

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.

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.

Integrations can be managed with the API too. Create one with a type, a name and its config:

Add a Slack channel
POST /v1/forms/{form_id}/integrations HTTP/1.1
Host: api.formwire.com
Authorization: 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.