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.
For simple notifications, automations with a fetch step can POST directly to Slack incoming webhooks without configuring a separate webhook resource. Use dedicated webhooks when you need richer formatting via the built-in Slack template or want delivery logs and retry tracking.
Sutrena is the web runtime for AI agents. Forms, Pages, Analytics, Webhooks, Automations — all through 67 MCP tools and one REST API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Use any one feature or all of them together.
Pages
Deploy HTML instantly
Forms
Collect structured data
Automations
DSL-based pipelines with 14 step types
Analytics
Privacy-first, no cookies
Webhooks
Slack, Discord, Telegram
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create anything — a page, form, automation, or analytics site
# Create a form
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"name": "waitlist", "fields": [{"name": "email", "label": "Email", "type": "email", "required": true}]}'
# Or deploy a page
curl -X POST https://sutrena.com/api/pages \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"slug": "index", "title": "My Site", "html": "<h1>Live</h1>"}'Get a trial API key instantly with no signup, or create an account for the full experience.