n8n
Connect Formoar to n8n to build self-hosted workflow automations with your form submissions. Use Formoar's webhook integration to trigger n8n workflows whenever someone submits your form.
This integration uses Formoar's built-in webhook feature. You'll need a Starter plan or higher and an n8n instance (cloud or self-hosted).
How it works
n8n receives form submissions through a Webhook trigger node. You create a webhook URL in n8n, then add it as a webhook integration in Formoar. Every new submission triggers your n8n workflow.
Setup
Step 1: Create a webhook trigger in n8n
- Open your n8n instance and create a new workflow
- Add a Webhook node as the trigger
- Set the HTTP method to POST
- Copy the Production URL from the webhook node (it looks like
https://your-n8n.com/webhook/xxxxx)
Use the Production URL, not the test URL. The test URL only works when the workflow editor is open.
Step 2: Add the webhook in Formoar
- Go to your form's Integrations tab in the Formoar dashboard
- Click Webhook from the integration grid
- Paste the n8n webhook URL
- Give it a name like "n8n Workflow"
- Click Add webhook
Step 3: Test the connection
- In n8n, click Listen for test event on the webhook node
- Submit a test entry to your Formoar form
- n8n will receive the webhook and display the data
- Click on the output to see the mapped fields
Step 4: Build your workflow
Add action nodes to process the submission data:
- Google Sheets — Append rows to a spreadsheet
- Send Email — via Gmail, Outlook, or SMTP
- Slack / Discord — Post messages to channels
- HTTP Request — Call any external API
- IF / Switch — Branch logic based on field values
- Code — Write custom JavaScript/Python
- Database — Insert into Postgres, MySQL, MongoDB
Step 5: Activate
Toggle the workflow to Active. n8n will process webhooks in real-time.
Webhook payload format
Formoar sends the standard webhook payload to n8n:
Example payload
{
"event": "submission.created",
"form_name": "Contact Form",
"submission_id": "abc123",
"data": {
"name": "Jane Doe",
"email": "jane@example.com",
"message": "Hello from the form!"
}
}
In n8n, you can access fields using expressions like {{ '{{' }} $json.data.email {{ '}}' }}.
Signing secret (optional)
For added security, add a signing secret when creating the webhook in Formoar. Each request includes an X-Formoar-Signature header with an HMAC-SHA256 signature. Verify it in n8n with a Code node:
Signature verification (Code node)
const crypto = require('crypto')
const secret = 'your-signing-secret'
const payload = JSON.stringify($input.first().json)
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(payload).digest('hex')
const actual = $input.first().headers['x-formoar-signature']
if (actual !== expected) {
throw new Error('Invalid webhook signature')
}
return $input.all()
Self-hosted considerations
If you're running n8n on your own server:
- Make sure your n8n instance is accessible from the internet (Formoar needs to reach your webhook URL)
- Use HTTPS with a valid certificate — Formoar requires HTTPS for webhook URLs (except localhost for local development)
- If you're behind a firewall, whitelist Formoar's IP range or use a tunnel like Cloudflare Tunnel
Troubleshooting
- Webhook not triggering — Verify the workflow is set to Active and the webhook URL is the production URL (not the test URL)
- Connection refused — Check that your n8n instance is accessible from the public internet
- SSL errors — Ensure your HTTPS certificate is valid and not self-signed
- Missing data — Use the "Listen for test event" feature to inspect the exact payload structure