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 builder.
- Open your form, poll, or widget in the 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