Submissions trigger n8n workflows. Self-hostable.
Updated March 2026
n8n is a workflow tool you can self-host. Add a Webhook node in n8n, point a Sutrena webhook at it, and submissions trigger your workflow. You can verify signatures with a Code node if you want. Works with n8n Cloud too.
1. Add a Webhook node in n8n
In the workflow editor, add a Webhook node. Set it to POST. Copy the production URL (not the test one).
2. Get a Sutrena API key
Grab a trial key or use yours.
curl -X POST https://sutrena.com/api/trial3. Create a Sutrena webhook
Point it at your n8n URL and link it to your form. Save the secret from the response if you want signature verification.
curl -X POST https://sutrena.com/api/webhooks \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-instance.app.n8n.cloud/webhook/abc-123",
"description": "Submissions to n8n workflow"
}'
# Response includes: "secret": "whsec_xxx"
# Link to your form
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"] }'4. Verify HMAC signature in n8n
Add a Code node after the Webhook node. Check the signature header against an HMAC of the body. If it doesn't match, throw.
// n8n Code node (JavaScript)
const crypto = require('crypto');
const secret = 'whsec_xxx'; // your webhook secret
const signature = $input.first().headers['x-webhook-signature'];
const body = JSON.stringify($input.first().json);
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
if (signature !== expected) {
throw new Error('Invalid webhook signature');
}
return $input.all();5. Build your workflow
Add nodes after the verification step. Access fields via $json.data.payload.name, $json.data.payload.email, etc. Save to a database, send an email, call an API -- whatever you need.
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]"
}
}
}Yes. Same setup. But your n8n instance needs to be publicly reachable so Sutrena can deliver to it. If it's behind a firewall, something like ngrok works. Use the production webhook URL, not the test one.
You can, but HMAC is stronger -- it signs the entire body, not just a header token. The Code node approach is worth the extra step.
Sutrena retries with exponential backoff over several hours. When n8n comes back, the queued deliveries go through. Check the logs with GET /api/webhooks/{id}/deliveries.
Two ways. Either make a separate webhook for each n8n workflow URL and link each to a different form. Or use one webhook and add an IF node in n8n that routes based on data.formId.
Automations handle many workflows natively -- conditional routing, page entries, analytics tracking, webhook notifications. Use n8n when you need to connect to services Sutrena doesn't reach directly or when you want n8n's visual workflow editor and self-hosting.
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.