ADITUS/Webhooks

Webhooks

🚀 Connect your ticket shop with your favorite apps!

Imagine your ticket shop could communicate with your CRM, accounting tools, or newsletter systems in real time — no more manual data exports required.

By connecting additional systems and services, the ADITUS Ticket Shop can be tailored even more precisely and powerfully to meet your specific needs. We focus on a range of standard use cases and integrations to enable fast and efficient implementations. For our customers, what truly matters is smooth execution and tangible results.

What are webhooks?

A webhook acts like a digital notification service. It is an excellent way to receive real-time updates about specific event-related transactions.

Webhooks instantly notify connected systems when important actions occur — for example, when a registration is completed or when a visitor checks in at an event.

Why use webhooks?

This real-time data flow enables immediate follow-up actions and highly personalized interactions with participants. By combining webhook events with your existing marketing infrastructure, you can:

  • Trigger automated campaigns

  • Update customer profiles instantly

  • Launch personalized engagement journeys at the perfect moment

Webhooks empower organizations to respond immediately to visitor behavior and seamlessly integrate event data into their existing systems. The result is timely, relevant, and data-driven interactions throughout the entire event lifecycle.

The ticket shop is built around a process-driven architecture: individual actions within the purchase or registration journey (use cases) modify the shopping cart (“cart”). These changes can be understood as events — and this is exactly where webhooks can be triggered.

In principle, webhooks can be provided for all key cart-related use cases within the shop. As soon as one of these events occurs, an HTTP POST request containing a JSON payload is sent to the configured webhook URL.

Creating Webhooks

To set up a webhook, login to WebTERP and go to Start->Interfaces->Webhooks. From there, click Webhooks, then Add webhook. Alternatively, you can create and manage a webhook through the Webhooks API. Check the API documentation for detailed information.

Webhooks require a few configuration options before you can make use of them:

Payload URL

The payload URL is the URL of the server that will receive the webhook POST requests.

Content Type

Webhooks can be delivered using different content types:

  • The application/json content type will deliver the JSON payload directly as the body of the POST request.

  • The application/x-www-form-urlencoded content type will send the JSON payload as a form parameter called payload.

Secret

Setting a webhook secret allows you to ensure that POST requests sent to the payload URL are from ADITUS. When you set a secret, you'll receive the X-ADITUS-Signature header in the webhook POST request.

Active

By default, webhook deliveries are "Active." You can choose to disable the delivery of webhook payloads by deselecting "Active."

Events

Choose which events will send payloads for this webhook. Only subscribing to the specific events you plan on handling limits the number of HTTP requests to your server. You can change the list of subscribed events anytime.

See "Webhook event payloads" for the list of available webhook events and their payloads.

Wildcard Event

To configure a webhook for all events, use the wildcard (*) character to specify the webhook events. When you add the wildcard event, we'll replace any existing events you have configured with the wildcard event and send you payloads for all supported events. You'll also automatically get any new events we might add in the future.

Testing Webhooks

You can monitor your webhook deliveries in ADITUS WebTERP, including the HTTP Request and payload as well as the response.

Recent deliveries

Every webhook has its own "Recent Deliveries" section, which lists all occurred events and whether a delivery was successful or failed. You can also identify when each delivery was attempted.

Webhook payloads

Webhook payloads are sent as HTTP Post to the Webhook URL.

User-Agent

The User-Agent for the requests will have the prefix ADITUS-Webhook. (For future use we may choose to add a suffix.)

Delivery HTTP Headers

HTTP POST payloads that are delivered to your webhook's configured URL endpoint will contain several special headers:

HeaderDescription
X-ADITUS-EventThe name of the event that triggered the webhook.
X-ADITUS-DeliveryA GUID to identify the delivery. It will be reused for subsequent redeliveries and retries of the same event.
X-ADITUS-SignatureThis header is sent if the webhook is configured with a secret. This is the HMAC hex digest of the payload JSON, and is generated using the SHA-256 hash function and the secret as the HMAC key.

