ADITUS/Webhooks/Ticket purchase and registration

Ticket purchase and registration

The webhooks in the Ticket Purchase and Registration area provide all the essential information to represent the complete order and registration process within your own systems. They cover the entire lifecycle of a ticket — from the creation of a cart, through payment processing, to the final registration and any subsequent modifications.

Each event is clearly defined and delivered with a structured payload object. These payloads contain all relevant details about the state of the cart, the buyer, and the transaction. This allows you to integrate webhook events directly into your workflows without repeatedly polling the API.

Events

The webhooks in this area cover the following categories of events:

  • Cart Events:

    • cart.created – New cart created

    • cart.itemsAdded / cart.itemsRemoved – Items added or removed

    • cart.deleted – Cart deleted

    • cart.propertiesModified – Cart properties modified

    • cart.checkedout – Checkout process initiated

    • cart.expressCheckoutInitialized – Express checkout initialized

  • Buyer & Payment Events:

    • cart.buyerSet / cart.userSet – Buyer or user details set

    • cart.itemRegistrationUpdated – Registration status of specific items updated

    • cart.billingSet – Billing details provided

    • cart.paymentProviderSet / cart.paymentProviderRemoved – Payment provider added or removed

  • Coupon & Discount Events:

    • cart.couponAdded / cart.couponRemoved – Coupons applied or removed
  • Legitimation & Document Events:

    • cart.legitimationAdded – Legitimation process added

    • cart.legitimationDocumentAdded / cart.legitimationDocumentRemoved – Documents uploaded or removed

Here is a flow diagram showing the typical lifecycle of a shopping cart through all webhook events, organized by phase:

Cart Events:

cart.created – New cart created

As soon as a ticket is added to the cart a new cart is created in the shop and the cart.created webhook is automatically generated and sent. It provides real-time notification that a new checkout process has started and delivers the initial metadata as well as the complete cart state after creation.

The event can be used, among other things, to:

  • persist session and tracking information related to the cart

  • assign affiliate / campaign parameters (via downstream Shop API calls)

  • create early CRM leads before any products or buyer data are available

Use Case: Cart Tracking for Event Registration

  • A visitor opens the ticket shop for the event “Experience Days 2026”

  • The visitor clicks the plus sign (+) to add a ticket

  • The shop creates a new cart

  • The cart.created webhook is triggered and sends the cartId as well as the event data (event.id, event.name) to the target system

  • The target system stores the cartId and links it to the event

Trigger Condition

The cart.created event is sent exactly once for each newly created cart.

Webhook payload sample

{
"event": "cart.created",
"event_id": "75c3d187-23e6-484e-b1ab-1fcd3e0a6266",
"event_time": "2026-05-28T12:39:48.7658492+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/shop/v1/cart/47956bd9-7685-495b-ba7c-9ccc4646f7e7",
"endpoint_url": "https://integration.aditus.de/api/webhook/receive/aditus_demo_aditus_ticketshop_insightly",
"data": {
"cartCreated": {
"cartId": "47956bd9-7685-495b-ba7c-9ccc4646f7e7"
},
"cart": {
"id": "47956bd9-7685-495b-ba7c-9ccc4646f7e7",
"expiryTime": "2026-12-31T23:59:00+01:00",
"event": {
"id": "c583f735-cbc9-ef11-93d9-00155d96040a",
"name": "Imagination Expo 2025-2026",
"year": "2025",
"number": "2906",
"slug": "im26",
"externalId2": "im26"
},
"promotionCodes": [
],
"items": [
],
"totals": [
0: {
"original": {
"price": 0,
"grossPrice": 0,
"tax": 0,
"taxRate": 0,
"currency": "EUR"
},
"price": 0,
"grossPrice": 0,
"tax": 0,
"taxRate": 0,
"currency": "EUR"
}
],
"isImmutable": false,
"isPaymentImmutable": false,
"isLegitimationImmutable": false,
"isRegistrationImmutable": false,
"isAmountImmutable": false,
"isPendingPayment": false,
"isRegistrationOnly": false,
"isRegistrationRequired": false,
"isLegitimationRequired": false,
"isPaymentRequired": false,
"buyerPerson": {
"isPrefilled": false,
"surveyId": {
"useCaseName": "Shop.MissingBuyer",
"faireventId": 124,
"articleIds": [
]
},
"isValid": false
},
"status": "Active",
"culture": "en",
"termsOfService": [
0: {
"uniqueId": "4777d894-1751-44a7-9d96-57a4479e05a0",
"displayOrder": 1,
"version": "1.0",
"content": "I accept the <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; 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\">Terms of Use</a>",
"consentPolicy": "Mandatory",
"isApproved": false,
"countries": [
],
"reconfirmationRequired": false
},
1: {
"uniqueId": "a25c56b6-6ce6-4be8-ab46-a25d707ff7ba",
"displayOrder": 99,
"version": "1.0",
"content": "You can find detailed information on how your personal information will be used in our <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; 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\">Privacy Policy</a>",
"consentPolicy": "None",
"isApproved": false,
"countries": [
],
"reconfirmationRequired": false
}
]
}
}
}

Fields in detail

FeldTypBeschreibungBeispiel
cartIdString (UUID)ID of the newly creates cart4c554bc4-1756-43f9-80c8-230fd6613201

(Since all other fields have already been explained above, they will not be discussed further here; only the fields specifically relevant to the webhook are considered.)

cart.itemsAdded / cart.itemsRemoved – Items added or removed

