Data collection is only half the battle. The real value comes from what you do with that data. Do you alert your sales team? Do you sync it to a CRM? Do you trigger an email sequence?
Formix provides built-in integrations for major platforms, but for ultimate flexibility, our Webhooks Engine allows you to route real-time HTTP notifications anywhere.
The Webhook Payload
When a user submits a form (either via your custom UI or WhatsApp Flow), Formix immediately dispatches a POST request to your configured webhook URL.
The payload is structured, predictable, and easy to parse:
{
"event": "form.submitted",
"formId": "frm_abc123",
"formName": "Enterprise Demo Request",
"submissionId": "sub_xyz987",
"source": "api",
"timestamp": "2026-03-25T14:22:10.000Z",
"data": {
"first_name": "Alice",
"company": "Acme Corp",
"revenue": "$10M+"
}
}
Handling Webhooks in Node.js / Next.js
Setting up a receiver is incredibly simple. If you are using Next.js App Router, you can create a Route Handler to listen for these events.
// app/api/formix-webhook/route.ts
import { NextResponse } from "next/server";
export async function POST(req: Request) {
try {
const payload = await req.json();
// Verify it's a submission event
if (payload.event === "form.submitted") {
const { data, formName } = payload;
// Example: Forward to an internal Slack channel
await notifySlackChannel(
`New lead from ${formName}: ${data.first_name} at ${data.company}`,
);
}
return NextResponse.json({ received: true }, { status: 200 });
} catch (error) {
console.error("Webhook error:", error);
return NextResponse.json({ error: "Bad payload" }, { status: 400 });
}
}
Best Practices
- Respond Quickly: Always return a
200 OKstatus immediately. If you need to perform heavy processing (like PDF generation or API calls to Salesforce), offload that work to a background queue. - Idempotency: Webhooks can occasionally be delivered more than once (e.g., network timeouts). Always check the
submissionIdagainst your database to prevent duplicate processing.
By leveraging webhooks, Formix acts as the unified ingestion layer, letting your backend focus entirely on business logic.