Webhook payload object common properties

The common properties describes the standardized fields that are included in every webhook payload, regardless of the specific event.

KeyTypeDescription
eventstringThe name of the event that triggered the webhook.
event_idstring(UUID)The unique event id for this delivery. It will be reused for subsequent redeliveries and retries of the same event.
event_timedatetimeTimestamp when the event originally occurred.
api_urlstring (URL)The API URL of the entity that triggered the event. This is optional and may not be present for every event payload.
endpoint_urlstring (URL)The Webhook URL that this event was delivered to.
dataobjectContains the business payload of the webhook

Verifying the payload

If a secret is configured for a webhook, then each payload comes with a signed HMAC signature so that you can verify the origin of the webhook request. The secret is used as a key to sign the payload data with an HMAC key. The HMAC key is your security token, the HMAC digest is SHA-256, and the data is the raw payload JSON that is sent. The key is sent Base64 encoded via the X-ADITUS-Signature HTTP header.

Example Payload for cart.checkout

This example represents a maximum cart payload and therefore includes all fields that may occur in principle. Depending on the event type, article configuration, payment provider, registration flow, or legitimation setup, additional fields may appear or some fields may be omitted. The event-specific details are documented in the respective webhook descriptions.

This webhook event is triggered when a shopping cart has been successfully completed (checkout) and an order has been created.The event contains comprehensive information about the shopping cart, the order, the buyer, the articles (e.g. tickets), registration data, and payment processing. Further details about this webhook can be found in the “Ticket purchase and registration” section.

Headers:

  • X-webhook-secret: whk_XY000yyXXsxxxYYYxYYYYxxxXX0zzXxX

  • X-ADITUS-Event: cart.checkout

  • X-ADITUS-Delivery: 8y64d70d-x103-4185-1111-000x0103y0x0

  • User-Agent: ADITUS-Webhook

  • Host: integration.aditus.de

  • Content-Type: application/json; charset=utf-8

  • Content-Length: 2067