These webhook events are triggered when items are added to or removed from an existing cart. The payload contains the action data with references to the affected items, as well as the complete updated cart state (cart) after the change.

The event can be used, among other things, to:

  • reserve quotas when items are added

  • trigger cart value-based actions (for example upselling or discount thresholds)

  • track and analyze item selections

Use Case: Quota Reservation in Event Ticketing

  • A visitor selects a DayTicket in the ticket shop for “Experience Days 2026”

  • The shop adds the ticket to the cart

  • The cart.itemsAdded webhook is triggered and sends the cartId, the affected items, as well as the updated cart state to the target system

  • The target system reserves the quota for the selected item

  • If the visitor changes their mind and removes the ticket, cart.itemsRemoved is triggered and the quota is released again

Trigger Condition

cart.itemsAdded is sent when one or more items have been added to the cart

cart.itemsRemoved is sent when one or more items have been removed from the cart

Webhook payload sample

{
"event": "cart.itemsAdded",
"event_id": "8cb6e3d9-83da-4b6d-b00b-03628c19e85a",
"event_time": "2026-05-29T03:26:09.027688+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/shop/v1/cart/d2fbe897-f2f6-4811-8822-24286947c08d",
"endpoint_url": "https://integration.aditus.de/api/webhook/receive/aditus_demo_aditus_ticketshop_insightly",
"data": {
"itemsAdded": {
"cartId": "d2fbe897-f2f6-4811-8822-24286947c08d",
"article": {
"prices": [
0: {
"price": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
},
"originalPrice": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
}
}
],
"id": "62473c6b-6a98-f011-93e1-00155d96040a",
"name": "Upgrade 2 Regression",
"internalName": "Upgrade 2 Regression",
"image": {
"key": "Default.OneDayTicket",
"uri": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/OneDayTicket?context=article:62473c6b-6a98-f011-93e1-00155d96040a&language=de&foregroundColor=#FF0000",
"type": "Icon"
},
"sort": 0,
"isLegitimationRequired": false,
"type": "VisitorTicket",
"ticketValidity": "None",
"articleNumber": "622",
"amount": {
"remaining": 4999,
"total": 5000
},
"configuration": {
"remainingAmountDisplayMode": "ExactNumbers",
"remainingAmountPerTimeslotDisplayMode": "ExactNumbers",
"remainingAmountThresholdPercent": 10,
"showIfSoldOut": true,
"maxLengthOfDescription": 250,
"maxNumberOfTicketsPerSale": 10,
"isInvitationEmailAddressChangePossible": true,
"showBadgePreview": true
},
"timeslots": [
]
},
"items": [
0: {
"reservation": {
"id": "006380c1-0000-0000-0000-000000000000",
"validUntil": "2026-05-29T03:26:08.8092056+02:00"
},
"item": {
"id": "006380c1-0000-0000-0000-000000000000"
}
}
],
"problems": [
]
},
"cart": {
"id": "d2fbe897-f2f6-4811-8822-24286947c08d",
"expiryTime": "2026-12-31T00:00:00+01:00",
"event": {
"id": "e1cf8a37-b197-f011-93e1-00155d96040a",
"name": "Regressionstest",
"year": "2025",
"number": "2025",
"slug": "regression",
"externalId2": "regression"
},
"promotionCodes": [
],
"items": [
0: {
"id": "006380c1-0000-0000-0000-000000000000",
"article": {
"id": "62473c6b-6a98-f011-93e1-00155d96040a",
"name": "Upgrade 2 Regression",
"internalName": "Upgrade 2 Regression",
"sort": 0,
"prices": [
0: {
"price": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
},
"originalPrice": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"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:62473c6b-6a98-f011-93e1-00155d96040a&language=de&foregroundColor=#FF0000",
"type": "Icon"
},
"type": "VisitorTicket",
"ticketValidity": "None",
"articleNumber": "622",
"configuration": {
"remainingAmountDisplayMode": "None",
"remainingAmountPerTimeslotDisplayMode": "None",
"remainingAmountThresholdPercent": 0,
"showIfSoldOut": false,
"maxLengthOfDescription": 250,
"maxNumberOfTicketsPerSale": 10,
"isInvitationEmailAddressChangePossible": true,
"showBadgePreview": true
}
},
"promotionCodes": [
],
"price": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
},
"registration": {
"isValid": false,
"problems": [
0: {
"code": 2205,
"category": "Registration",
"message": "The item requires a registration but no registration information was provided",
"name": "ItemRegistrationRequirement",
"details": {
"affectedItem": "006380c1-0000-0000-0000-000000000000"
}
}
],
"isRequired": true,
"isPossible": true,
"types": {
"self": {
"isPossible": true,
"survey": {
"useCaseName": "Shop.Registration.Self",
"faireventId": 190,
"articleIds": [
0: 2910
]
},
"hasToBeCompletedByTicketOwnerHimself": true
},
"thirdPerson": {
"isPossible": true,
"survey": {
"useCaseName": "Shop.Registration.ThirdPersonByHimself",
"faireventId": 190,
"articleIds": [
0: 2910
]
},
"hasToBeCompletedByTicketOwnerHimself": false
}
}
},
"legitimation": {
"isRequired": false,
"isIncomplete": false
},
"timeslots": {
"isEnabled": false,
"isValid": true,
"bookings": [
]
}
}
],
"totals": [
0: {
"original": {
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
},
"price": 16.81,
"grossPrice": 20,
"tax": 3.19,
"taxRate": 19,
"currency": "EUR"
}
],
"isImmutable": false,
"isPaymentImmutable": false,
"isLegitimationImmutable": false,
"isRegistrationImmutable": false,
"isAmountImmutable": false,
"isPendingPayment": false,
"isRegistrationOnly": false,
"isRegistrationRequired": true,
"isLegitimationRequired": false,
"isPaymentRequired": true,
"buyerPerson": {
"isPrefilled": false,
"surveyId": {
"useCaseName": "Shop.MissingBuyer",
"faireventId": 190,
"articleIds": [
]
},
"isValid": false
},
"status": "Active",
"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; 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": false,
"countries": [
],
"reconfirmationRequired": false
},
1: {
"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; 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:

FieldTypeDescriptionExample
cartIdString (UUID)ID of the affected carta1a1a7d2-110f-4691-8739-319578ff8568
articleObjectComplete article object with prices, groups, and configurationsee below
article.prices[]ArrayList of price objects with current and original price
article.prices[].priceObjectCurrent price (price, grossPrice, tax, taxRate, currency){ "price": 16.8, "grossPrice": 19.99, ... }
article.prices[].originalPriceObjectOriginal price (same structure as price)
article.articleGroupObjectArticle group with ID, name, description, and configuration
article.articleGroup.idString (UUID)Article group ID58fabcf1-17fe-41e4-aadb-b8a63f98668c
article.articleGroup.nameStringArticle group nameExample ArticleGroup Name
article.articleGroup.configuration.maxNumberOfTicketsPerSaleIntegerMax. tickets per purchase (group level)1
article.idString (UUID)Article ID2a283eeb-88b3-ee11-93d1-00155d96040a
article.nameStringDisplay name of the articleExample Article Name
article.descriptionStringDescription of the articleExample Article Description
article.imageObjectImage information (key, uri, type, background, size)
article.sortIntegerSort order0
article.isLegitimationRequiredBooleanWhether legitimation/identification is requiredtrue
article.legitimationCategoryObjectLegitimation category with available proof types
article.legitimationCategory.idString (UUID)Legitimation category IDd96fbfb4-ca06-ef11-93d7-00155d96040a
article.legitimationCategory.availableProofTypes[]ArrayAvailable proof types with document types
article.typeIntegerArticle type (numeric)256
article.categoryStringCategory of the articleExample Categroy01
article.amount.remainingIntegerRemaining quota/stock9771
article.configurationObjectArticle configuration (display, limits, etc.)
items[]ArrayList of reserved line itemssee below
items[].reservation.idString (UUID)Reservation IDa6c0a981-8312-ef11-93d7-00155d96040a
items[].reservation.validUntilDate/Time (ISO 8601)Reservation validity2024-08-15T15:43:28.1621714+02:00
items[].item.idString (UUID)Line item ID5b4ffaab-f75b-4627-8d2a-b703ddb84a89
problems[]ArrayList of problems/errors (empty if none)[]

Note: Depending on how an article is configured, the fields contained in the payload may also vary accordingly. This means that some fields are only present in specific scenarios, while other fields may be omitted depending on the article type, registration requirements, legitimation settings, timeslot handling, or pricing logic.
The actual structure of a payload therefore always depends on the functional and technical configuration of the respective article.

For itemsRemoved, the payload contains cartId and an items[] array. Each item contains itemId (String UUID), successful (Boolean), and a complete article object with the same structure as in itemsAdded (prices, articleGroup, image, legitimationCategory, etc.).

{
"event": "cart.itemsRemoved",
"event_id": "313e0d3b-2fed-4040-a3b5-30013b71eb05",
"event_time": "2026-06-09T10:17:24.4108855+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/shop/v1/cart/3e73dff8-e7a9-4521-83e7-d7ec8400ba42",
"endpoint_url": "https://integration.aditus.de/api/webhook/receive/aditus_demo_aditus_ticketshop_insightly",
"data": {
"itemsRemoved": {
"cartId": "3e73dff8-e7a9-4521-83e7-d7ec8400ba42",
"items": [
0: {
"itemId": "00406eb5-0000-0000-0000-000000000000",
"successful": true,
"article": {
"prices": [
0: {
"price": {
"price": 21.01,
"grossPrice": 25,
"tax": 3.99,
"taxRate": 19,
"currency": "EUR"
},
"originalPrice": {
"price": 21.01,
"grossPrice": 25,
"tax": 3.99,
"taxRate": 19,
"currency": "EUR"
}
}
],
"articleGroup": {
"id": "81da9e9e-bb12-ef11-93d7-00155d96040a",
"name": "Visitor Tickets ",
"sort": 1,
"isExpanded": false,
"configuration": {
}
},
"id": "68666502-8208-ef11-93d7-00155d96040a",
"name": "Tagesticket",
"internalName": "Tagesticket",
"description": "The Day Ticket for the Experience Days gives you flexible access to one event day of your choice. Enjoy an inspiring program featuring engaging keynote sessions, hands-on workshops, and interactive formats focused on current trends, innovations, and best practices. Connect with industry experts and peers, exchange ideas, and expand your network in a dynamic event environment. The Day Ticket is ideal for anyone looking to gain valuable insights and fresh perspectives within a single day.",
"image": {
"key": "Default.OneDayTicket",
"uri": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/OneDayTicket?context=article:68666502-8208-ef11-93d7-00155d96040a&language=de&foregroundColor=#00A4CC",
"type": "Icon"
},
"sort": 0,
"isLegitimationRequired": false,
"type": "VisitorTicket",
"ticketValidity": "OneDay",
"articleNumber": "110",
"category": "VISITOR",
"amount": {
"remaining": 12806,
"total": 14988
},
"configuration": {
"remainingAmountDisplayMode": "TrafficLight",
"remainingAmountPerTimeslotDisplayMode": "TrafficLight",
"remainingAmountThresholdPercent": 15,
"showIfSoldOut": true,
"maxLengthOfDescription": 808464434,
"maxNumberOfTicketsPerSale": 20,
"isInvitationEmailAddressChangePossible": true,
"showBadgePreview": true
},
"timeslots": [
]
}
}
]
},
"cart": {
"id": "3e73dff8-e7a9-4521-83e7-d7ec8400ba42",
"expiryTime": "2026-12-31T23:59:00+01:00",
"event": {
"id": "67666502-8208-ef11-93d7-00155d96040a",
"name": "Experience Days",
"year": "2026",
"number": "01",
"slug": "ExperienceDays2026"
},
"promotionCodes": [
],
"items": [
],
"totals": [
0: {
"original": {
"price": 0,
"grossPrice": 0,
"tax": 0,
"taxRate": 0,
"currency": "EUR"
},
"price": 0,
"grossPrice": 0,
"tax": 0,
"taxRate": 0,
"currency": "EUR"
}
],
"isImmutable": false,
"isPaymentImmutable": false,
"isLegitimationImmutable": false,
"isRegistrationImmutable": false,
"isAmountImmutable": false,
"isPendingPayment": false,
"isRegistrationOnly": false,
"isRegistrationRequired": false,
"isLegitimationRequired": false,
"isPaymentRequired": false,
"buyerPerson": {
"isPrefilled": false,
"surveyId": {
"useCaseName": "Shop.MissingBuyer",
"faireventId": 82,
"articleIds": [
]
},
"isValid": false
},
"status": "Active",
"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; 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": false,
"countries": [
],
"reconfirmationRequired": false
},
1: {
"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; 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
}
]
}
}
}

