Använd webhooks för bokningshändelser
Så skickar du bokningsdata till ett externt system när bokningar skapas, ändras, avbokas eller återställs.
Innehållsförteckning
Webhooks gör att Sirvoy automatiskt kan kommunicera med andra verktyg – till exempel genom att tala om för ett nyckelfritt inpasseringssystem när en rumskod ska skapas eller genom att skicka faktureringsuppgifter till ditt bokföringsprogram.
Med en webhook skickar Sirvoy bokningsuppgifter i JSON-format (ett standardiserat sätt för appar att dela data) till en webbadress (URL) som du väljer. En callback sker varje gång data skickas till den URL:en.
Andra program kan ta emot uppgifterna som skickas till URL:en och använda datan för automatiserade uppgifter.
Obs! Webhooks är endast tillgängliga i Sirvoy Pro. Du kan lägga till upp till tio webhooks per konto. Att konfigurera och hantera webhooks kräver teknisk kunskap, så det kan vara bra att ta hjälp av en webbutvecklare.
Skapa en ny webhook för bokningshändelser
- Gå till Inställningar > Sirvoy-konto
- Under Webhook för bokningshändelser, klicka Lägg till
- Ange Callback URL
- Ge webhooken ett namn
- Klicka Spara.
Sirvoy kommer nu att skicka en callback till den URL:en varje gång en bokning skapas, ändras, avbokas eller återställs.
Hur callbacks fungerar och vad som krävs
-
Svarshantering: Servern som tar emot callbacken måste svara med statuskoden
200 OK, vilket betyder att ”allt fungerade”. Om den inte gör det försöker Sirvoy skicka callbacken igen upp till 10 gånger, med allt längre intervall mellan försöken, innan den upphör att försöka. Om callbacks fortsätter att misslyckas, kommer vi att meddela dig via e-post och ta bort webhooken efter en sista påminnelse. -
HTTPS och TLS: Din webhook-URL måste vara säker (börja med
https://) och använda TLS version 1.2 eller högre. TLS (Transport Layer Security) krypterar datan så att ingen kan läsa den medan den skickas. Om ditt HTTPS-certifikat inte är giltigt, kommer Sirvoy inte att skicka någon data. -
Funktionskontroll: Sirvoy kontrollerar ibland om din URL är aktiv genom att skicka en enkel
HTTP GETbegäran (ett sätt att fråga din server "är du där?" utan att skicka data). Din server måste svara med200 OK("allt fungerade") för att dessa kontroller ska lyckas. -
Händelseordning: En webhook skickas för varje bokningshändelse, men händelser kan komma fram i fel ordning – till exempel kan en ändring komma fram innan den ursprungliga bokningshändelsen. Använd tidsstämpeln
generatedAti varje meddelande för att ordna dem i rätt ordning.
Förhindra att brandväggen blockerar callbacks
Om ditt system använder en brandvägg (programvara eller hårdvara som blockerar oönskad internettrafik), kan du behöva vitlista vissa IP-adresser. Att vitlista innebär att tillåta trafik från specifika källor samtidigt som annan trafik blockeras.
Vitlista följande IP-adresser:
34.243.166.60
52.18.11.99
63.34.80.48
54.194.0.85
2a05:d018:e34:5300::/56Callbacks skickas från servrar som stödjer både IPv4 (den äldre standarden för internetadresser) och IPv6 (den nyare).
Exempel på JSON callbacks
Dessa exempel visar vilken typ av data Sirvoy skickar till din webhook-URL och hur den är formaterad.
De är användbara för utvecklare eller andra som bygger ett system som ska ta emot och bearbeta bokningsdata från Sirvoy.
Det första exemplet visar en grundläggande callback för en ny bokning. Det andra innehåller mer information, till exempel fakturor och betalningar, för att visa vad som ingår när ekonomiska data är involverade.
Exempel: Callback för ny bokning
"version": "2.0",
"generatedAt": "2024-05-31T12:11:53.639+00:00",
"event": "new",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": []
}Exempel: Callback för ny bokning med ekonomiska data
{
"version": "2.0",
"generatedAt": "2024-05-31T12:15:23.895+00:00",
"event": "modified",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": [
{
"invoiceNumber": "41002",
"invoiceDate": "2024-06-01",
"dueDate": "2024-06-01",
"receiver": "Acme",
"address": [
"John Doe",
"Fancy street",
"York, NY 11-111",
"United States"
],
"roundingAmount": 0,
"invoiceTotal": 924,
"originInvoice": null,
"invoiceRows": [
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Basic room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Fancy room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 12,
"price": 20,
"rowTotal": 240,
"ledgerAccount": "200",
"rowText": "Breakfast",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 1,
"price": 84,
"rowTotal": 84,
"ledgerAccount": "300",
"rowText": "surcharge",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
}
],
"payments": [
{
"paymentId": 28,
"createdAt": "2024-05-31T12:15:09+00:00",
"valueDate": "2024-06-01",
"amount": 924,
"ledgerAccount": "3606",
"paymentReference": null,
"comment": null
}
]
}
]
}