Skip to main content

How to use webhooks

Understand how to create, test and access webhook data

Written by Jamie Gaynor
Updated this week

Webhooks are a way for external systems and applications to send data directly into your Tines workflows. This article covers how to create, test, and access data from a webhook in Tines.

Read the Introduction to Webhooks article for more information.

Creating your first webhook

Step 1: Add a webhook action

In your Tines story, add a new webhook action. This action will be the entry point for external data.

Step 2: Configure the webhook

Key configuration options include:

  • HTTP Methods: Choose which HTTP verbs to accept (GET, POST, PUT, DELETE, etc.)

  • Authentication: Optionally require secrets, tokens, or basic auth to secure your webhook

  • CORS Settings: Configure cross-origin resource sharing if needed for browser-based requests

  • Rate Limiting: Protect your webhook from excessive requests

  • Response Configuration: Customize what the webhook returns to the caller

Read our best practice on configuring your webhook names and paths here.

Step 3: Get your webhook URL

Once created, Tines generates a unique URL for your webhook. You'll find this in the action details. The URL looks like:

Important: Never guess or manually construct webhook URLs—always copy the exact URL from the action details.

Step 4: Share the URL

Provide this URL to the external system that needs to send data to Tines. Configure that system to send HTTP requests to your webhook URL when events occur.

Testing your webhook

The best way to test a webhook is to simulate an external call from within Tines:

  1. Create an HTTP Request action in the same story (or a test story)

  2. Set the URL to your webhook's URL (copied from the webhook action details)

  3. Configure the payload to match what you expect from the real external system

  4. Run the HTTP Request action to simulate the external call

  5. Inspect the webhook's events to verify it received and processed the data correctly

  6. Trace downstream actions to ensure your workflow behaves as expected

This approach keeps your testing entirely within Tines and gives you full control over test data.

Additional webhook configurations and uses

Using multiple webhooks in one published story

You can utilize multiple webhooks within a single published story to facilitate your workflows. You can have two webhooks leading into the beginning of a story if your use case requires it. When doing so, ensure that the data format and the tools involved remain consistent across these inputs.

Note that a send to story action's entry point must be a webhook action itself and is restricted to only one entry point.

Copying a webhook action

To copy a webhook action, ensure that the secret and path are identical to the original version, and then delete the old webhook action.

You can also recreate a deleted webhook by setting up a new webhook with the original secret and path.

Adding CORS to a webhook action

Add CORS (Cross Origin Resource Sharing) to a webhook action by selecting ‘+ Option’ in the properties panel and choosing "Enable CORS".

Accessing webhook data

When a webhook receives a request, the data is available in the event it creates:

  • Body: webhook_action.body contains the request payload (JSON, form data, etc.)

  • Headers: webhook_action.headers contains HTTP headers

  • Query Parameters: webhook_action.query_parameters contains URL parameters

  • Method: webhook_action.method shows the HTTP verb used

  • Path: webhook_action.path shows the request path

Use Tines formulas to extract and transform this data in downstream actions:

<<webhook_action.body.alert_name>>

<<webhook_action.headers.x-api-key>>

<<webhook_action.query_parameters.user_id>>

Sending the webhook request body as a response

When a request is made to a webhook action, the default response is "Ok". To change the response to send the request body instead, follow these steps:

First, add the response option to the webhook action.

Then, add a value pill referencing the body of the webhook action using the syntax:

Rate limits for webhooks

Individual webhook paths are restricted to 1,000 requests per minute.

The overall webhook rate limit per tenant is 2,500 requests per minute. If a tenant reaches this limit, webhooks will stop receiving events tenant-wide.

Read more on webhooks in our docs here.

Did this answer your question?