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.

  1. Open your form, poll, or widget in the builder
  2. Go to the Publish tab
  3. Scroll to Business Features
  4. Enter your webhook URL in the "Webhook URL" field
  5. Click "Test" to verify your endpoint
  6. 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:

HeaderDescription
Content-Typeapplication/json
User-AgentFavForm-Webhook/1.0
X-FavForm-EventThe event type (e.g., form.submitted)
X-FavForm-TimestampISO 8601 timestamp of the event

Available events

EventDescription
form.submittedA form response was submitted
poll.votedA vote was cast on a poll
widget.submittedA 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-Timestamp header 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