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.

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

  1. Open your n8n instance and create a new workflow
  2. Add a Webhook node as the trigger
  3. Set the HTTP method to POST
  4. Copy the Production URL from the webhook node (it looks like https://your-n8n.com/webhook/xxxxx)

Step 2: Add the webhook in Formoar

  1. Go to your form's Integrations tab in the Formoar dashboard
  2. Click Webhook from the integration grid
  3. Paste the n8n webhook URL
  4. Give it a name like "n8n Workflow"
  5. Click Add webhook

Step 3: Test the connection

  1. In n8n, click Listen for test event on the webhook node
  2. Submit a test entry to your Formoar form
  3. n8n will receive the webhook and display the data
  4. 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

Was this page helpful?

We use cookies to understand how you use Formoar and to improve your experience. Privacy Policy