Webhooks
Receive real-time notifications when events occur in your FavForm account.
Webhooks are available on the Business plan.
Setting up webhooks
Webhooks are configured per form, poll, or widget in the form builder.
- Open your form, poll, or widget in the form builder
- Go to the Publish tab
- Scroll to Business Features
- Enter your webhook URL in the "Webhook URL" field
- Click "Test" to verify your endpoint
- Save your changes
Webhook payload
When an event occurs, we send a POST request to your endpoint with a JSON payload. Here's an example for a form submission:
JSON
{
"event": "form.submitted",
"timestamp": "2026-01-26T22:45:00.000Z",
"data": {
"id": "response-uuid",
"formId": "form-uuid",
"title": "Contact Form",
"answers": {
"name": "John Doe",
"email": "john@example.com",
"message": "Hello!"
},
"metadata": {
"domain": "example.com",
"browser": "chrome",
"device": "desktop",
"os": "macos",
"country": "US"
}
}
}HTTP headers
Each webhook request includes the following headers:
| Header | Description |
|---|---|
| Content-Type | application/json |
| User-Agent | FavForm-Webhook/1.0 |
| X-FavForm-Event | The event type (e.g., form.submitted) |
| X-FavForm-Timestamp | ISO 8601 timestamp of the event |
Available events
| Event | Description |
|---|---|
| form.submitted | A form response was submitted |
| poll.voted | A vote was cast on a poll |
| widget.submitted | A widget response was submitted |
Event payloads
Poll vote
JSON
{
"event": "poll.voted",
"timestamp": "2026-01-26T22:45:00.000Z",
"data": {
"id": "vote-uuid",
"pollId": "poll-uuid",
"title": "Favorite Color",
"vote": "Blue",
"metadata": {
"ip_hash": "abc123..."
}
}
}Widget submission
JSON
{
"event": "widget.submitted",
"timestamp": "2026-01-26T22:45:00.000Z",
"data": {
"id": "response-uuid",
"widgetId": "widget-uuid",
"title": "Feedback Widget",
"rating": 5,
"comment": "Great product!",
"metadata": {
"browser": "Chrome",
"device": "Desktop",
"os": "macOS"
}
}
}Best practices
- Respond with a 2xx status code within 10 seconds
- Process webhooks asynchronously if needed
- Use the
X-FavForm-Timestampheader to verify freshness - Log webhook payloads for debugging
Integrations
Webhooks work great with automation platforms:
- Zapier — Use the "Webhooks by Zapier" trigger
- Make (Integromat) — Use the "Webhooks" module
- n8n — Use the "Webhook" trigger node
- Pipedream — Create an HTTP webhook source