Mit einer Webhook- oder Callback-URL („Rückruffunktion“) hat das Hotel die Möglichkeit, Buchungsdetails im JSON-Format über eine URL zu erhalten.

Ein Webhook sendet einen Callback an eine bestimmte URL und wird jedes Mal ausgelöst, wenn eine Buchung erstellt, geändert oder storniert wird.

Die Webhook-/Callback-funktion wird ausgelöst von:

  • dem Sirvoy-Buchungsformular
  • dem Buchungsüberprüfungsformular
  • Channel-Buchungen

Du kannst sie unter Einstellungen -> Dein Konto -> URL Rückruffunktion aktivieren.

Der empfangende Server muss mit dem Antwortcode 200 OK antworten, ansonsten wird der Rückruf alle 30 Minuten bis zu 10 Mal wiederholt. Wir unterstützen nur HTTPS mit der TLS Version 1.2 und höher. Damit kann Datenschutz und Vertraulichkeit gewährleistet werden. Außerdem muss das HTTPS-Zertifikat gültig sein, damit Daten gesendet werden können. Die Buchungsdaten werden als POST mit dem JSON und dem Request Body versendet.

Stelle außerdem sicher, dass dein Server auf eine HTTP-GET-Anfrage mit 200 OK antwortet. Diese Anfrage wird von Zeit zu Zeit verwendet, um sicherzustellen, dass dein Endpunkt aktiv ist. Es werden jedoch niemals Daten mit einem HTTP-GET an dich geschickt. 

Rückrufe werden von den untenstehenden IP-Bereichen aus getätigt. Wenn du den Datenverkehr zu deinem Server einschränken möchtest, müssen alle der folgenden Bereiche in Ihrer Firewall zugelassen sein:

  • 34.243.166.60
  • 52.18.11.99
  • 63.34.80.48
  • 54.194.0.85
  • 2a05:d018:e34:5300::/56

Die Server, die die Callbacks durchführen, sind Dual-Stack-Server mit IPv4- und IPv6-Konnektivität. Wenn du sowohl IPv4 als auch IPv6 Adressen zu deiner Domain hinzufügst, wird der Rückruf zu dem Server getätigt, der als Erster antwortet.

Nachfolgend findest du einige Beispiele für die im JSON-Format generierten Daten, wenn eine neue Buchung erstellt wird:

{
   "version":"1.0",
   "callbackId":2464764,
   "generatedTime":"2021-09-08T11:41:06+00:00",
   "event":"new",
   "propertyId":1,
   "bookingId":26006,
   "channelBookingId":null,
   "bookingDate":"2021-09-08T11:37:42+00:00",
   "arrivalDate":"2021-09-08",
   "departureDate":"2021-09-10",
   "cancelled":false,
   "eta":null,
   "totalAdults":2,
   "guest":{
      "firstName":"John",
      "lastName":"Doe",
      "businessName":"Acme Corporation",
      "address":"123 Main St",
      "postcode":"17101",
      "city":"AnyTown",
      "state":"DE",
      "country":"US",
      "phone":"+17184547453",
      "email":"john.doe@mailservice.us",
      "passportNo":null,
      "language":"en",
      "message":"Your hotel looks nice :)"
   },
   "guestReference":null,
   "internalComment":null,
   "couponCode":null,
   "bookingSource":"Front desk",
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "customFields":[
      {
         "name":"Custom field",
         "value":"custom field text filled by guest"
      },
      {
         "name":"Checkbox",
         "value":true
      },
      {
         "name":"new checkbox",
         "value":false
      }
   ],
   "rooms":[
      {
         "RoomTypeName":"Basic room",
         "RoomTypeDescription":"As basic as it gets, with a small window included.",
         "RoomName":"110",
         "arrivalDate":"2021-09-08",
         "departureDate":"2021-09-10",
         "adults":2,
         "quantity":2,
         "price":100,
         "roomTotal":200,
         "guestName":null,
         "comment":null,
         "ledgerAccount":null
      }
   ],
   "additionalItems":[
      {
         "description":"Cleaning Fee",
         "specificDate":null,
         "quantity":1,
         "price":0,
         "itemTotal":0,
         "ledgerAccount":null
      }
   ],
   "bookedCategory":null,
   "currency":"EUR",
   "totalPrice":200,
   "totalSurcharges":20,
   "totalPriceIncludingSurcharges":220,
   "payments":[
      
   ],
   "invoices":[
      
   ]
}

