Genom att lägga till en webhook för bokningshändelser får hotellet möjligheten att ta emot bokningsinformation i JSON-format via en URL.

OBS! Detta kräver en del grundläggande kunskaper om hur man använder en webhook. Fråga din webbutvecklare om du behöver hjälp.

En webhook för bokningshändelser skickar ut en callback till en viss URL och triggas varje gång en bokning skapas, ändras eller avbokas.

Webhook-funktionen för bokningshändelser triggas av:

  • Sirvoys bokningsformulär
  • Formuläret för visa/ändra bokning
  • Bokningar från bokningskanaler

För att aktivera funktionen går man till: Inställningar -> Ert konto -> Webhook för bokningshändelser.

Den mottagande servern måste svara med svarskod 200 (OK), annars kommer anropet att återupprepas var 30:e minut upp till 3 gånger. För att säkerställa sekretess stöder vi endast HTTPS med TLS-version 1.2 och senare. HTTPS-certifikatet måste också vara giltigt, annars skickas ingen data. Bokingsinformationen kommer skickas som en HTTP POST med JSON.

Se också till att din server kommer att svara på en HTTP GET-request med 200 OK. Denna används som en “hälsokontroll” som anropas då och då för att se till att din endpoint är aktiv. Men någon data kommer aldrig att skickas till dig med en HTTP GET.

Webhook callbacks  kommer att göras från nedanstående IP-intervall. Om du vill begränsa trafik till din server måste alla nedanstående intervall vara tillåtna i din brandvägg:

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

Servrarna som skapar callbacks är dual-stack med både ipv4- och ipv6-anslutning. Om du lägger till både ipv4- och ipv6-adresser till ditt domännamn kommer webhook callbacks att ske till den server som svarar först.

Nedan följer några exempel på genererad data i JSON -format när en ny bokning skapas:

{
   "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":[]
}

Så här kan det se ut efter att en kontantfaktura har skapats och en betalning flyttats till en faktura – betalningar och fakturor som denna bokning har ingår också i webhook callbacks. Varje annan ändring resulterar också i en webhook callback med data. Och så här ser webhook:en för bokningshändelser ut i det här exemplet nu:

{
   "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
            }
         ]
      }
   ]
}