Skip to main content

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:
The response includes the updated webhook configuration:

Disabling a Webhook

Set webhookEnabled to false to stop deliveries without removing the URL:
To clear the URL entirely, set webhookUrl to null. This automatically disables the webhook:

Payload Format

When a form submission is completed, GeniusForms sends a POST 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:
This sends a sample payload to the URL and returns the result:
If no 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 2xx response 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.

Validation Rules