Ένα απόγευμα του Αυγούστου μπήκε κράτηση από το Airbnb για τέσσερις νύχτες, σε διαμέρισμα όπου ήδη έμενε επισκέπτης από το Booking.com. Ο πελάτης μας έχει δύο διαμερίσματα, δικό του site κρατήσεων που φτιάξαμε εμείς, και τα δύο μεγάλα κανάλια συγχρονισμένα μέσω iCal. Όλα έδειχναν «συγχρονισμένα» και στις τρεις πλευρές.
Το Airbnb ακύρωσε την κράτηση με πλήρη επιστροφή στον επισκέπτη και χωρίς ποινή για τον οικοδεσπότη, αφού του δείξαμε τι είχε συμβεί. Το πιο χρήσιμο όμως ήταν τι βρήκαμε ψάχνοντας το γιατί, γιατί δεν είναι σφάλμα μιας πλατφόρμας. Είναι ο τρόπος που λειτουργεί το iCal, μαζί με μια δική μας αλλαγή που ήταν λογική και είχε παρενέργεια.
Πώς δουλεύει το iCal, και τι δεν κάνει
Το iCal είναι ένα link που τελειώνει σε .ics και περιέχει τις ημερομηνίες που είναι πιασμένες. Κάθε πλατφόρμα δίνει το δικό της link και διαβάζει τα links των άλλων. Τίποτα δεν «σπρώχνεται». Η κάθε πλευρά πηγαίνει και ρωτάει όποτε θέλει.
- Το Airbnb γράφει στη βοήθειά του ότι ανανεώνει τα εισαγόμενα ημερολόγια περίπου κάθε 3 ώρες, με κουμπί για χειροκίνητη ανανέωση και όριο στο πόσο συχνά μπορεί να ζητηθεί.
- Η Booking.com στη σελίδα της για partners λέει ότι ο συγχρονισμός δεν είναι άμεσος και μπορεί να χρειαστεί έως δύο ώρες.
- Το iCal μεταφέρει μόνο διαθεσιμότητα. Όχι τιμές, όχι ελάχιστη διαμονή, όχι στοιχεία επισκέπτη.
Άρα ακόμα κι όταν όλα λειτουργούν σωστά, υπάρχει ένα παράθυρο ωρών όπου η ίδια νύχτα είναι ανοιχτή σε δύο κανάλια. Αυτό είναι το γνωστό ρίσκο του iCal, και για ένα μικρό κατάλυμα συνήθως είναι αποδεκτό. Η δική μας περίπτωση ήταν άλλη.
Τι έγινε πραγματικά
Η Booking.com, όταν εξάγει το ημερολόγιό της, δεν συμπεριλαμβάνει τις ημερομηνίες που έκλεισαν επειδή τις διάβασε από εισαγόμενο ημερολόγιο. Είναι λογική προστασία από βρόχους: δεν σου ξαναστέλνει ό,τι της έστειλες εσύ. Το είδαμε καθαρά στο extranet: ο Σεπτέμβριος ήταν κόκκινος με ετικέτα το δικό μας site, και στο export της Booking δεν υπήρχε ούτε ένα event του Σεπτεμβρίου.
Μια εβδομάδα νωρίτερα είχαμε αλλάξει το export του site ώστε να περιλαμβάνει και τις κρατήσεις που έρχονται από τα κανάλια, για να είναι πλήρες. Από εκείνη τη στιγμή στέλναμε στη Booking και τις δικές της κρατήσεις. Ο κύκλος ήταν ο εξής:
- Πραγματική κράτηση στη Booking.com.
- Το site τη διαβάζει και κλείνει τις μέρες.
- Το export του site στέλνει πίσω στη Booking τις ίδιες μέρες ως κλειστές.
- Η Booking βλέπει τις μέρες κλειστές από εξωτερικό ημερολόγιο και σταματά να τις εξάγει, μαζί με την κράτηση.
- Το site βλέπει την κράτηση να «εξαφανίζεται», μετά από τρεις διαδοχικές αναγνώσεις τη θεωρεί ακυρωμένη και ανοίγει τις μέρες.
- Οι μέρες φεύγουν ανοιχτές προς το Airbnb, η Booking ξαναδημοσιεύει την κράτηση, και ο κύκλος ξεκινά πάλι.
Ο κύκλος γύριζε κάθε 2 με 3 ώρες. Στο ένα διαμέρισμα μετρήσαμε 84 κύκλους ακύρωσης και επαναφοράς σε πέντε μέρες. Κάθε φορά οι νύχτες έμεναν ανοιχτές στο Airbnb για λίγο. Μία από αυτές τις φορές αρκούσε.
Ένα δεύτερο εύρημα έκανε την εικόνα πιο θολή: η Booking φτιάχνει το αναγνωριστικό κάθε κράτησης στο iCal από το εύρος ημερομηνιών. Όσο ο επισκέπτης ήταν ήδη μέσα, το εύρος «κυλούσε» κάθε πρωί (9-16, μετά 10-16, μετά 11-16), οπότε κάθε μέρα εμφανιζόταν ως νέα κράτηση. Γι’ αυτό είχαμε και διπλοεγγραφές στο site.
Η αλλαγή που το πυροδότησε ήταν δική μας. Το λέμε γιατί είναι το πιο χρήσιμο μάθημα: σε ένα δίκτυο ημερολογίων, κάθε αλλαγή στο τι εξάγεις αλλάζει και το τι σου επιστρέφουν οι άλλοι.
Τι αλλάξαμε
1. Export ανάλογα με το ποιος ρωτάει. Το site αναγνωρίζει αν το αίτημα έρχεται από τη Booking ή από το Airbnb και δεν στέλνει πίσω σε κανένα κανάλι τις μέρες που έχει κλείσει μόνο αυτό το ίδιο. Ό,τι αντιστοιχεί σε πραγματική κράτηση του site ή άλλου καναλιού στέλνεται πάντα. Στο ένα διαμέρισμα, αυτό που διάβαζε η Booking έπεσε από 399 events σε 21.
2. Κράτηση που δεν ξεκλειδώνει μόνη της. Κάθε νύχτα που οποιοδήποτε κανάλι δήλωσε ποτέ ως κρατημένη μπαίνει σε ένα μητρώο και μένει κλειστή μέχρι να την ελευθερώσει άνθρωπος. Αποδείχτηκε χρήσιμο μέσα σε μία ώρα: όταν το Airbnb ακύρωσε τη λάθος κράτηση, οι νύχτες έμειναν κλειστές. Χωρίς αυτό θα άνοιγαν ξανά, με τον επισκέπτη της Booking μέσα στο διαμέρισμα.
3. Αναφορά που διαβάζεται. Κάθε Δευτέρα στις 08:00 ο ιδιοκτήτης παίρνει email με τις κρατήσεις ανά διαμέρισμα, την κατάσταση κάθε ημερολογίου και πότε ανανεώθηκε τελευταία φορά. Ξεχωριστό email φεύγει την ίδια μέρα μόνο αν συμβεί κάτι κρίσιμο: η ίδια νύχτα κρατημένη από δύο κανάλια, ημερολόγιο που δεν ανανεώθηκε για πάνω από 6 ώρες, ή καμία ανάγνωση ημερολογίου μέσα σε 24 ώρες. Δείχνει επίσης νύχτες που μένουν κλειστές χωρίς να τις δικαιολογεί πια καμία κράτηση, γιατί κι αυτό είναι χαμένο έσοδο.
Μετά την αλλαγή, η Booking ξαναδημοσίευσε την κράτησή της κανονικά, και η κράτηση στο site επανήλθε μόνη της χωρίς χειροκίνητη παρέμβαση.
Αν δουλεύεις με iCal, έλεγξε αυτά
- Τι εξάγει η Booking σου. Στη σελίδα συγχρονισμού ημερολογίων του extranet υπάρχει επιλογή αν το export περιέχει μόνο κρατημένες ημερομηνίες ή και τις κλειστές. Να ξέρεις ποια χρησιμοποιείς.
- Πού καταλήγει κάθε ημερολόγιο. Σχεδίασε σε χαρτί ποιος διαβάζει ποιον. Αν το A διαβάζει το B και το B διαβάζει το A μαζί με όσα ήρθαν από το C, έχεις βρόχο.
- Τι κάνει το σύστημά σου όταν μια κράτηση εξαφανίζεται. Αν την ακυρώνει αυτόματα και ανοίγει τις μέρες, εκεί είναι το ρίσκο. Μια κράτηση που χάνεται από ένα feed δεν σημαίνει πάντα ακύρωση.
- Πότε ανανεώθηκε κάθε ημερολόγιο. Το Airbnb δείχνει την ώρα της τελευταίας ανανέωσης για κάθε συνδεδεμένο ημερολόγιο. Αν είναι παλιά, κάτι δεν διαβάζεται.
- Κρατήσεις της ίδιας μέρας. Με καθυστερήσεις ωρών στον συγχρονισμό, μια κράτηση για απόψε από το ένα κανάλι μπορεί να μη φτάσει εγκαίρως στο άλλο. Αν έχεις τέτοιο ιστορικό, σκέψου ελάχιστη προειδοποίηση πριν την άφιξη.
Πότε δεν φτάνει το iCal; Όταν έχεις πολλές μονάδες στον ίδιο τύπο δωματίου, όταν θέλεις οι τιμές και η ελάχιστη διαμονή να ενημερώνονται παντού από ένα σημείο, ή όταν τα κανάλια γίνονται περισσότερα από δύο. Εκεί χρειάζεσαι σύνδεση μέσω API, δηλαδή channel manager, και booking engine στο δικό σου site που διαβάζει την ίδια διαθεσιμότητα.
Τι φτιάχνουμε για καταλύματα, από το site κρατήσεων μέχρι τον συγχρονισμό με τα κανάλια, είναι στη σελίδα Hospitality. Τα κανάλια που έχουμε συνδέσει σε παραγωγή είναι στις Συνδέσεις. Αν έχεις ήδη δει διπλοκρατήσεις και δεν ξέρεις από πού έρχονται, γράψε μας: ξεκινάμε από τα ίδια τα feeds, όχι από υποθέσεις.
