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.
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/trial3. 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"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]"
}
}
}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.
Yes. Use fieldMapping when creating the webhook. If you provide a mapping, only those fields show up. Everything else gets dropped.
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.
Make one webhook per channel, each with its own Slack URL and template: "slack". Link them all to the same form.
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.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. 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}'Get a trial API key instantly with no signup, or create an account for the full experience.