Overview
Receive ROASForm form activity on your own endpoint as signed JSON events.
ROASForm webhooks push form activity to any public HTTPS URL the moment it happens: a lead completes a form, books a call, abandons halfway, or advances a step. Point them at Zapier, Make, n8n, or your own backend.
How it works
You register a webhook per subaccount: a target URL, the events you want, and an optional list of forms to scope it to. When a matching event occurs, ROASForm sends the webhook to your URL as an HTTP POST with a JSON body, signed with your webhook's secret.
- Create a webhook under Integrations → Webhooks in the dashboard.
- Store the signing secret. It is shown exactly once.
- Subscribe to events and pick the forms it applies to.
- Verify the signature on every delivery before trusting the body.
- Respond
2xxwithin 10 seconds, then process asynchronously.
Delivery guarantees
Delivery is at-least-once. If your endpoint is slow or down, ROASForm retries up to 5 times with exponential backoff, so a rare duplicate is possible. Deduplicate on the webhook's id: it is stable across retries of the same delivery. See Delivery & retries for the full rules.
The five events
| Event | Fires when |
|---|---|
form_submission | Any submission completes, with or without a lead. |
form_step | Contact details are captured (email or phone). |
completed_lead | A lead (contact details captured) finishes the form. |
partial_lead | A lead abandons the form before finishing. |
booked_call | An appointment is booked through a connected calendar. |
