# Webhooks API

Where do you want to send your typeform’s data? With our Webhooks API, you can send every submission straight to any URL or compatible web application as soon as it’s submitted.

---

**NOTE:** If you need help with a Webhooks error, you can find more information in the [Troubleshooting and errors](/content/developers/troubleshooting/#webhooks-api/index.html) section.

---

## Key concepts

Webhooks are notifications that are triggered automatically when a specific event occurs and sent through the web. With the Typeform Webhooks API, the event is a new response submission. When a new submission comes in, a notification that contains the response data is immediately sent to your chosen destination: the URL or web application you set. Your webhook should send a `2XX` HTTP response status code back to let Typeform know that you received the webhook data.

## Storage for webhook responses

Typeform responses that are sent to your webhook URL **are** still stored on Typeform's server. You can still view responses by logging into your Typeform account or using our [Responses API](/content/developers/responses/index.html), even when you're sending responses to a webhook URL — although you might receive responses through your webhook a few seconds before they appear in Typeform's database.

## Security

We support signing webhook payloads and using `https` (as well as `http`) for your webhook URLs. For more information and implementation instructions, see the [secure your webhooks](/content/developers/webhooks/secure-your-webhooks/index.html) page.

## Timeout

If your webhook doesn’t respond within `30 seconds`, Typeform will mark the delivery as failed and trigger the retry policy outlined below.

## Delivery retries

If a webhook fails, Typeform will retry the request to your endpoint using the following rules:

- If `410 Gone` or `404 Not Found` HTTP status is received, no retry is performed, and the webhook is disabled immediately.
- If the `429 Too Many Requests`, `408 Timeout`, `503 Service Unavailable`, or `423 Locked` HTTP code is received, Typeform will retry the request to your endpoint every 2-3 minutes for 10 hours.
- If any other HTTP code is received, Typeform will retry the request to your endpoint five times using a back-off mechanism after 5 min, 10 min, 20 min, 1 hr, 2 hrs, 3 hrs, and 4 hrs.

Please see [Webhooks troubleshooting](/content/developers/troubleshooting/#webhooks-api/index.html) for details.

## Automatic disabling

If a webhook fails 100% of the time within 24 hours with more than 300 delivery attempts or within 5 minutes with 100 delivery attempts, we will disable it, and you will receive a notification

## Add port numbers to Webhook URLs

You can add a port number to your webhook URL to identify your webhook responses.

## Ready to start?

When you're ready to set up your first webhook, head to the [Webhooks reference](/content/developers/webhooks/reference/list-webhooks-for-a-form/index.html) documentation. You can also check out this [example webhook payload](/content/developers/webhooks/example-payload/index.html).

If you need to generate a test URL, check out [John Sheehan's list of webhooks and API tools](http://john-sheehan.com/blog/ultimate-api-webhook-backend-service-debugging-testing-monitoring-and-discovery-tools-list).
