Skip to main content

What is a webhook?

A webhook is a way for one system (like Fillout) to send real-time data to another system (like the 3rd party tools you use) as soon as an event occurs. Under the hood, a webhook is an HTTP callback and can be either of these requests:
  • GET - fetch something
  • POST - create something new

Connect your form to a webhook

1

Link your Fillout form to a webhook

Click Integrate on top followed by Webhook.Screenshot of the Fillout form creation pageEnter your Webhook URL, and Test it. When you’re good with it, click Finish setup.Screenshot of the Fillout form creation page
2

Publish and share

That’s it! You have all you need to configure a webhook when the form submits. Publish it and share the link.

What’s included in the payload

By default, Fillout sends the full submission to your webhook URL as JSON. A few things are not included:
  • Browser, operating system and network ID. These show on your form’s Results page but aren’t sent to the webhook.
  • The edit submission link. To get it, request the submission from the Fillout REST API with the includeEditLink query parameter.
To choose exactly what gets sent, use the Advanced options below.

Available webhook options

Switch from Simple to Advanced at the top to set up your webhook with any of the parameters or arguments you need. The Advanced options of the Webhook integration, with URL, HTTP method, Body, URL Parameters, Headers and Cookies In Advanced, Fillout no longer sends the full submission. You map the data yourself in the Body section: enter a key on the left and pick its value on the right. A value can be a form field, a URL parameter, a calculation, a date utility or static text. The mapped data is still sent as JSON. For these examples, let’s assume your URL is something like: https://hooks.zapier.com/hooks/catch/12475312/abc/ Each of the sections in the Webhook integration does the following: HTTP method
  • Choose whether Fillout sends a POST or a GET request to your URL.
Body
  • This is used if you’re sending a POST request. Most of the time, services like Zapier and Make will accept either GET or POST, and you can send information in the body of the message if you prefer instead.
  • If using fields in the body of the message, make sure to process these correctly in Zapier/Make to make sure that they’re coming in the body and not the URL.
URL parameters Headers (optional)
  • Most users will not need to use this section. This is typically if you have an advanced webhook setup which requires sending extra headers.
  • The most typical use case for headers is if you have some verification required for your endpoint, and you have a special key you want to send, which will look something like: Authorization —> Bearer <secret_token>
Cookies (optional)
  • Similar to headers, most users will not need to send any here.

Retry a failed webhook

When a webhook fails, your form’s Results page shows an error next to that submission. Open the submission to read the error message. Once you’ve fixed the issue on your end, click Retry integration under the error to send the submission again. If you don’t see that button, resubmit the response instead. Resubmitting runs everything connected to the form again, not just the webhook: all current integrations, all workflows, and any self-notifications and respondent notifications. This also works for past submissions, including ones created before you set up the webhook.

Webhooks on scheduling forms

A webhook on a scheduling form sends these fields by default:
  • fullName
  • email
  • phone (if available)
  • timezone
  • eventStartTime
  • eventEndTime
  • eventId
  • eventUrl
  • rescheduleOrCancelUrl
  • scheduledUserEmail
  • scheduledUserName
The start and end times are always sent in UTC. The Zoom link isn’t included by default. To send it, switch to Advanced and map it, along with every other field you need. The booker’s time zone can’t be mapped in Advanced.
A webhook added under Integrate only runs when the form is submitted, which is the original booking. To send a webhook when an event is canceled or rescheduled, use a workflow.

FAQs

No. If your form also creates a record through a native integration, such as a new Airtable record, that record’s ID can’t be passed to your webhook. Both run when the form is submitted, so the ID doesn’t exist yet when the webhook is sent.The same applies in general: a record ID created on submission can’t be returned to the form or used by other integrations that run on submission.
No. A form with a payment page can’t be submitted until Stripe confirms the payment, so abandoned or declined payments don’t trigger the webhook. Some submissions still come through without a completed charge, like $0 checkouts, free trials, and US bank account payments that are still processing. See when a submission is recorded for the exceptions and how to check the payment status.
Webhooks created through the Fillout API don’t appear in the Fillout dashboard. To remove one, use the API’s remove a webhook endpoint.

Automate with Zapier

Connect your Fillout form to hundreds of apps.

Populate dropdowns with a webhook

Load options from a REST API.