Webhooks let Tourseta send events — like a new lead — to other apps in real time. You connect through an automation tool like Zapier or Make, which passes the event on to your app.
This guide uses Zapier for the examples. The Tourseta side is the same for every app — only the final step changes.
Permissions required: Integrations → Configure
How it works
The connection has three parts:
Tourseta fires a webhook whenever the event you choose happens — for example, when a new lead is created.
Zapier (or Make) catches that webhook and reads the details from the payload.
Your app receives the data from Zapier and does something with it — adds a subscriber, creates a row, posts a message, and so on.
Before you start
A Zapier account (a Make account works too — the steps are similar).
The app you want to connect, already available in Zapier (for example Mailchimp, MailerLite, or Google Sheets).
The Integrations → Configure permission in Tourseta.
Step 1: Get a webhook URL from Zapier
In Zapier, create a new Zap and choose Webhooks by Zapier as the trigger app.
Select the Catch Hook event and continue.
Copy the webhook URL Zapier generates. It looks like
https://hooks.zapier.com/hooks/catch/.... You will paste this into Tourseta in the next step.
Step 2: Create the webhook in Tourseta
Go to Integrations → Webhooks and click New webhook.
In Name, enter a label you will recognize, for example New lead → MailerLite.
In Trigger event, choose the event that should send data. To add new subscribers, select lead.created (or customer.created).
In Endpoint URL, paste the Zapier webhook URL from Step 1.
If your endpoint requires it, add an HTTP Auth username and HTTP Auth password. Zapier's Catch Hook does not need these, so you can leave them empty.
Click Save.
The webhook starts sending as soon as you save it. Its Status is Active by default.
Step 3: Send a test and connect your app
In the Webhooks list, open the ⋯ menu next to your webhook and click Send sample payload. Tourseta sends an example event to Zapier so it has data to work with.
Back in Zapier, click Test trigger. You should see the sample data Tourseta just sent.
Add a second step to your Zap (Zapier calls it an action). Choose the app you want to send the data to, then pick what it should do — for example, Mailchimp → Add/Update Subscriber. See the Popular destinations table below for the right action per app.
Now fill in the app's fields with the Tourseta data. Because you sent the sample payload, Zapier lists the Tourseta values (
email,fullName, and so on) — click into each field in your app and choose the matching one. For example, set your app's email field to Tourseta'semail, and its name field tofullName.Turn the Zap on.
From now on, every matching event in Tourseta will be sent to your app automatically.
Popular destinations
The Tourseta and Zapier setup above is the same for every app. Only the action you pick in Step 3 changes:
App | Action to use in Zapier |
Mailchimp | Add/Update Subscriber |
MailerLite | Create/Update Subscriber |
Brevo (Sendinblue) | Add or Update Contact |
Google Sheets | Create Spreadsheet Row |
Slack | Send Channel Message |
Action names may vary slightly between Zapier and Make, but the idea is the same.
Webhook form fields
Field | Description |
Name | A label to identify the webhook in the list. |
Trigger event | The Tourseta event that sends data to your endpoint. See the list below. |
Endpoint URL | The URL that receives the webhook — your Zapier or Make catch-hook URL. Must be a valid HTTP or HTTPS URL. |
HTTP Auth username | Username for HTTP Basic authentication, if your endpoint requires it. |
HTTP Auth password | Password for HTTP Basic authentication, if your endpoint requires it. |
Available events
Event | Fires when… |
lead.created | A new lead is created. |
lead.updated | An existing lead is updated. |
lead.deleted | A lead is deleted. |
customer.created | A new customer is created. |
customer.updated | A customer is updated. |
booking.created | A new booking is created. |
booking.updated | A booking is updated. |
tour.published | A tour is published. |
What Tourseta sends
Each webhook is an HTTP POST with a JSON body. Every payload uses the same envelope: a unique id per event, the event name, a timestamp of when the event happened, an event-specific data object, and a previous object that is populated only for update and delete events. The fields inside data depend on the event — use these field names when mapping values in Zapier.
{
"id": "3f9c1e6a-...",
"event": "lead.created",
"timestamp": "2026-07-14T10:00:00.000Z",
"data": {
"id": "8b2d...",
"status": "new",
"fullName": "John",
"email": "[email protected]",
"phone": "+1234567890",
"country": "US",
"source": "waitlist",
"message": "Test message",
"tourId": null,
"tourName": null,
"departureId": null,
"departureDate": "2025-01-02",
"numberOfTravelers": 2,
"tags": [{ "id": "...", "name": "Family Friendly" }]
},
"previous": null
}Every request also carries two headers: X-Webhook-Id, the ID of the webhook that sent it (the same on every event from that webhook), and X-Webhook-Test, set to true for Send sample payload and false for real events. To tell events apart, use the id in the body, not the header.
Delivery and retries
A delivery succeeds when your endpoint answers with a 2xx status within 30 seconds. If it doesn't — an error status, a timeout, or the endpoint can't be reached — Tourseta tries again up to 4 more times: after 1 minute, 5 minutes, 15 minutes, and 60 minutes.
The same event can arrive more than once. Every retry carries the same body
id, so use it to skip duplicates — in Zapier, add a filter or a lookup step onid.Events can arrive out of order. Use
timestampto find the latest version, for example when a booking.updated is retried after a newer one.Retries use your current settings. If you fix the endpoint URL or password while retries are pending, the next attempt uses the new values. If you deactivate or delete the webhook, pending retries are dropped.
⚠️ Webhooks that keep failing are turned off
If 10 events in a row fail all their attempts, Tourseta sets the webhook to Inactive so it stops sending. Events that happen while it is inactive are not sent later. Fix your endpoint, then switch the Status back on — the failure count starts again from zero.
Manage your webhooks
Activate / deactivate — Use the Status toggle in the list. An Inactive webhook stops sending until you switch it back on.
Send sample payload — From the ⋯ menu, send an example event to your endpoint to test the connection.
Edit — Update the name, trigger event, endpoint URL, or authentication details.
Delete — Permanently remove the webhook. This cannot be undone.
Troubleshooting
The webhook is Inactive and nobody turned it off — your endpoint failed repeatedly and Tourseta turned it off. Check that the URL and credentials are still valid, send a sample payload, then switch the Status back on.
Events aren't arriving — check that the webhook is Active and uses the right Trigger event, then click Send sample payload. The Last attempt column shows the last time a delivery or sample payload succeeded; failed attempts don't update it.
Zapier receives the event, but your app doesn't update — the problem is after Tourseta. Open the Zap's history in Zapier and check its filters and field mappings.
You need the delivery history for a webhook — contact support.
Can I skip Zapier and connect an app directly?
Can I skip Zapier and connect an app directly?
You can point the Endpoint URL straight at another service only if that service accepts a raw inbound webhook, works with HTTP Basic auth (or no auth), and can read Tourseta's payload shape. Most email and CRM tools expect their own format and a different type of authentication, so an automation tool like Zapier or Make is needed to translate between them.