{
"event": "cart.checkedout",
"event_id": "8f7a6a2b-099a-4e42-b3e6-e2c6e17b4100",
"event_time": "2026-05-04T10:09:57.5122953+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/shop/v1/cart/11d0b893-17a6-48a1-bc80-dd1f7a31f880",
"endpoint_url": "https://aditus-integration.replit.app/api/webhook/receive/aditus_dev_aditus",
"data": {
"cartCheckedout": {
"orderId": "b59ebc98-9047-f111-93e7-00155d96040a",
"cartId": "11d0b893-17a6-48a1-bc80-dd1f7a31f880"
},
"cart": {
"id": "11d0b893-17a6-48a1-bc80-dd1f7a31f880",
"expiryTime": "2030-10-31T00:00:00+01:00",
"user": {
"id": "091c6fb9-11e0-ed11-93c4-00155db54d03",
"isVerified": true,
"eMail": "john@aditus.de",
"externalId1": "121323123",
"externalId2": "",
"externalId3": ""
},
"event": {
"id": "0585e1b8-24b3-f011-93e3-00155d960409",
"name": "Experience Days",
"year": "2026",
"number": "6565",
"slug": "ExperienceDays2026",
"externalId1": "51abc555-fe13-4eef-8328-feed99390ac6",
"externalId2": "",
"externalId3": ""
},
"promotionCodes": [
],
"items": [
0: {
"id": "00671313-0000-0000-0000-000000000000",
"orderId": "b59ebc98-9047-f111-93e7-00155d96040a",
"article": {
"id": "a9460868-caeb-f011-93e3-00155d960409",
"name": "DayTicket",
"internalName": "DayTicket",
"sort": 0,
"prices": [
0: {
"price": {
"price": 3.53,
"grossPrice": 4.2,
"tax": 0.67,
"taxRate": 19,
"currency": "EUR"
},
"originalPrice": {
"price": 3.53,
"grossPrice": 4.2,
"tax": 0.67,
"taxRate": 19,
"currency": "EUR"
}
}
],
"image": {
"key": "Default.OneDayTicket",
"uri": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/OneDayTicket?context=article:a9460868-caeb-f011-93e3-00155d960409&language=de&foregroundColor=#0000C0",
"type": "Icon"
},
"type": "VisitorTicket",
"ticketValidity": "None",
"articleNumber": "110",
"configuration": {
"remainingAmountDisplayMode": "None",
"remainingAmountPerTimeslotDisplayMode": "None",
"remainingAmountThresholdPercent": 0,
"showIfSoldOut": false,
"maxLengthOfDescription": 250,
"maxNumberOfTicketsPerSale": 42,
"isInvitationEmailAddressChangePossible": true,
"showBadgePreview": true
},
"articleGroup": {
"id": "44e73971-a115-ee11-93c8-00155d96040a",
"name": "Tickets",
"sort": 0,
"configuration": {
"isExclusiveAssortment": false
}
},
"externalId1": "82051273-0262-4149-82ec-74b75745b289",
"externalId2": "",
"externalId3": ""
},
"promotionCodes": [
],
"price": {
"price": 3.53,
"grossPrice": 4.2,
"tax": 0.67,
"taxRate": 19,
"currency": "EUR"
},
"registration": {
"data": {
"type": "self",
"answers": [
0: {
"isReadOnly": false,
"bindingMember": "[CRM.Persons].SalutationLookup",
"value": "Herr"
},
1: {
"isReadOnly": true,
"bindingMember": "[CRM.Persons].FirstName",
"value": "John"
},
2: {
"isReadOnly": true,
"bindingMember": "[CRM.Persons].LastName",
"value": "Snow"
},
3: {
"isReadOnly": false,
"bindingMember": "[CRM.Persons].Info1",
"value": "ADITUS GmbH"
},
4: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].CountryLookup",
"value": "DE"
},
5: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].Street",
"value": "Strasse der Nationen"
},
6: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].StreetNumber",
"value": "5"
},
7: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].PostalCode",
"value": "30539"
},
8: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].City",
"value": "Hannover"
}
],
"hasInformation": true
},
"isValid": true,
"problems": [
],
"isRequired": true,
"isPossible": true,
"types": {
"self": {
"isPossible": true,
"survey": {
"useCaseName": "Shop.Registration.Self",
"faireventId": 194,
"articleIds": [
0: 2958
]
},
"hasToBeCompletedByTicketOwnerHimself": true
},
"thirdPerson": {
"isPossible": false,
"hasToBeCompletedByTicketOwnerHimself": false
}
}
},
"legitimation": {
"isRequired": false,
"isIncomplete": false
},
"timeslots": {
"isEnabled": false,
"isValid": true,
"bookings": [
]
}
},
1: {
"id": "00654e1e-0000-0000-0000-000000000000",
"orderId": "b59ebc98-9047-f111-93e7-00155d96040a",
"article": {
"id": "b1664449-f0be-f011-93e3-00155d960409",
"name": "Season ticket",
"internalName": "Season ticket",
"description": "This ticket grants daily admission to the trade show.",
"sort": 0,
"prices": [
0: {
"price": {
"price": 13.11,
"grossPrice": 15.6,
"tax": 2.49,
"taxRate": 19,
"currency": "EUR"
},
"originalPrice": {
"price": 13.11,
"grossPrice": 15.6,
"tax": 2.49,
"taxRate": 19,
"currency": "EUR"
}
}
],
"image": {
"key": "Default.OneDayTicket",
"uri": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/OneDayTicket?context=article:b1664449-f0be-f011-93e3-00155d960409&language=de&foregroundColor=#0000C0",
"type": "Icon"
},
"type": "VisitorTicket",
"ticketValidity": "MultipleDays",
"articleNumber": "111",
"configuration": {
"remainingAmountDisplayMode": "None",
"remainingAmountPerTimeslotDisplayMode": "None",
"remainingAmountThresholdPercent": 0,
"showIfSoldOut": false,
"maxLengthOfDescription": 250,
"maxNumberOfTicketsPerSale": 42,
"isInvitationEmailAddressChangePossible": true,
"showBadgePreview": true
},
"articleGroup": {
"id": "44e73971-a115-ee11-93c8-00155d96040a",
"name": "Tickets",
"sort": 0,
"configuration": {
"isExclusiveAssortment": false
}
},
"externalId1": "658ea375-bccb-48f3-b6e8-df0ae94f91f0",
"externalId2": "",
"externalId3": ""
},
"promotionCodes": [
],
"price": {
"price": 13.11,
"grossPrice": 15.6,
"tax": 2.49,
"taxRate": 19,
"currency": "EUR"
},
"registration": {
"data": {
"type": "thirdPerson",
"answers": [
0: {
"isReadOnly": false,
"bindingMember": "[CRM.Persons].FirstName",
"value": "Johnny"
},
1: {
"isReadOnly": false,
"bindingMember": "[CRM.Persons].LastName",
"value": "Summer"
},
2: {
"isReadOnly": false,
"bindingMember": "EMail",
"value": "summer@aditus.de"
},
3: {
"isReadOnly": false,
"bindingMember": "[CRM.PartyAddresses].CountryLookup",
"value": "DE"
}
],
"hasInformation": true
},
"isValid": true,
"problems": [
],
"isRequired": false,
"isPossible": false,
"types": {
"self": {
"isPossible": false,
"hasToBeCompletedByTicketOwnerHimself": true
},
"thirdPerson": {
"isPossible": false,
"hasToBeCompletedByTicketOwnerHimself": true
}
}
},
"legitimation": {
"isRequired": false,
"isIncomplete": false
},
"timeslots": {
"isEnabled": true,
"isValid": true,
"minimumNumberOfBookings": 0,
"maximumNumberOfBookings": 0,
"bookings": [
]
}
}
],
"totals": [
0: {
"original": {
"price": 16.64,
"grossPrice": 19.8,
"tax": 3.16,
"taxRate": 19,
"currency": "EUR"
},
"price": 16.64,
"grossPrice": 19.8,
"tax": 3.16,
"taxRate": 19,
"currency": "EUR"
}
],
"isImmutable": false,
"isPaymentImmutable": true,
"isLegitimationImmutable": true,
"isRegistrationImmutable": false,
"isAmountImmutable": true,
"isPendingPayment": false,
"isRegistrationOnly": false,
"isRegistrationRequired": true,
"isLegitimationRequired": false,
"isPaymentRequired": true,
"paymentProvider": {
"expiresAt": "2026-05-04T11:09:32.091+02:00",
"redirectUrl": "https://test.saferpay.com/vt2/Api/SharedThreeDS/404227/17808840/37624zz3zcf0xnujc0k6vhl77",
"redirectRequired": true,
"transactionToken": "AOO07rbWIKC6vA2nn94YASzhv17A",
"isExpressCheckoutInitialized": false,
"id": "210f6011-343d-ee11-93cf-00155d960409",
"name": "Kreditkarte",
"paymentMethods": [
0: {
"methodType": "Mastercard"
},
1: {
"methodType": "Visa"
},
2: {
"methodType": "Amex"
}
],
"configuration": {
"saferpayFieldsUrl": "https://test.saferpay.com/Fields/404227",
"saferpayFieldsLibrary": "https://test.saferpay.com/Fields/lib/1/saferpay-fields.js",
"saferpayFieldsAccessToken": "56e2915d-3029-427b-a09f-e3af9b8e5029"
},
"sort": 0,
"isDefault": true,
"isExpressCheckoutSupported": false
},
"buyerPerson": {
"email": "john@aditus.de",
"firstName": "John",
"lastName": "Snow",
"company": "ADITUS GmbH",
"nationality": "DE",
"salutation": "Herr",
"vatId": "0014",
"address": {
"street": "Strasse der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover",
"country": "DE"
},
"isPrefilled": true,
"surveyId": {
"useCaseName": "Shop.MissingBuyer",
"faireventId": 194,
"articleIds": [
]
},
"isValid": true
},
"order": {
"id": "b59ebc98-9047-f111-93e7-00155d96040a",
"orderDate": "2026-05-04T10:09:48.7419754",
"number": "6565-2026-6565622626"
},
"status": "Completed",
"culture": "de",
"termsOfService": [
0: {
"uniqueId": "4777d894-1751-44a7-9d96-57a4479e05a0",
"displayOrder": 1,
"version": "1.0",
"content": "Ich akzeptiere die <a class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; href=\"https://dev.aditus.de/ADITUS-DEV-0_vNextShop/Legal/GeneralTerms\" target=\"_blank\" rel=\"noopener noreferrer\">Allgemeinen Geschäftsbedingungen</a>",
"consentPolicy": "Mandatory",
"isApproved": true,
"countries": [
],
"reconfirmationRequired": false
},
1: {
"uniqueId": "8abe7819-320c-444d-82df-9efc73e7594d",
"displayOrder": 50,
"version": "1.0",
"content": "<div class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>\r\n Diese Umgebung ist ausschließlich für <strong class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>Dev-0-Tests</b> bestimmt. \r\n Die Nutzung auf lokalen oder produktiven Systemen ist <strong class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>strengstens untersagt</b>.&#013;\r\n <small>Frontier Labs haftet nicht für fehlerhafte Builds, Datenverlust oder versehentliche Risse im Raum-Zeit-Kontinuum.</small>\r\n</div>",
"consentPolicy": "Mandatory",
"isApproved": true,
"countries": [
],
"reconfirmationRequired": true
},
2: {
"uniqueId": "a25c56b6-6ce6-4be8-ab46-a25d707ff7ba",
"displayOrder": 99,
"version": "1.0",
"content": "Ausführliche Informationen darüber, wie Ihre persönlichen Daten verwendet werden, finden Sie in unserem <a class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; href=\"https://dev.aditus.de/ADITUS-DEV-0_vNextShop/Legal/Privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Datenschutzhinweis</a>",
"consentPolicy": "None",
"isApproved": false,
"countries": [
],
"reconfirmationRequired": false
}
]
}
}
}