cart.deleted - Cart deleted

This webhook event is triggered when a cart is deleted by the system and no longer exists as an active cart. Since the cart has already been deleted, the payload does not contain a complete cart object — it only includes the cartId of the deleted cart.

  • Release reserved quotas or resources

  • Clean up internal data records and caches

  • Notify downstream systems about the deletion

Typical use cases:

Use Case: Cleanup of reserved resources after cart deletion

  1. A visitor adds a DayTicket with a timeslot to the cart in the ticket shop for "Experience Days 2026"

  2. The target system reserves the corresponding quota via the cart.itemsAdded event

  3. The visitor does not complete the checkout – after the session timeout, the system automatically deletes the cart

  4. The cart.deleted webhook is triggered and sends only the cartId to the target system

  5. The target system matches the cartId against cached data from previous events and releases the reserved timeslots/quotas

Trigger Condition

  • cart.deleted is sent when a cart is permanently deleted – e.g., due to session expiration, manual deletion, or system-side cleanup.

Webhook payload sample

{
"data": {
"cartDeleted": {
"cartId": "c6a42702-51e5-481b-96ac-9a153644b114"
},
"cart": null
}
}

Note: Unlike other cart events (e.g., cart.itemsAdded), cart.deleted does not contain a complete cart object, since the cart has already been deleted at the time of delivery.

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)ID of the deleted carta1a1a7d2-110f-4691-8739-319578ff8568

