Connect forms to n8n

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.

Setup

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/trial

3. 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.

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

Does this work with self-hosted n8n?

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.

Can I use n8n's built-in webhook authentication?

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.

What if my n8n instance is temporarily down?

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.

Can I trigger different workflows for different forms?

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.

Do I need webhooks, or can automations handle this?

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.

What is Sutrena?

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

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 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>"}'

Ready to build?

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

n8n Integration -- Trigger n8n Workflows from Forms | Sutrena | Sutrena