Fields in detail:

The following tables describe the fields of the cart.checkedout webhook payload in detail.
The example values are taken from a sample payload and are intended to illustrate the structure and meaning of the individual fields. Depending on the concrete checkout scenario, some fields may be optional or only present in specific contexts.

cartCheckeout

FieldTypeDescriptionExample
orderIdString (UUID)ID of the order created during checkoutb59ebc98-9047-f111-93e7-00155d96040a
cartIdString (UUID)ID of the checked-out cart11d0b893-17a6-48a1-bc80-dd1f7a31f880

cart – General cart information

FieldTypeDescriptionExample
idString (UUID)Cart ID11d0b893-17a6-48a1-bc80-dd1f7a31f880
expiryTimeDate/TimeCart expiration timestamp2030-10-31T00:00:00+01:00
userObjectDetails of the user associated with the cart.see details below in user description
eventObjectDetails of the event added to the cartsee details below in event description
promotionCodesArrayList of applied promotion/discount codes (empty at creation)[]
itemsArrayList of cart items/positions (empty at creation)see details below in items
totalsArrayAggregated cart total valuessee details below in totals
isImmutableBooleanIndicates if the cart can still be modifiedfalse
isPaymentImmutableBooleanIndicates if the payment details can still be changedtrue
isLegitimationImmutableBooleanIndicates whether legitimation data can still be changedtrue
isRegistrationImmutableBooleanIndicates whether registration data can still be changedfalse
isAmountImmutableBooleanIndicates whether the quantity/amount can still be changedtrue
isPendingPaymentBooleanIndicates whether the payment is still pendingfalse
isRegistrationOnlyBooleanIndicates if registration is the only requirementfalse
isRegistrationRequiredBooleanIndicates whether registration is requiredtrue
isLegitimationRequiredBooleanIndicates whether legitimation is requiredfalse
isPaymentRequiredBooleanIndicates whether payment is requiredtrue
paymentProviderObjectDetails of the selected payment providersee details below in paymentProvider
buyerPersonObjectBuyer information associated with the ordersee details below in buyerPerson
orderObjectDetails of the created ordersee details below in order
statusStringCurrent cart/order statusCompleted
cultureStringLanguage/culture context of the cartde
termsOfServiceArrayList of terms, policies, and consent entries shown during checkoutsee details below in termsOfService

