Skip to main content

Webhooks

Updated over a week ago

Webhooks are one of Hero’s most powerful features. They let your systems receive updates from Hero automatically whenever something important happens -like a new quote is created, payment is successfully added to a quote, or a quote is finalised into a confirmed booking.

💡 What is a Webhook?

A webhook lets Hero send information to your system in real time when specific events occur.

Instead of having to ask Hero for updates (a process called “polling”), Hero proactively pushes a JSON payload to a URL you provide whenever an event happens.

Think of it like Hero tapping your shoulder to say:

“Hey! Something just happened with one of your quotes—here are the details.”

For example:

  1. Hero finalises a new booking.

  2. Hero instantly notifies your app about that, by sending structured data to your webhook endpoint.

  3. Your app can then act on that data -logging it, triggering a workflow, or sending a notification.


🛠 How Webhooks Work in Hero

  1. You set up a Booking Webhook Endpoint in your Hero Company Setup screen, under the Webhooks tab (this is where Hero will send POST requests).

  2. Optionally, you can set a Webhook Secret which can be used to validate the messages received from Hero as legitimate.

  3. Hero sends a JSON payload to your webhook endpoint whenever a change is made to a quote or booking.

  4. Your application receives that data and can take action immediately.



🔔 Supported Webhook Types

At present Hero supports webhook notifications for Bookings/Quote updates only


🧩 What You Can Do With Webhooks

Webhooks make it easy to automate tasks and connect Hero with your other tools.

Use case

Example

Quote Created

Add new quote details, including pax information, to your own CRM solution

Quote Updated

Depending on what’s changed (eg Payment may have been received, or new products added/removed) you may wish to update this in your CRM. You could also trigger a workflow to email the pax to make payment if the quote is outstanding for x period of days.

Booking Finalised

Trigger a workflow based on the first event date within the booking (eg date of the first tour/activity or accommodation stay) to email the pax x days prior with a reminder to check travel plans, buy travel insurance etc.

🧩 Automation

Using Hero-triggered webhooks, you can start a process to achieve any of the above, but a lot of platforms require a higher paid plan in order to “receive” webhooks and do something useful with them. For example, Hubspot has the ability to receive a webhook directly from Hero (for example when a booking is finalised) and create corresponding records with Hubspot based on the data in the webhook. However, this functionality requires you to be on the Professional / Enterprise plan.

Alternatively you could use a third party “automation” tool, such as make.com

make.com allows you to drag and drop workflows to build automation into pretty much any platform you want, without a single line of code!

The above example takes webhook data from Hero and creates an order in Hubspot along with all relevant passenger information etc.


🛟JSON data format

An example JSON body is shown below for reference. For any other technical details or assistance with setting up Webhooks in Hero please contact our support team via the usual channels.

{

"entity_id": "DA5341",

"booking": {

"id": "DA5341",

"name": "DA5341",

"created": "2026/02/24 10:13",

"rrp": 284.36,

"levy": 0.00,

"paid": 0.0,

"payable": 284.36,

"commission": 34.12,

"commissionPercentage": 12.00,

"adjustment": 0.00,

"status": 1,

"voucherCode": null,

"stayNSWvoucherCodes": null,

"discountPercentage": null,

"discountCode": null,

"siteId": null,

"webhookUrl": null,

"bookingProducts": [{

"id": 5807937,

"productId": 40309,

"name": "Skydive Abel Tasman - 13.000 ft Tandem Skydive",

"supplierName": "INFLITE",

"dateCheckIn": "2026/02/28 15:00",

"nights": 0,

"agentReference": null,

"supplierReference": null,

"voucherNotes": null,

"pickup": "15:00 Motueka, New Zealand",

"rrp": 284.36,

"rateCode": null,

"status": 0,

"statusName": "None",

"statusMessage": null,

"voucherStatus": 1,

"voucherStatusName": "Draft",

"paxId": ["bc3c0a05-391f-4816-b3d3-18436d1538b8"],

"paxEmail": ["[email protected]"],

"paxRoomId": [{

"paxId": "bc3c0a05-391f-4816-b3d3-18436d1538b8",

"room": 0,

"bookingProductId": 5807937

}],

"updatedPaxIds": [],

"quantity": null,

"requiredInformation": [],

"addons": [],

"payable": 284.36,

"commission": 34.12,

"commissionPercentage": 13.00,

"adjustment": 0.00

}],

"paxDetails": [{

"id": "bc3c0a05-391f-4816-b3d3-18436d1538b8",

"firstName": "Hero",

"lastName": "Test",

"email": "[email protected]",

"phoneNumber": "+61412222333"

}, {

"id": "f8320ab8-7944-43f2-a920-bd203b51984a",

"firstName": "Little",

"lastName": "Hero",

"email": "[email protected]",

"phoneNumber": "+61412222333"

}],

"referralCode": null,

"promoCode": null,

"widgetId": null,

"bookingOrigin": "unknown",

"agentName": "Support Team"

},

"entity_type": "booking",

"event_type": "created",

"event_time": "2026-02-27T01:06:06.5416606Z"

}

Did this answer your question?