url property of a booking nullable when its status is 'draft'phoneNumber property of a customer nullable instead of empty string when not knownVAT properties remain available for backward compatibility but are deprecated./v1/tax-rates endpoint and deprecated the /v1/vat-rates endpointThe Let's Book API follows REST standards. Send parameters as JSON body or form-encoded data.
All responses return in JSON format. Every endpoint starts with https://api.letsbook.app.
Download the OpenAPI specification at https://support.letsbook.app/api.yaml.
GET requests never modify data and are idempotent. POST/PUT/DELETE requests are not. We use HTTP status codes to communicate errors.
Get your API key from the dashboard. Use it as a Bearer Authentication token. The API key is case-sensitive.
Most tools support Bearer Authentication natively. If yours doesn't, construct the
Authorization header manually: Authorization: Bearer <API_KEY>.
When your API key is ac11f67b-1dcb-460c-aff3-f1ef35cd3c1c|pMKSUHcHXd7706zhHwBE040alh1BSY9RPsu6ZQ04,
configure the header like this:
Authorization: Bearer ac11f67b-1dcb-460c-aff3-f1ef35cd3c1c|pMKSUHcHXd7706zhHwBE040alh1BSY9RPsu6ZQ04
If your API user has access to multiple tenants, include the X-Tenant-Id
header with every request. Without this header, we default to your primary tenant.
Use the /me endpoint to retrieve all tenants you can access. Then use the id of your
desired tenant. For example, if the ID is 9366b305-e315-4abe-ba8a-90e326ad8e81,
configure the header like this:
X-Tenant-Id: 9366b305-e315-4abe-ba8a-90e326ad8e81
Retrieves information about the current user. Primarily used to verify that authentication is functioning as expected.
Retrieves user information for the currently authenticated user.
required | object Information regarding the authenticated API user | ||||||
| |||||||
{- "data": {
- "description": "My app API key",
- "currentTenant": {
- "id": "1e48f449-d111-4323-87c5-eeab2d2ceb91",
- "name": "My tenant",
- "slug": "my-tenant"
}, - "tenants": [
- {
- "id": "1e48f449-d111-4323-87c5-eeab2d2ceb91",
- "name": "Barry's boats",
- "slug": "barrys-boats"
}, - {
- "id": "e940aa11-0e7e-4267-9233-d5c78977e28e",
- "name": "Crazy canoes",
- "slug": "crazy-canoes"
}
]
}
}A dock serves as the pickup and return point for boats. Boats can be moored at docks for specified periods of time.
Returns a list of your docks. The docks are sorted by the order as defined in the dashboard. The response is not paginated.
required | Array of objects (Dock) | ||||||||||||
Array
| |||||||||||||
{- "data": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Amsterdam East",
- "slug": "amsterdam-east",
- "address": {
- "country": "NL",
- "line1": "Church street 1",
- "line2": "Apt. 1",
- "city": "Amsterdam",
- "postalCode": "1071XA",
- "stateOrRegion": "NY",
- "gps": {
- "lat": 52.37,
- "long": 4.89
}, - "timeZoneName": "Europe/Amsterdam"
}, - "media": [
- {
- "id": "a74c7c12-90f1-45ab-88ca-d2a63a424ed1",
- "type": "image",
- "variants": {
}
}
], - "opensAt": "2022-02-08T09:30:26+0000"
}
]
}Retrieve a Dock object by ID.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the dock |
required | object (Dock) The location from where boats can be picked up | ||||||||||||
| |||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Amsterdam East",
- "slug": "amsterdam-east",
- "address": {
- "country": "NL",
- "line1": "Church street 1",
- "line2": "Apt. 1",
- "city": "Amsterdam",
- "postalCode": "1071XA",
- "stateOrRegion": "NY",
- "gps": {
- "lat": 52.37,
- "long": 4.89
}, - "timeZoneName": "Europe/Amsterdam"
}, - "media": [
- {
- "id": "a74c7c12-90f1-45ab-88ca-d2a63a424ed1",
- "type": "image",
- "variants": {
}
}
], - "opensAt": "2022-02-08T09:30:26+0000"
}
}A boat model represents a type of boat. Many boat rental companies maintain multiple interchangeable boats of the same type, which we refer to as a boat model.
Returns a list of boat models. The boat models are sorted by the order as defined in the dashboard. The response is not paginated.
required | Array of objects (BoatModel) | ||||||||||||||||
Array
| |||||||||||||||||
{- "data": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Outboard boat",
- "slug": "outboard-boat",
- "capacity": 2,
- "shortDescription": "A short description",
- "description": "A longer description",
- "media": [
- {
- "id": "a74c7c12-90f1-45ab-88ca-d2a63a424ed1",
- "type": "image",
- "variants": {
}
}
], - "categoryId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
}
]
}Retrieve a BoatModel object by ID.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the boat model |
required | object (BoatModel) A boat model | ||||||||||||||||
| |||||||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Outboard boat",
- "slug": "outboard-boat",
- "capacity": 2,
- "shortDescription": "A short description",
- "description": "A longer description",
- "media": [
- {
- "id": "a74c7c12-90f1-45ab-88ca-d2a63a424ed1",
- "type": "image",
- "variants": {
}
}
], - "categoryId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
}
}Retrieves a comprehensive list of your customers.
| page | integer Default: 1 Example: page=1 The page number to fetch. |
required | Array of objects (Customer) |
required | object (Pagination) Pagination to iterate large result sets. |
{- "data": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
], - "pagination": {
- "totalItems": 1337,
- "perPage": 100,
- "page": 1,
- "totalPages": 14,
- "previousPageUrl": null
}
}Registers a new customer in the system.
| customerTypeId required | string <uuid> Customer type ID |
| givenName required | string First name of the customer |
| familyName required | string Last name of the customer |
| emailAddress required | string <email> Email address of the customer |
| phoneNumber | string Phone number of the customer in E.164 format |
| preferredLocale | string Preferred locale of the customer in |
| password | string Password of the customer. Should be left empty if you don't want to change the password. It will be set to a random password if you don't specify one when creating a new customer. Note: The password must be at least 8 characters long. |
| addAliasOnDuplicate | boolean Default: false If set to true, the customer will be added as an alias to the existing customer with the same email address. If set to false, an error will be returned if the customer already exists. |
| notifyCustomer | boolean Default: false If set to true, the customer will receive an email containing their login credentials. |
required | object (Customer) Data of the customer | ||||||||||||||||||
| |||||||||||||||||||
{- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "password": "correcthorsebatterystaple",
- "addAliasOnDuplicate": false,
- "notifyCustomer": true
}{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Returns a list of all customers matching the query.
| emailAddress | string <email> Example: emailAddress=john.doe@example.com The email address to search for |
| page | integer Default: 1 Example: page=1 The page number to fetch. |
required | Array of objects (Customer) |
required | object (Pagination) Pagination to iterate large result sets. |
{- "data": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
], - "pagination": {
- "totalItems": 1337,
- "perPage": 100,
- "page": 1,
- "totalPages": 14,
- "previousPageUrl": null
}
}Retrieve a Customer object by ID.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the customer |
required | object (Customer) Data of the customer | ||||||||||||||||||
| |||||||||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Update an existing customer.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the customer |
| customerTypeId | string <uuid> Customer type ID |
| givenName | string First name of the customer |
| familyName | string Last name of the customer |
| emailAddress | string <email> Email address of the customer |
| phoneNumber | string Phone number of the customer in E.164 format |
| preferredLocale | string Preferred locale of the customer in |
| password | string Password of the customer. Should be left empty if you don't want to change the password. It will be set to a random password if you don't specify one when creating a new customer. Note: The password must be at least 8 characters long. |
required | object (Customer) Data of the customer | ||||||||||||||||||
| |||||||||||||||||||
{- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "password": "correcthorsebatterystaple"
}{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Returns a list of all customer types. The response is not paginated.
required | Array of objects (CustomerType) | ||||||||
Array
| |||||||||
{- "data": [
- {
- "id": "d1f59518-9be6-441f-8ce8-c810d1d9b332",
- "name": "Premium member",
- "abbreviation": "PM",
- "type": "custom"
}
]
}A booking can be created by customers or staff members. It represents a reservation for a specific boat model, to be picked up at a designated time from a specific dock and returned at a specified time to that same dock.
Retrieves a comprehensive list of all bookings.
| page | integer Default: 1 Example: page=1 The page number to fetch. |
| status | string Enum: "draft" "expired" "option" "confirmed" "completed" "canceled" "all" Display only bookings with the specified status |
| updatedAfter | string <date-time> Example: updatedAfter=2022-01-01T00:00:00Z Display only bookings updated after the specified date and time in ISO 8601 format |
required | Array of objects (Booking) |
required | object (Pagination) Pagination to iterate large result sets. |
{- "data": [
- {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "confirmed",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z"
}
], - "pagination": {
- "totalItems": 1337,
- "perPage": 100,
- "page": 1,
- "totalPages": 14,
- "previousPageUrl": null
}
}Creates a new booking with confirmed status.
| customerId required | string <uuid> ID of the customer |
| dockId required | string <uuid> ID of the dock |
| boatModelId required | string <uuid> ID of the boat model |
| pickup required | string <date-time> Pickup date and time in ISO 8601 format |
| return required | string <date-time> Return date and time in ISO 8601 format |
| boats | integer Default: 1 Number of boats booked |
| passengers | integer Default: 1 Number of passengers including the customer who booked the boat |
| paid | boolean Default: true If set to true, the booking will be marked as paid by adding a cash payment equal to the unpaid costs. It will be ignored when the booking is already fully paid. Note that slot based pricing may fail to calculate the correct amount as the slot is not known when the booking is created using the API. |
| createdAt | string <date-time> The time this booking was first created in ISO 8601 format |
| notifyCustomer | boolean Default: false If set to true, the customer will receive a booking confirmation email. |
| includePaymentLink | boolean Default: true Whether or not the booking confirmation email should contain a payment request link. Only applicable if notifyCustomer is true. |
required | object | ||
| |||
{- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "paid": true,
- "createdAt": "2022-01-01T00:00:00Z",
- "notifyCustomer": false,
- "includePaymentLink": true
}{- "data": {
- "bookingId": "4a974b2a-2d35-4313-a2e9-5aee4e83601f"
}
}Retrieve a booking with its financial and customer details.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the booking |
required | object (BookingExtended) Comprehensive booking details | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
{- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "confirmed",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Update an existing booking.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the booking |
Update booking parameters. None of the fields are required.
| customerId | string <uuid> ID of the customer |
| dockId | string <uuid> ID of the dock |
| boatModelId | string <uuid> ID of the boat model |
| pickup | string <date-time> Pickup date and time in ISO 8601 format |
| return | string <date-time> Return date and time in ISO 8601 format |
| boats | integer Default: 1 Number of boats booked |
| passengers | integer Default: 1 Number of passengers including the customer who booked the boat |
| paid | boolean Default: true If set to true, the booking will be marked as paid by adding a cash payment equal to the unpaid costs. It will be ignored when the booking is already fully paid. Note that slot based pricing may fail to calculate the correct amount as the slot is not known when the booking is created using the API. |
| createdAt | string <date-time> The time this booking was first created in ISO 8601 format |
| notifyCustomer | boolean Default: false If set to true, the customer will receive a booking updated email. |
required | object | ||
| |||
{- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "paid": true,
- "createdAt": "2022-01-01T00:00:00Z",
- "notifyCustomer": false
}{- "data": {
- "bookingId": "4a974b2a-2d35-4313-a2e9-5aee4e83601f"
}
}Retrieve the booking's add-ons order. Will return a 404 when no order exists.
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the booking |
required | object (OrderExtended) Order details containing one or more products (add-ons) booked alongside the boat trip. | ||||||||||||||
| |||||||||||||||
{- "data": {
- "bookingId": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "plannedForDeliveryAt": "2025-11-18T12:00:00+00:00",
- "currency": "EUR",
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalTax": 284,
- "orderLines": [
- {
- "productId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "description": "Coca-Cola original can (12 fl oz)",
- "quantity": 3,
- "priceIncludingTax": 1750,
- "priceExcludingTax": 1466,
- "tax": 284,
- "taxRateId": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9"
}
]
}
}A tax rate is a named percentage used to calculate taxes on add-ons, costs, and other charges.
Returns a list of tax rates used in costs, add-ons, etc. The response is not paginated.
required | Array of objects (TaxRate) | ||||||||
Array
| |||||||||
{- "data": [
- {
- "id": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9",
- "name": "NL High",
- "percentage": 21,
- "readOnly": false
}
]
}Deprecated. Use the GET /v1/tax-rates endpoint instead.
required | Array of objects (TaxRate) | ||||||||
Array
| |||||||||
{- "data": [
- {
- "id": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9",
- "name": "NL High",
- "percentage": 21,
- "readOnly": false
}
]
}Availability represents the availability of a boat model at a specific dock. Availability is calculated by subtracting the number of bookings for a specific boat model at a specific dock from the total number of boats available at that dock.
Get availability for a boat model at a dock during a date/time period.
| dockId required | string <uuid> Example: dockId=878f1403-9677-482d-a09d-392004de8c46 The dock ID |
| boatModelId required | string <uuid> Example: boatModelId=2d2071f6-0a1d-4aca-a49d-4d112b141c44 The boat model ID |
| period required | string <date-time-period> Example: period=2022-01-01T00:00:00Z/2022-01-03T00:00:00Z The period of time to check availability |
required | object The availability result |
required | object The parameters used to calculate availability. Can be used to verify the query parameters were parsed correctly. |
{- "data": {
- "lowestAvailability": 4,
- "perMoment": [
- {
- "moment": "2022-01-01T00:00:00Z",
- "availability": 4
}
]
}, - "parameters": {
- "dockId": "878f1403-9677-482d-a09d-392004de8c46",
- "boatModelId": "2d2071f6-0a1d-4aca-a49d-4d112b141c44",
- "period": {
- "start": "2022-01-01T00:00:00Z",
- "end": "2022-01-03T00:00:00Z"
}
}
}A webhook is a way for one system to instantly notify another when something happens. Instead of your app constantly polling our API, Let's Book sends an HTTP POST request to your specified URL whenever an event occurs. See webhook events for details on what we're sending. We consider the webhook call successful when your server returns a response with a 2xx status code.
NOTE: The webhook endpoints are currently in private beta
Retrieves all webhooks for the current tenant
required | Array of objects (Webhook) | ||||||||||||||
Array
| |||||||||||||||
{- "data": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": true
}
]
}Add a new webhook endpoint to be called when specific events happen
| name required | string Name of the webhook |
| url required | string <uri> URL (endpoint) that will be called when one of the webhook's events occur. |
| events required | Array of strings (webhookEvent) non-empty Items Enum: "booking.drafted" "booking.confirmed" "booking.details_updated" "booking.labels_updated" "booking.completed" "booking.canceled" "booking.expired" "order.confirmed" "order.lines_updated" "order.canceled" "customer.anonymized" "customer.registered" "customer.updated" "customer.removed" Events to get notified about |
| tenantIds | Array of strings non-empty By default, you will receive updates on events of all tenants your API key has access to when creating this webhook. You can provide an explicit list of tenant IDs this webhook applies to. |
required | object (Webhook) Webhook | ||||||||||||||
| |||||||||||||||
{- "name": "Zapier booking notifications",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
]
}{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": true
}
}Retrieve details of a specific webhook
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the webhook |
required | object (Webhook) Webhook | ||||||||||||||
| |||||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": true
}
}Update an existing webhook
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the webhook |
Update webhook parameters. None of the fields are required.
| name | string Name of the webhook |
| url | string <uri> URL to send the webhook to |
| events | Array of strings (webhookEvent) non-empty Items Enum: "booking.drafted" "booking.confirmed" "booking.details_updated" "booking.labels_updated" "booking.completed" "booking.canceled" "booking.expired" "order.confirmed" "order.lines_updated" "order.canceled" "customer.anonymized" "customer.registered" "customer.updated" "customer.removed" Events to get notified about |
| tenantIds | Array of strings non-empty By default, you will receive updates on events of all tenants your API key has access to when creating this webhook. You can provide an explicit list of tenant IDs this webhook applies to. |
required | object (Webhook) Webhook | ||||||||||||||
| |||||||||||||||
{- "name": "Zapier booking notifications",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
]
}{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": true
}
}Delete a webhook
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the webhook |
| message | string Result message |
{- "message": "Webhook subscription deleted."
}Enable a webhook to start receiving notifications
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the webhook |
required | object (Webhook) Webhook | ||||||||||||||
| |||||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": true
}
}Disable a webhook to stop receiving notifications
| id required | string Example: 8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278 ID of the webhook |
required | object Webhook | ||||||||||||||
| |||||||||||||||
{- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Receive booking updates",
- "secret": "375cc73bb506dc31adff0612ec1e86dda34428951959dd3476727a7944474f90",
- "events": [
- "booking.confirmed",
- "booking.canceled"
], - "tenantIds": [
- "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278"
], - "enabled": false
}
}A webhook event payload is a JSON object that contains event data for your app to process. When a relevant event occurs, we'll send the payload using a POST request to your webhook endpoint. Here's a list of event details on what we're sending.
NOTE: The webhook events are currently in private beta
Triggered when a booking is created. This happens when a customer fills out the booking form or when an admin creates a booking in the dashboard. Draft bookings reserve availability but must be confirmed on time.
| event required | string Value: "booking.drafted" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.drafted",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "draft",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when a booking is confirmed. This happens when the customer completes payment, converting the draft booking into a confirmed booking. An admin can also manually confirm a booking in the dashboard.
| event required | string Value: "booking.confirmed" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.confirmed",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "confirmed",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when a booking is completed. This happens when the return date time has passed and the trip has ended (when the boat was switched off).
| event required | string Value: "booking.completed" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.completed",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "completed",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when a booking is canceled. Either the customer or an admin can cancel a booking. Once canceled, a booking cannot change to another status.
| event required | string Value: "booking.canceled" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.canceled",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "canceled",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when a booking expires. This happens when the draft booking isn't paid in time.
| event required | string Value: "booking.expired" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.expired",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "expired",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when booking details are updated. This happens when the booking dates, time, boat, or other details change.
| event required | string Value: "booking.details_updated" |
| occurredOn required | string <date-time> |
required | object (BookingExtended) Comprehensive booking details |
{- "event": "booking.details_updated",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "reference": "BK8J3L",
- "status": "confirmed",
- "customerId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "dockId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "boatModelId": "3462e0cd-a446-49b7-bf18-b5e1c78098ca",
- "pickup": "2022-01-01T00:00:00Z",
- "return": "2022-01-03T00:00:00Z",
- "boats": 1,
- "passengers": 1,
- "createdAt": "2022-01-01T00:00:00Z",
- "updatedAt": "2022-01-01T00:00:00Z",
- "customer": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}, - "financialDetails": {
- "psp": "stripe",
- "currency": "EUR",
- "balance": 0,
- "applicationFee": {
- "amount": 35,
- "currency": "EUR"
}, - "costs": {
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalIncludingVat": 1750,
- "totalExcludingVat": 1466,
- "lines": [
- {
- "id": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "description": "Crate of beer (24 bottles)",
- "type": "pricing_structure",
- "taxRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingTax": 1750,
- "amountExcludingTax": 1446,
- "vatRateId": "3d0ed9eb-95d3-4e21-a389-2218adab7850",
- "amountIncludingVat": 1750,
- "amountExcludingVat": 1446
}
]
}, - "payments": {
- "total": 1750,
- "lines": [
- {
- "id": "d5a81709-8922-4c81-a854-c2c0c487b903",
- "source": "cash",
- "amount": 1750,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}, - "deposits": {
- "total": 15000,
- "lines": [
- {
- "id": "cbfa2986-7759-4d52-9b6e-2fa7fbdb54d2",
- "description": "Deposit for booking \\#H8K13L",
- "amount": 15000,
- "createdAt": "2022-01-01T12:00:00Z"
}
]
}
}
}
}Triggered when a label is added or removed from a booking
| event required | string Value: "booking.labels_updated" |
| occurredOn required | string <date-time> |
required | object |
{- "event": "booking.labels_updated",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "bookingId": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "current": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Special request",
- "description": "Short description of what the label is used for"
}
], - "changes": {
- "added": [
- {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "name": "Special request",
- "description": "Short description of what the label is used for"
}
], - "removed": [ ]
}
}
}Triggered when an order is confirmed. This happens when the customer proceeds to the next step after compiling their draft order.
| event required | string Value: "order.confirmed" |
| occurredOn required | string <date-time> |
required | object (OrderExtended) Order details containing one or more products (add-ons) booked alongside the boat trip. |
{- "event": "order.confirmed",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "bookingId": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "plannedForDeliveryAt": "2025-11-18T12:00:00+00:00",
- "currency": "EUR",
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalTax": 284,
- "orderLines": [
- {
- "productId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "description": "Coca-Cola original can (12 fl oz)",
- "quantity": 3,
- "priceIncludingTax": 1750,
- "priceExcludingTax": 1466,
- "tax": 284,
- "taxRateId": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9"
}
]
}
}Triggered when an order is updated. This happens when a product is added or removed, or when the quantity of an existing product changes.
| event required | string Value: "order.lines_updated" |
| occurredOn required | string <date-time> |
required | object (OrderExtended) Order details containing one or more products (add-ons) booked alongside the boat trip. |
{- "event": "order.lines_updated",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "bookingId": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "plannedForDeliveryAt": "2025-11-18T12:00:00+00:00",
- "currency": "EUR",
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalTax": 284,
- "orderLines": [
- {
- "productId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "description": "Coca-Cola original can (12 fl oz)",
- "quantity": 3,
- "priceIncludingTax": 1750,
- "priceExcludingTax": 1466,
- "tax": 284,
- "taxRateId": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9"
}
]
}
}Triggered when an order is canceled.
| event required | string Value: "order.canceled" |
| occurredOn required | string <date-time> |
required | object (OrderExtended) Order details containing one or more products (add-ons) booked alongside the boat trip. |
{- "event": "order.canceled",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "bookingId": "551ceb1c-6fbc-479b-819d-734f4044eca2",
- "plannedForDeliveryAt": "2025-11-18T12:00:00+00:00",
- "currency": "EUR",
- "totalIncludingTax": 1750,
- "totalExcludingTax": 1466,
- "totalTax": 284,
- "orderLines": [
- {
- "productId": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "description": "Coca-Cola original can (12 fl oz)",
- "quantity": 3,
- "priceIncludingTax": 1750,
- "priceExcludingTax": 1466,
- "tax": 284,
- "taxRateId": "d8f8feb5-b8cc-4b8e-9d5c-a9d9d9d9d9d9"
}
]
}
}Triggered when a new customer registers. This happens when a guest customer books or when a customer creates an account.
| event required | string Value: "customer.registered" |
| occurredOn required | string <date-time> |
required | object (Customer) Data of the customer |
{- "event": "customer.registered",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Triggered when the customer details are updated.
| event required | string Value: "customer.updated" |
| occurredOn required | string <date-time> |
required | object (Customer) Data of the customer |
{- "event": "customer.updated",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Triggered when a customer is anonymized. This means their details have been erased.
| event required | string Value: "customer.anonymized" |
| occurredOn required | string <date-time> |
required | object (AnonymizedCustomer) Data of the customer |
{- "event": "customer.anonymized",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "Anonymous",
- "familyName": "Anonymous",
- "fullName": "Anonymous Anonymous",
- "emailAddress": null,
- "phoneNumber": null,
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}Triggered when a customer is removed from the system.
| event required | string Value: "customer.removed" |
| occurredOn required | string <date-time> |
required | object (Customer) Data of the customer |
{- "event": "customer.removed",
- "occurredOn": "2025-11-17T18:34:11+00:00",
- "data": {
- "id": "8d159bbe-f6bc-4ddd-8c9a-6091d7ebd278",
- "customerTypeId": "a6fe15b1-8131-4f48-8082-311e0369f599",
- "givenName": "John",
- "familyName": "Doe",
- "fullName": "John Doe",
- "emailAddress": "john.doe@example.com",
- "phoneNumber": "+49123456789",
- "preferredLocale": "sv_SE",
- "registeredAt": "2025-11-17T18:34:11+00:00"
}
}