user

FieldTypeDescriptionExample
idString (UUID)Internal user ID091c6fb9-11e0-ed11-93c4-00155db54d03
isVerifiedBooleanIndicates whether the user account is verifiedtrue
eMailStringEmail address of the userjohn@aditus.de
externalId1..3StringOptional external identifier 1..3121323123

event - Trade Show

FieldTypeDescriptionExample
idString (UUID)Event IDf2e25737-4990-ee11-93cf-00155d960409
nameStringEvent nameExperience Days
yearStringEvent year2026
numberStringInternal event number01
slugStringURL key of the evented24
externalId1..3StringOptional external identifier 1..3SAP event ID

items (Cart items)

Each item represents a purchased product (e.g., a ticket).

FieldTypeDescriptionExample
idStringUnique cart item ID00671313-0000-0000-0000-000000000000
orderIdString (UUID)ID of the related orderb59ebc98-9047-f111-93e7-00155d96040a
articleObjectDetails of the article/ticketsee details below in article
promotionCodesArrayPromotion codes applied to the cart item[]
priceObjectFinal price details of the cart itemsee details below in item price
registrationObjectRegistration details for the ticket holdersee details below in registration
legitimationObjectLegitimation state of the itemsee details below in legitimation
timeslotsObjectTimeslot selection details for the itemsee details below in timeslots