cart.propertiesModified

This webhook event is triggered when additional properties of a shopping cart have been changed or added (e.g., affiliate IDs or tracking parameters).

The event can be used, among other things, to:

  • Capture marketing attributions (e.g., affiliate tracking)

  • Assign shopping carts to specific campaigns or partners

  • Control personalized data flows based on shopping cart metadata

Use Case: Affiliate Attribution via URL Parameters

  1. A visitor arrives at the ticket shop via a partner link.

  2. The shop recognizes the parameter and stores it as a property on the shopping cart

  3. The webhook cart.propertiesModified is triggered and sends the cartId along with the updated properties to the target system.

  4. The target system (e.g., a CRM or commission system) links the shopping cart to the affiliate partner "Super_Affiliate".

  5. During a subsequent checkout, the commission can be correctly attributed to the partner.

Trigger Condition

The event cart.propertiesModified is triggered when:

  • The properties of an existing shopping cart are updated via the API (e.g., through tracking scripts or manual API calls).

Webhook payload sample

"data": {
  "propertiesModified": {
    "cartId": "8d0c9108-e5b2-4571-bc4d-b1c5f60cbbdd",
    "properties": {
      "utm": "Super_Affiliate"
    }
  },
 "cart": {...

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique ID of the affected shopping carta1a1a7d2-110f-4691-8739-319578ff8568
propertiesObjectMap of key-value pairs of the modified properties{"aid": "Super_Affiliate"}
properties.aidStringAffiliate ID for assigning commissions or campaigns

cart.checkedout

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.

The event can be used by external systems to, among other things:

  • Process orders further

  • Synchronize buyer and attendee data

  • Trigger follow-up processes in CRM, ERP, badge, or analytics systems

As this payload has already been described in greater detail as the reference example in the previous chapter, it will not be discussed further in this section.
For additional information, please see: Webhooks

cart.expressCheckoutInitialized

This webhook event is triggered when an express checkout process (e.g., via PayPal Express or Apple Pay) has been successfully initialized for a shopping cart.

The event can be used, among other things, to:

  • Synchronize the cart status in external systems

  • Generate analytics on initiated express payment processes

  • Make UX adjustments, as the cart may now be locked for regular modifications

Use Case: Tracking Express Payment Abandonments

  1. A visitor clicks the "PayPal Express" button in the shopping cart.

  2. The shop initializes the interface to the payment provider.

  3. The webhook cart.expressCheckoutInitialized is triggered and sends the cartId to the target system.

  4. The target system marks the cart as "Payment Initiated".

  5. If no cart.checkedout event occurs within a defined time window, the system can record the abandonment for statistics.

Trigger Condition

The event cart.expressCheckoutInitialized is triggered when:

  • A user starts an express checkout process and the technical initialization with the provider was successful.

Webhook payload sample

{
"expressCheckoutInitialized": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568"
}
}

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique ID of the affected shopping carta1a1a7d2-110f-4691-8739-319578ff8568

Buyer & Payment Events:

cart.buyerSet / cart.userSet- Buyer or user details set

These webhook events are triggered as soon as buyer or user details have been set for an existing cart in the shop. Both events deliver the updated cart state after the change. Typical uses include synchronizing user and buyer information to third-party systems (e.g., CRM/ERP) and completing cart-related metadata along the checkout flow.

  • cart.userSet – User details have been stored on the cart (e.g., linking to an existing user ID, verification status, email).

  • cart.buyerSet – Buyer details (billing/buyer person) have been captured on the cart.

Use Case: Synchronizing Buyer Data

  1. A visitor adds items to the cart in the shop and proceeds to checkout.

  2. In the checkout form, the visitor enters their buyer details (name, address, email).

  3. The shop saves the details on the cart and triggers the cart.buyerSet webhook.

  4. The target system (e.g., CRM or ERP) receives the payload with the buyerPerson data.

  5. The target system creates a new contact or updates the existing record based on the transmitted buyer information.

Use Case: Linking an Existing User Account to the Cart

  1. A visitor adds items to the cart without being logged in.

  2. During checkout, the visitor signs in with their existing user account.

  3. The shop assigns the user ID to the cart and triggers the cart.userSet webhook.

  4. The target system receives the userId and cartId from the payload.

  5. The target system links the cart to the customer profile to provide, e.g., personalized offers or order histories.

Trigger Conditions

  • cart.userSet is sent when the user for a cart has been set or updated.

  • cart.buyerSet is sent when the buyer information on the cart has been set or updated.

Webhook payload sample

 "data": {
    "userSet": {
      "cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
      "userId": "79ddcfb8-9e50-ef11-93d8-00155d96040a"
    },
    "cart": {...

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique ID of the affected carta1a1a7d2-110f-4691-8739-319578ff8568
userIdString (UUID)ID of the user assigned to the cart79ddcfb8-9e50-ef11-93d8-00155d96040a
{
"buyerSet": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
"buyerPerson": {
"firstName": "Max",
"lastName": "Muster",
"company": "Muster GmbH",
"address": {
"street": "Musterstraße",
"houseNumber": "1",
"postalCode": "21345",
"city": "Musterstadt",
"country": "DE"
},
"vatId": "EX123456789"
}
}
}

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique ID of the affected carta1a1a7d2-110f-4691-8739-319578ff8568
buyerPersonObjectBuyer/billing data (see 5.4)

Buyer (buyerPerson)

The buyerPerson object is included both in the buyerSet action object and in the cart object, and contains the buyer/billing information:

FieldTypeDescriptionExample
firstNameStringFirst nameMax
lastNameStringLast nameMuster
emailStringBuyer's email addressMax@Muster.de
companyStringCompany name (optional)Muster GmbH
addressObjectAddress object (see below)
vatIdStringVAT ID (optional)EX123456789

address – Address Object

FieldTypeDescriptionExample
streetStringStreetMusterstraße
houseNumberStringHouse number1
postalCodeStringPostal code21345
cityStringCityMusterstadt
countryStringCountry code (ISO 3166-1 alpha-2)DE

The buyer section is anchored under buyerPerson in the cart. It is updated with cart.buyerSet and is also relevant in the cart.checkedout payload. Depending on the configuration, fields may vary; the section refers to billing/buyer information that is authoritative for third-party systems.

cart.itemRegistrationUpdated - Registration status of specific items updated

This event is triggered when the registration status of individual items in a shopping cart changes. It enables synchronization and monitoring of registration data at the item level.

  • Notifies about changes to the registration status of individual cart items.

  • Enables updating of user interfaces or downstream processes.

  • Typically used to keep registration data up to date.

Typical Use Cases:

  1. A user edits the registration for a ticket or product in the cart.

  2. The registration is saved or updated.

  3. The system sends the cart.itemRegistrationUpdated event to all registered webhook endpoints.

  4. Receiving systems can read and further process the new registration data.

  5. The user interface or connected systems are updated accordingly.

Trigger Condition

  • The cart.itemRegistrationUpdated event is triggered when the registration status or registration data of a specific cart item changes (e.g., new entries, modified answers, status change).

Webhook payload sample

{
 "cart": {...},
 "itemRegistrationUpdated":
  {
    "cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
    "id": "00000000-0000-0000-0000-000000000000",
    "registration":
     {
      "type": 0,
      "answers": 
      [
        {
          "isReadOnly": false
          "bindingMember": "[CRM.Persons].SalutationLookup",
          "value": "Frau"
        }
      ],
    "hasInformation": true
  }
}

The payload contains the affected registration data for the respective cart item.

Fields in detail:

FieldTypeDescriptionExample Value
cartIdstring (UUID)ID of the affected carta1a1a7d2-110f-4691-8739-319578ff8568
idstring (UUID)ID of the registration/item00000000-0000-0000-0000-000000000000
registration.typeintegerRegistration type (e.g., 0 = Standard)0
registration.answersArrayList of answers provided for the registration[ { "bindingMember": "[CRM.Persons].SalutationLookup", "value": "Mrs" } ]
registration.hasInformationbooleanIndicates whether registration information is availabletrue

cart.billingSet

This webhook event is triggered when billing details have been successfully captured or set for a shopping cart. This can occur through the user during checkout, via a customer account pre-fill, or through a system integration.

  • Synchronization of billing address and company data in ERP/CRM

  • Validation of VAT IDs and trigger for tax logic

  • Enrichment of B2B reporting (e.g., company name, country, state/county)

  • Progress tracking in the checkout funnel (step "Billing" completed)

Typical Use Cases: Capture and process billing data

A customer goes through the checkout of an ADITUS web shop and enters their personal data and billing address in the "Billing details" step. After the data is successfully saved, the cart.billingSet event is triggered.

Trigger Condition

The cart.billingSet event is triggered when:

  • The billing details for an existing shopping cart have been successfully saved.

Webhook payload sample

"billingSet": 
{
    "cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
    "billingPerson": 
     {
        "salutation": "Mr.",
        "firstName": "Max",
        "lastName": "Muster",
        "email": "Max@Muster.de",
        "company": "Muster GmbH",
        "nationality": "DE",
    "address":
     {
        "street": "Musterstraße",
        "houseNumber": "1",
        "postalCode": "21345",
        "city": "Musterstadt",
        "county": "NI",
        "country": "DE"
    },
  "vatId": "EX123456789"
 }                 

Fields in detail:

FeldTypBeschreibungBeispiel
cartIdString (UUID)Eindeutige ID des betroffenen Warenkorbsa1a1a7d2-110f-4691-8739-319578ff8568
billingPerson.salutationStringAnrede, frei oder normiert (z. B. „Mr."/„Ms."/„Mx.").Mr.
billingPerson.firstNameStringVorname der rechnungsführenden Person.Max
billingPerson.lastNameStringNachname der rechnungsführenden Person.Muster
billingPerson.emailString (E-Mail)Kontakt-E-Mail für Rechnungsversand und Kommunikation.Max@Muster.de
billingPerson.companyStringFirmenbezeichnung; bei B2C häufig leer.Muster GmbH
billingPerson.nationalityString (ISO-3166-1 alpha-2)Nationalität/Staatsangehörigkeit der rechnungsführenden Person.DE
billingPerson.address.streetStringStraßenname.Musterstraße
billingPerson.address.houseNumberStringHausnummer inkl. Zusätze.1
billingPerson.address.postalCodeStringPostleitzahl (nicht immer numerisch in allen Ländern).21345
billingPerson.address.cityStringOrt/Stadt.Musterstadt
billingPerson.address.countyStringBundesland/County/Region nach Shopsystem-Definition.NI
billingPerson.address.countryString (ISO-3166-1 alpha-2)Ländercode des Rechnungsadress-Landes.DE
billingPerson.vatIdStringUmsatzsteuer-ID (VAT). Für B2B/innergemeinschaftliche Lieferungen relevant.EX123456789

cart.paymentProviderSet / cart.paymentProviderRemoved - Payment provider added or removed on Cart

The events signal changes to the payment context of an existing shopping cart in the shop:

Use Case: Redirect-Based Payment Flow

A customer selects a payment provider during checkout (e.g., credit card). The shop sets the provider and sends cart.paymentProviderSet including paymentProviderRedirectUrl. The frontend redirects accordingly. After completion/cancellation, the provider may be removed → cart.paymentProviderRemoved. Integrations can track state changes this way.

  • Set: Provider selected → Start redirect as long as redirectRequired = true and before expiresAt.

  • Removed: Provider removed → Update UI, offer alternative payment method.

  • Analytics: Evaluate events for funnel analysis (selection, redirect, cancellation).

  • cart.paymentProviderSet: A payment provider has been successfully configured on the shopping cart. Optionally, a redirect to the payment provider may be required.

  • cart.paymentProviderRemoved: The configured payment provider has been removed; the shopping cart no longer has an active payment provider.

Trigger Conditions

  • cart.paymentProviderSet is triggered when a payment provider is set or re-set for a shopping cart.

  • cart.paymentProviderRemoved is triggered when the currently configured payment provider is removed from the shopping cart.

  • Each set/remove action triggers one event. Multiple events are possible if the payment provider is changed multiple times.

Webhook payload sample

{
"paymentProviderSet": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
"paymentProviderId": "6b38d727-3dae-ee11-93d1-00155d96040a",
"redirectRequired": true,
"paymentProviderRedirectUrl": "https://example.com",
"expiresAt": "2024-08-15T15:39:17.4196788+02:00"
}
}

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique shopping cart IDa1a1a7d2-110f-4691-8739-319578ff8568
paymentProviderIdString (UUID)ID of the configured payment provider6b38d727-3dae-ee11-93d1-00155d96040a
redirectRequiredBooleanIndicates whether a redirect to the payment provider is requiredtrue
paymentProviderRedirectUrlURLTarget URL for the redirecthttps://example.com/
expiresAtDate/Time (ISO 8601)Expiration time of the redirect session or authorization2024-08-15T15:39:17.4196788+02:00
{
"paymentProviderRemoved": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568"
}
}

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Unique shopping cart IDa1a1a7d2-110f-4691-8739-319578ff8568

Coupon & Discount Events:

cart.couponAdded / cart.couponRemoved - Coupons applied or removed

These webhook events are triggered when a coupon/voucher code is registered or removed from the shopping cart in the shop. Both events deliver the action data (including the code and, if applicable, affected assortments/articles) as well as – in accordance with the webhooks concept – the updated cart state in the response of the underlying API operation.

  • cart.couponAdded – A coupon was successfully registered on the cart (including result, reservation, and optionally article/assortment-related effects).

  • cart.couponRemoved – A previously applied coupon was removed.

Trigger Condition

  • cart.couponAdded is sent when a valid voucher/promotion code has been registered on the cart.

  • cart.couponRemoved is sent when an existing voucher code has been removed from the cart.

Webhook payload sample

  "data": {
    "couponAdded": {
      "cartId": "d83b2260-fe4a-4940-88a4-31f8653d915d",
      "code": "Rchx4682a6t638",
      "registrationResult": { "message": "OK", "code": "OK" },
      "affectedAssortments": [
        {
          "id": "5c279a0e-5c98-f011-93e1-00155d96040a",
          "name": "Registrierung",
          "description": "Wird für den REGRESSIONSTEST verwendet!\r\n\r\nHier kommen Sie zur freien Registrierung.\r\n",
          "sort": 0,
          "isDefault": false,
          "showInShop": false
        }
      ],
      "codeType": "Voucher",
      "reservation": {
        "id": "0062f922-0000-0000-0000-000000000000",
        "validUntil": "2026-06-09T14:47:58.2730833+02:00"
      },
      "article": {
        "id": "862e0cc5-5b98-f011-93e1-00155d96040a",
        "name": "Freie Registrierung Regression",
        "internalName": "Freie Registrierung Regression",
        "image": {
          "key": "Default.PermanentTicket",
          "uri": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/Images/Shop/ArticleImage/Default/PermanentTicket?context=article:862e0cc5-5b98-f011-93e1-00155d96040a&language=de&foregroundColor=#FF0000",
          "type": "Icon"
        },
        "sort": 0,
        "isLegitimationRequired": false,
        "type": "VisitorTicket",
        "ticketValidity": "AllDays",
        "articleNumber": "210",
        "amount": { "remaining": 0, "total": 0 },
        "configuration": {
          "remainingAmountDisplayMode": "ExactNumbers",
          "remainingAmountPerTimeslotDisplayMode": "ExactNumbers",
          "remainingAmountThresholdPercent": 10,
          "showIfSoldOut": true,
          "maxLengthOfDescription": 250,
          "maxNumberOfTicketsPerSale": 10,
          "isInvitationEmailAddressChangePossible": true,
          "showBadgePreview": true
        },
        "timeslots": []
      },
      "appearance": {
        "id": "65d536d7-b397-f011-93e1-00155d96040a",
        "number": "M0005302",
        "isIntern": true,
        "hasWelcomeBanner": false
      },
      "organization": {
        "id": "eba17e4a-7fd8-ed11-93c2-00155db54d02",
        "name": "ADITUS GmbH",
        "hasWelcomeBanner": false
      }
    }

Fields in detail:

FieldTypeDescriptionExample/Source
cartIdString (UUID)Cart IDd83b2260-fe4a-4940-88a4-31f8653d915d
codeStringEntered/registered codeRchx4682a6t638
registrationResult.messageStringRegistration result (text)OK
registrationResult.codeStringNumberRegistration result (code)
affectedAssortments[]ArrayAssortments affected by the codeid, name, description, sort, isDefault, showInShop
codeTypeStringType of code/voucherVoucher
reservation.idString (UUID)Reservation ID of the coupon0062f922-0000-0000-0000-000000000000
reservation.validUntilDate/Time (ISO 8601)Expiration time of the reservation2026-06-09T14:47:58.2730833+02:00
articleObjectArticle/service reference of the coupon incl. configurationsee example payload
article.idString (UUID)Article ID862e0cc5-5b98-f011-93e1-00155d96040a
article.nameStringArticle nameFreie Registrierung Regression
article.internalNameStringInternal article nameFreie Registrierung Regression
article.imageObjectArticle imagekey, uri, type
article.sortNumberSort order0
article.isLegitimationRequiredBooleanIs legitimation required?false
article.typeStringArticle typeVisitorTicket
article.ticketValidityStringTicket validity periodAllDays
article.articleNumberStringArticle number210
article.amount.remainingNumberRemaining amount0
article.amount.totalNumberTotal amount0
article.configuration.remainingAmountDisplayModeStringDisplay mode for remaining amountExactNumbers
article.configuration.remainingAmountPerTimeslotDisplayModeStringDisplay mode for remaining amount per timeslotExactNumbers
article.configuration.remainingAmountThresholdPercentNumberThreshold percentage for remaining amount display10
article.configuration.showIfSoldOutBooleanShow if sold out?true
article.configuration.maxLengthOfDescriptionNumberMax length of description250
article.configuration.maxNumberOfTicketsPerSaleNumberMax tickets per purchase10
article.configuration.isInvitationEmailAddressChangePossibleBooleanCan invitation email address be changed?true
article.configuration.showBadgePreviewBooleanShow badge preview?true
article.timeslotsArrayTimeslots[]
appearance.idString (UUID)Appearance ID65d536d7-b397-f011-93e1-00155d96040a
appearance.numberStringAppearance numberM0005302
appearance.isInternBooleanInternal appearance?true
appearance.hasWelcomeBannerBooleanHas welcome banner?false
organization.idString (UUID)Organization IDeba17e4a-7fd8-ed11-93c2-00155db54d02
organization.nameStringOrganization nameADITUS GmbH
organization.hasWelcomeBannerBooleanHas welcome banner?false
{
"couponRemoved": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
"code": "Example Code01"
}
}

Fields in detail:

FieldTypeDescriptionExample/Source
cartIdString (UUID)Cart IDa1a1a7d2-110f-4691-8739-319578ff8568
codeStringRemoved voucher codeExample Code01

Legitimation & Document Events:

cart.legitimationAdded - Legitimation process added

The webhook cart.legitimationAdded is triggered as soon as a legitimation or identification process has been added to a cart. It serves to inform connected systems in real time that a legitimation is required or has been initiated for a specific cart.

  • Start or monitoring of a KYC/identification process

  • Synchronization of the legitimation status with external systems

  • Trigger for manual or automatic verification processes

  • Documentation and audit trails for compliance purposes

Trigger Condition

The webhook is triggered as soon as a legitimation process is added to an existing cart.

Webhook payload sample

"data": {
    "legitimationAdded": {
      "cartId": "1ec224d4-42d5-46ae-bb72-90a1aaa71bc5",
      "legitimationIdentifier": "eyJMZWdpdGltYXRpb25DYXRlZ29yeUlkIjoiYjJlZTc1ZWItZjFlMS1lZTExLTkzZDUtMDAxNTVkOTYwNDBhIiwiSWRlbnRpZmllciI6ImEueWVzYWZhdVx1MDAyQjI2MDYwODVAYWRpdHVzLmRlIiwiVHlwZSI6MX0="
    },
    "cart": {
      ...
    }              

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)Cart ID1ec224d4-42d5-46ae-bb72-90a1aaa71bc5
legitimationIdentifierString (Base64)Base64-encoded identifier containing legitimation category, identifier, and typeeyJMZWdpdGltYXRpb25DYXRlZ29yeUlkIjoiYjJlZTc1ZWItZjFlMS1lZTExLTkzZDUtMDAxNTVkOTYwNDBhIiwiSWRlbnRpZmllciI6ImEueWVzYWZhdVx1MDAyQjI2MDYwODVAYWRpdHVzLmRlIiwiVHlwZSI6MX0=

cart.legitimationDocumentAdded / cart.legitimationDocumentRemoved - Documents uploaded or removed

These webhook events are triggered when a legitimation document is added to or removed from a cart.

The events contain reference information about the affected cart, the document, and the associated legitimation.

Typical integration scenarios:

  • Synchronize legitimation documents in a DMS/ECM system

  • Trigger KYC or compliance checks

  • Write audit logs for regulatory requirements

  • Perform privacy-compliant cleanup when a document is removed

Trigger Condition

  • cart.legitimationDocumentAdded: Sent after a successful document upload – the legitimation document has been successfully uploaded and assigned to the cart.

  • cart.legitimationDocumentRemoved: Sent after a document is removed – a previously uploaded legitimation document has been removed from the cart.

Webhook payload sample

{
"legitimationDocumentAdded": {
"cartId": "a1a1a7d2-110f-4691-8739-319578ff8568",
"documentId": "LegitimationProof:bb539802-d777-4a98-924c-16e61d36bb0f",
"legitimationId": "eyJMZWdpdGltYXRpb25DYXRlZ29yeUlkIjoiZDk2ZmJmYjQtY2EwNi1lZjExLTkzZDctMDAxNTVkOTYwNDBhIiwiSWRlbnRpZmllciI6ImNhcnQubGVnaXRpbWF0aW9uRG9jdW1lbnRBZGRlZCIsIlR5cGUiOjF9"
}
}

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)ID of the cart to which the document was assigneda1a1a7d2-110f-4691-8739-319578ff8568
documentIdStringSystem-wide document identifier including namespace prefix (LegitimationProof) and unique document UUIDLegitimationProof:bb539802-d777-4a98-924c-16e61d36bb0f
legitimationIdString (Base64)Base64-encoded legitimation identifier containing the category ID, event identifier, and legitimation typeeyJMZWdpdGltYXRpb25D...
"data": {
    "legitimationDocumentRemoved": {
      "cartId": "1ec224d4-42d5-46ae-bb72-90a1aaa71bc5",
      "documentId": {
        "documentType": "LegitimationProof",
        "identifier": "d0fc7a76-3bc5-444c-823d-796ca604c568"
      },
      "legitimationIdentifier": "eyJMZWdpdGltYXRpb25DYXRlZ29yeUlkIjoiYjJlZTc1ZWItZjFlMS1lZTExLTkzZDUtMDAxNTVkOTYwNDBhIiwiSWRlbnRpZmllciI6ImEueWVzYWZhdVx1MDAyQjI2MDYwODVAYWRpdHVzLmRlIiwiVHlwZSI6MX0="
    }          

Fields in detail:

FieldTypeDescriptionExample
cartIdString (UUID)ID of the cart1ec224d4-42d5-46ae-bb72-90a1aaa71bc5
documentId.documentTypeStringDocument type classificationLegitimationProof
documentId.identifierString (UUID)Unique document IDd0fc7a76-3bc5-444c-823d-796ca604c568
legitimationIdentifierString (Base64)Base64-encoded legitimation identifier containing the category ID, identifier, and typeeyJMZWdpdGltYXRpb25D...