So kann es aussehen, nachdem ein Kassenbeleg erstellt und eine Zahlung auf einer Rechnung verschoben wurde (Zahlungen und Rechnungen einer Buchung werden auch in den Rückruf aufgenommen): Auch jede andere Änderung führt zu einem Rückruf, der die aktuellen Daten der Buchung beinhaltet:

{
   "version":"1.0",
   "callbackId":2464765,
   "generatedTime":"2021-09-08T11:45:01+00:00",
   "event":"modified",
   "propertyId":1,
   "bookingId":26006,
   "channelBookingId":null,
   "bookingDate":"2021-09-08T11:37:42+00:00",
   "arrivalDate":"2021-09-08",
   "departureDate":"2021-09-10",
   "cancelled":false,
   "eta":null,
   "totalAdults":2,
   "guest":{
      "firstName":"John",
      "lastName":"Doe",
      "businessName":"Acme Corporation",
      "address":"123 Main St",
      "postcode":"17101",
      "city":"AnyTown",
      "state":"DE",
      "country":"US",
      "phone":"+17184547453",
      "email":"john.doe@mailservice.us",
      "passportNo":null,
      "language":"en",
      "message":"Your hotel looks nice :)"
   },
   "guestReference":null,
   "internalComment":null,
   "couponCode":null,
   "bookingSource":"Front desk",
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "customFields":[
      {
         "name":"Custom field",
         "value":"custom field text filled by guest"
      },
      {
         "name":"Checkbox",
         "value":true
      },
      {
         "name":"new checkbox",
         "value":false
      }
   ],
   "rooms":[
      {
         "RoomTypeName":"Basic room",
         "RoomTypeDescription":"As basic as it gets, with a small window included.",
         "RoomName":"110",
         "arrivalDate":"2021-09-08",
         "departureDate":"2021-09-10",
         "adults":2,
         "quantity":2,
         "price":100,
         "roomTotal":200,
         "guestName":null,
         "comment":null,
         "ledgerAccount":null
      }
   ],
   "additionalItems":[
      {
         "description":"Cleaning Fee",
         "specificDate":null,
         "quantity":1,
         "price":0,
         "itemTotal":0,
         "ledgerAccount":null
      }
   ],
   "bookedCategory":null,
   "currency":"EUR",
   "totalPrice":200,
   "totalSurcharges":20,
   "totalPriceIncludingSurcharges":220,
   "payments":[
      
   ],
   "invoices":[
      {
         "invoiceNumber":"41001",
         "invoiceDate":"2021-09-08",
         "dueDate":"2021-09-08",
         "receiver":"Acme Corporation",
         "address":[
            "John Doe",
            "123 Main St",
            "AnyTown, DE 17101",
            "United States"
         ],
         "roundingAmount":0,
         "invoiceTotal":220,
         "originInvoice":null,
         "invoiceRows":[
            {
               "quantity":2,
               "price":100,
               "rowTotal":200,
               "ledgerAccount":"3010",
               "rowText":"Basic room",
               "vatRate":0,
               "vatAmount":0
            },
            {
               "quantity":1,
               "price":20,
               "rowTotal":20,
               "ledgerAccount":"sur1",
               "rowText":"10",
               "vatRate":0,
               "vatAmount":0
            }
         ],
         "payments":[
            {
               "amount":220,
               "ledgerAccount":"",
               "paymentReference":null,
               "comment":""
            }
         ]
      }
   ]
}