article (items[])

FieldTypeDescriptionExample
idString (UUID)Article IDa9460868-caeb-f011-93e3-00155d960409
nameStringDisplay name of the articleDayTicket
internalNameStringInternal article nameDayTicket
descriptionStringDescription text of the article (if available)This ticket grants daily admission to the trade show.
sortIntegerSort order of the article0
pricesArrayList of available article pricessee details below in article prices
imageObjectImage information of the articlesee details below in article image
typeStringTechnical article typeVisitorTicket
ticketValidityStringValidity type of the ticketNone
articleNumberStringInternal or business article number110
configurationObjectArticle configuration settingssee details below in article configuration
articleGroupObjectGroup information of the articlesee details below in articleGroup
externalId1..3StringOptional external article identifier 1..382051273-0262-4149-82ec-74b75745b289

article prices

FieldTypeDescriptionExample
priceObjectActual calculated pricesee details below
originalPriceObjectOriginal price before discounts/adjustmentssee details below

article prices.price / article prices.originalPrice

FieldTypeDescriptionExample
priceNumberNet price3.53
grossPriceNumberGross price including taxes4.2
taxNumberTax amount0.67
taxRateNumberTax rate in percent19
currencyStringCurrency codeEUR

article image

FieldTypeDescriptionExample
keyStringTechnical image keyDefault.OneDayTicket
uriString (URL)Image URLhttps://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/OneDayTicket?...
typeStringImage typeIcon

article configuration

FieldTypeDescriptionExample
remainingAmountDisplayModeStringDefines how remaining quantities are displayedNone
remainingAmountPerTimeslotDisplayModeStringDefines how remaining quantities per timeslot are displayedNone
remainingAmountThresholdPercentNumberThreshold percentage for remaining quantities0
showIfSoldOutBooleanIndicates whether the article is shown even if sold outfalse
maxLengthOfDescriptionIntegerMaximum description length250
maxNumberOfTicketsPerSaleIntegerMaximum number of tickets per sale42
isInvitationEmailAddressChangePossibleBooleanIndicates whether changing the invitation email is allowedtrue
showBadgePreviewBooleanIndicates whether a badge preview is showntrue

