Send form submissions to Slack

Form submitted. Slack message. The human-in-the-loop pipeline.

Updated March 2026

Someone fills out your form, and a message shows up in Slack. There's a built-in Slack template that formats the data for you. Two API calls to set up, no middleware in between. The agent creates the form, wires the webhook, and you get notified when a human submits.

Setup

1. Get your Slack incoming webhook URL

Go to api.slack.com/apps, create an app (or pick an existing one), turn on Incoming Webhooks, and add one to the channel you want. Copy the URL.

2. Get a Sutrena API key

No account needed. Grab a trial key instantly.

curl -X POST https://sutrena.com/api/trial

3. Create a form

This makes a contact form with name, email, and message fields.

curl -X POST https://sutrena.com/api/forms \
  -H "Authorization: Bearer st_trial_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Contact form",
    "fields": [
      { "name": "name", "label": "Name", "type": "text", "required": true },
      { "name": "email", "label": "Email", "type": "email", "required": true },
      { "name": "message", "label": "Message", "type": "textarea" }
    ]
  }'

4. Create a webhook with the Slack template

Point a webhook at your Slack URL with template: "slack". Then link it to your form.

# Create the webhook
curl -X POST https://sutrena.com/api/webhooks \
  -H "Authorization: Bearer st_trial_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.slack.com/services/T00/B00/xxxx",
    "template": "slack",
    "description": "Contact form to #support"
  }'

# Link it to your form (use the webhookId from the response)
curl -X PATCH https://sutrena.com/api/forms/frm_xxx \
  -H "Authorization: Bearer st_trial_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "webhookIds": ["wh_xxx"] }'

5. Test it

Submit the form, check your Slack channel. You should see a formatted message with every field. You can also hit the test endpoint.

curl -X POST https://sutrena.com/api/webhooks/wh_xxx/test \
  -H "Authorization: Bearer st_trial_xxx"

Webhook payload

Every submission triggers a POST to your webhook URL with this payload:

{
  "id": "del_xxx",
  "event": "form.submission",
  "timestamp": "2026-01-15T10:30:00Z",
  "data": {
    "formId": "frm_xxx",
    "submissionId": "sub_xxx",
    "payload": {
      "name": "Jane",
      "email": "[email protected]"
    }
  }
}

FAQ

What does the Slack message look like?

Each field gets its own labeled line inside a Slack Block Kit message. Form name at the top, field values below, timestamp at the bottom. Nothing fancy, just readable.

Can I customize which fields appear in Slack?

Yes. Use fieldMapping when creating the webhook. If you provide a mapping, only those fields show up. Everything else gets dropped.

What happens if Slack is down?

Retries with exponential backoff. You can check what happened with GET /api/webhooks/{id}/deliveries. If it keeps failing, the webhook gets paused -- you can re-enable it later.

Can I send to multiple Slack channels?

Make one webhook per channel, each with its own Slack URL and template: "slack". Link them all to the same form.

What is Sutrena?

Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.

Get started in two API calls

1. Get a trial key (no auth, no signup)

curl -X POST https://sutrena.com/api/trial

2. Create a form + dashboard from a template

curl -X POST https://sutrena.com/api/forms \
  -H "Authorization: Bearer st_trial_xxx" \
  -H "Content-Type: application/json" \
  -d '{"templateId": "waitlist", "createDashboard": true}'

Ready to build?

Get a trial API key instantly with no signup, or create an account for the full experience.

Slack Integration -- Send Form Submissions to Slack | Sutrena | Sutrena