Overview
Webhooks let you receive an HTTP POST request to your server whenever a form submission is completed. This enables real-time integrations with your backend, CRM, notification systems, or any external service. A webhook fires when all required questions on a form have been answered.Configuring a Webhook
Use the Update Form endpoint to set a webhook URL and enable delivery:Disabling a Webhook
SetwebhookEnabled to false to stop deliveries without removing the URL:
webhookUrl to null. This automatically disables the webhook:
Payload Format
When a form submission is completed, GeniusForms sends aPOST request with a JSON body:
The request includes these headers:
Testing Your Webhook
Before going live, verify your endpoint works with the Test Webhook endpoint:url is provided in the request body, it tests the form’s currently configured webhook URL.
Checking Delivery Logs
Use the Get Webhook Logs endpoint to review delivery history:Checking Webhook Status
Get a quick summary of the current configuration and the last delivery attempt with the Get Webhook Status endpoint:Security Notes
- HTTPS recommended - Use HTTPS URLs for webhook endpoints to protect payload data in transit.
- Localhost blocked in production -
localhost,127.0.0.1, and private IP ranges (192.168.*,10.*,172.*) are blocked in production to prevent SSRF attacks. - 10-second timeout - Webhook requests time out after 10 seconds. Return a
2xxresponse quickly and process the data asynchronously if needed. - Non-blocking - Webhook failures never prevent form submissions from being saved. Failed deliveries are logged for debugging.
- No retries - Failed webhook deliveries are not automatically retried. Check the delivery logs to identify and resolve issues.