articleGroup

FieldTypeDescriptionExample
idString (UUID)Article group ID44e73971-a115-ee11-93c8-00155d96040a
nameStringName of the article groupTickets
sortIntegerSort order of the article group0
configurationObjectArticle group configurationsee details below

articleGroup.configuration

FieldTypeDescriptionExample
isExclusiveAssortmentBooleanIndicates whether the assortment is exclusivefalse

item price

FieldTypeDescriptionExample
priceNumberNet item price3.53
grossPriceNumberGross item price including taxes4.2
taxNumberTax amount0.67
taxRateNumberTax rate in percent19
currencyStringCurrency codeEUR

registration

FieldTypeDescriptionExample
dataObjectRegistration data entered for the itemsee details below in registration.data
isValidBooleanIndicates whether the registration is validtrue
problemsArrayList of validation problems[]
isRequiredBooleanIndicates whether registration is mandatorytrue
isPossibleBooleanIndicates whether registration is possibletrue
typesObjectAvailable registration modessee details below in registration.types

registration.data

FieldTypeDescriptionExample
typeStringRegistration type used for the itemself
answersArrayList of submitted registration answerssee details below in registration answers
hasInformationBooleanIndicates whether registration information is presenttrue

registration answers

FieldTypeDescriptionExample
isReadOnlyBooleanIndicates whether the answer field is read-onlyfalse
bindingMemberStringTechnical binding name of the answer field[CRM.Persons].SalutationLookup
valueStringSubmitted value of the answer fieldHerr

registration.types.self

FieldTypeDescriptionExample
isPossibleBooleanIndicates whether self-registration is possibletrue
surveyObjectSurvey configuration for self-registrationsee details below
hasToBeCompletedByTicketOwnerHimselfBooleanIndicates whether the ticket owner must complete the registration personallytrue

registration.types.self.survey

FieldTypeDescriptionExample
useCaseNameStringTechnical survey use case nameShop.Registration.Self
faireventIdIntegerInternal fair/event ID used for the survey194
articleIdsArrayList of relevant article IDs[2958]

registration.types.thirdPerson

FieldTypeDescriptionExample
isPossibleBooleanIndicates whether third-person registration is possiblefalse
hasToBeCompletedByTicketOwnerHimselfBooleanIndicates whether the ticket owner must complete the registration personallyfalse

legitimation

FieldTypeDescriptionExample
isRequiredBooleanIndicates whether legitimation is requiredfalse
isIncompleteBooleanIndicates whether legitimation is incompletefalse

timeslots

FieldTypeDescriptionExample
isEnabledBooleanIndicates whether timeslots are enabled for the itemtrue
isValidBooleanIndicates whether the selected timeslot configuration is validtrue
minimumNumberOfBookingsIntegerMinimum number of required bookings0
maximumNumberOfBookingsIntegerMaximum number of allowed bookings0
bookingsArrayList of booked timeslots[]

Note: minimumNumberOfBookings and maximumNumberOfBookings are not present for every item, but they are part of the overall sample structure.

totals[] - Cart Totals

Each entry in the totals array contains the original and current pricing information.

original - Original Price

FieldTypeDescriptionExample
originalObjectOriginal aggregated totalssee details below
priceNumberTotal net amount16.64
grossPriceNumberTotal gross amount19.8
taxNumberTotal tax3.16
taxRateNumberTax rate19
currencyStringCurrencyEUR

totals.original

FieldTypeDescriptionExample
priceNumberOriginal aggregated net price16.64
grossPriceNumberOriginal aggregated gross price19.8
taxNumberOriginal aggregated tax amount3.16
taxRateNumberOriginal tax rate19
currencyStringCurrency codeEUR

