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:
Create an HTTP Request action in the same story (or a test story)
Set the URL to your webhook's URL (copied from the webhook action details)
Configure the payload to match what you expect from the real external system
Run the HTTP Request action to simulate the external call
Inspect the webhook's events to verify it received and processed the data correctly
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.bodycontains the request payload (JSON, form data, etc.)Headers:
webhook_action.headerscontains HTTP headersQuery Parameters:
webhook_action.query_parameterscontains URL parametersMethod:
webhook_action.methodshows the HTTP verb usedPath:
webhook_action.pathshows 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.


