Het toevoegen van een webhook of callback-URL geeft een hotel de mogelijkheid om boekingsdetails in JSON-formaat te ontvangen via een URL.

Opmerking: 

  • Het gebruik van een webhook vereist technische kennis, of raadpleeg een webontwikkelaar voor hulp.
  • Het is enkel mogelijk één webhook per account te gebruiken.

Een webhook voor een boekingsgebeurtenis stuurt een callback naar een bepaalde URL en wordt getriggered wanneer er een boeking wordt gemaakt, gewijzigd of geannuleerd.

De webhook-functie voor boekingsgebeurtenissen wordt geactiveerd door:

  • de Sirvoy Booking Engine;
  • het overzicht boekingsformulier;
  • boekingen vanuit verkoop kanalen (sales channels).

Het kan worden geactiveerd in Instellingen -> Uw account -> Webhook voor boekingsgebeurtenis.

De ontvangende server moet hierop reageren met http code 200 (OK), anders zal de oproep iedere 30 minuten opnieuw gedaan worden tot 3 keer toe. We ondersteunen alleen HTTPS met TLS versie 1.2 en hoger om privacy en vertrouwelijkheid te garanderen. Het HTTPS-certificaat moet ook geldig zijn, anders worden er geen gegevens verzonden. De boekingsgegevens worden verzonden als een POST waarin de request-body in JSON formaat zal worden verstuurd.

Zorg er ook voor dat uw server reageert op een HTTP GET-verzoek met 200 OK. Dit wordt gebruikt als een statuscontrole die zo nu en dan wordt aangeroepen om ervoor te checken of uw eindpunt actief is. Maar er zullen nooit gegevens naar u worden gepusht met behulp van een HTTP GET.

Er worden callbacks gemaakt vanuit de onderstaande IP-adres reeksen. Als u het verkeer naar uw server wilt beperken, moeten alle onderstaande ip-addressen zijn toegestaan in uw firewall:

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

De servers die de callbacks uitvoeren, zijn dual-stack met zowel ipv4- als ipv6-connectiviteit. Als u zowel ipv4- als ipv6-adressen aan uw domeinnaam toevoegt, worden callbacks gemaakt naar de server die als eerste reageert.

Hieronder staan enkele voorbeelden van gegevens die in JSON-formaat worden gegenereerd wanneer er een nieuwe boeking wordt gemaakt:

{
   "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",
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "bookingIsConfirmed": false,
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "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",
         "RoomId": 52,
         "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":[]
}

Zo kan het eruit zien nadat een kassabon is aangemaakt en een betaling is verplaatst naar een factuur – betalingen en facturen die deze boeking heeft, worden ook opgenomen in de terugbelactie. Elke andere wijziging resulteert ook in een webhook-callback met de gegevens, en dit is hoe de webhook van de boekingsgebeurtenis in dit voorbeeld er nu uitziet:

{
   "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",
   "bookingIsCheckedIn":false,
   "bookingIsCheckedOut":false,
   "bookingIsConfirmed": false,
   "bookingIsProvisional":false,
   "bookingProvisionalId":null,
   "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",
         "RoomId": 52,
         "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,
               "bookingId": 26005
            },
            {
               "quantity":1,
               "price":20,
               "rowTotal":20,
               "ledgerAccount":"sur1",
               "rowText":"10",
               "vatRate":0,
               "vatAmount":0
            }
         ],
         "payments":[
            {
               "paymentId": 26,
               "createdAt": "2023-10-12T20:43:08+00:00",
               "valueDate": "2023-10-13",
               "amount":220,
               "ledgerAccount":" ",
               "paymentReference":null,
               "comment":null
            }
         ]
      }
   ]
}