paymentProvider

FieldTypeDescriptionExample
expiresAtDate/TimeTimestamp until the payment session is valid2026-05-04T11:09:32.091+02:00
redirectUrlString (URL)Redirect URL for the payment providerhttps://test.saferpay.com/vt2/Api/SharedThreeDS/ ...
redirectRequiredBooleanIndicates whether a redirect is required for paymenttrue
transactionTokenStringTechnical payment transaction tokenAOO07rbWIKC6vA2nn94YASzhv17A
isExpressCheckoutInitializedBooleanIndicates whether express checkout has already been initializedfalse
idString (UUID)Payment provider ID210f6011-343d-ee11-93cf-00155d960409
nameStringName of the selected payment providerKreditkarte
paymentMethodsArraySupported payment methodssee details below in paymentMethods
configurationObjectProvider-specific technical configurationsee details below in paymentProvider.configuration
sortIntegerSort order of the payment provider0
isDefaultBooleanIndicates whether this is the default payment providertrue
isExpressCheckoutSupportedBooleanIndicates whether express checkout is supportedfalse

paymentMethods

FieldTypeDescriptionExample
methodTypeStringTechnical type of the supported payment methodMastercard

paymentProvider.configuration

FieldTypeDescriptionExample
saferpayFieldsUrlString (URL)URL of the Saferpay hosted fields endpointhttps://test.saferpay.com/Fields/404227
saferpayFieldsLibraryString (URL)URL of the Saferpay JavaScript libraryhttps://test.saferpay.com/Fields/lib/1/saferpay-fields.js
saferpayFieldsAccessTokenStringAccess token for Saferpay fields integration56e2915d-3029-427b-a09f-e3af9b8e5029

buyerPerson

Contains the buyer information placeholder.

FieldTypeDescriptionExample
emailStringEmail address of the buyerjohn@aditus.de
firstNameStringFirst name of the buyerJohn
lastNameStringLast name of the buyerSnow
companyStringCompany name of the buyerADITUS GmbH
nationalityStringNationality/country code of the buyerDE
salutationStringSalutation of the buyerHerr
vatIdStringVAT ID of the buyer0014
addressObjectAddress details of the buyersee details below in buyerPerson.address
isPrefilledBooleanIndicates whether the buyer information was prefilledtrue
surveyIdObjectSurvey reference used for missing buyer datasee details below in buyerPerson.surveyId
isValidBooleanIndicates whether the buyer information is validtrue

buyerPerson.address

FieldTypeDescriptionExample
streetStringStreet nameStrasse der Nationen
houseNumberStringHouse number5
postalCodeStringPostal code30539
cityStringCityHannover
countryStringCountry codeDE

buyerPerson.surveyId

FieldTypeDescriptionExample
useCaseNameStringTechnical survey use case nameShop.MissingBuyer
faireventIdIntegerInternal fair/event ID used for the survey194
articleIdsArrayRelated article IDs[]

order

FieldTypeDescriptionExample
idString (UUID)Order IDb59ebc98-9047-f111-93e7-00155d96040a
orderDateDate/TimeTimestamp when the order was created2026-05-04T10:09:48.7419754
numberStringBusiness order number6565-2026-6565622626

termsOfService

All consent/terms entries displayed during the checkout process.

FieldTypeDescriptionExample
uniqueIdString (UUID)Unique identifier of the consent entry4777d894-1751-44a7-9d96-57a4479e05a0
displayOrderIntegerDisplay order of the consent entry1
versionStringVersion of the consent/policy1.0
contentString (HTML/Text)Content shown to the user during checkoutIch akzeptiere die Allgemeinen Geschäftsbedingungen
consentPolicyStringPolicy type of the entryMandatory
isApprovedBooleanIndicates whether the consent was approvedtrue
countriesArrayCountry restrictions for the consent entry[]
reconfirmationRequiredBooleanIndicates whether reconfirmation is requiredfalse

Subsections#sub