Een reiziger opent ChatGPT en typt: "rustig viersterrenhotel bij het strand in Puerto Plata, goed ontbijt, gezinskamers". De assistent noemt drie of vier hotels met per hotel één regel argumentatie. Jouw hotel staat in dat lijstje of niet, en niemand heeft tien blauwe links geopend om te kiezen. Hieronder staat wat dat werkelijk bepaalt, gebaseerd op de hotelsites die Polargate bouwt en onderhoudt in Spanje en het Caribisch gebied.
Hoe een assistent een hotel kiest
Assistenten bouwen dat antwoord uit drie bronnen: een webindex (ChatGPT en Copilot leunen op Bing, de AI-onderdelen van Google gebruiken de index van Google), hun eigen crawlers die jouw pagina's ophalen, en wat de rest van het web over je zegt op Google Maps, TripAdvisor en Booking.
Twee eigenschappen van die crawlers bepalen het grootste deel van de uitkomst:
- Ze halen ruwe HTML op en voeren geen JavaScript uit. GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot en de crawlers van Meta lezen wat je server stuurt, niet wat React daarna rendert.
- In snelle antwoordmodi lezen ze weinig: de title, de H1 en ongeveer de eerste tweehonderd tekens daarna. Een videoheader en een slogan van drie woorden geven ze niets om te citeren.
Je pagina's moeten bestaan zonder JavaScript
Bijna elke hotelsite van de afgelopen vijf jaar is een single page application: de server stuurt een lege schil en de kamers, restaurants en tarieven verschijnen pas als de browser de bundle uitvoert. Voor een AI-crawler is die pagina leeg.
De oplossing is prerendering: een echt HTML-bestand per route en per taal, gegenereerd tijdens de build. Bij een Caribisch resort dat we overnamen liet Search Console vóór de prerendering maar 4 van de ongeveer 30 ingediende pagina's als geïndexeerd zien. Daarna werden 38 Spaanse en Engelse routes als statische HTML geserveerd, gecontroleerd met JavaScript uit. Bij een tweede hotelsite staan nu 22 publieke routes als echte HTML online, elk met eigen title, description, canonical en hreflang.
Prerendering moet je ook controleren. In onze audit van augustus 2026 op een hotelsite, waarbij 48 bevestigde bevindingen zijn opgelost, bleek maar één van de twee kamertypes in de geprerenderde HTML te staan, bleef de headerafbeelding tot de hydration verborgen achter een gordijn van 4,5 seconden en werden de tellers op nul geserveerd. Voor een machine is dat een dunne, halflege pagina.
Drie controles voor vandaag
- Laad de pagina met JavaScript uitgeschakeld. Verdwijnt er een kamer, een tarief of een restaurant, dan bestaat het niet.
- Vraag de pagina op zoals een bot dat doet, met
curl -A "OAI-SearchBot" https://jouwhotel.nl/kamers, en lees de HTML die terugkomt. - Controleer of er aan de rand niets is dat die user agents blokkeert. Botbescherming die een AI-crawler een challenge voorschotelt haalt je uit het antwoord, geruisloos.
Gestructureerde data voor het hotel, de kamers en de restaurants
Met schema.org geef je een machine een ondubbelzinnige feitenkaart. Wees eerlijk over wat dat oplevert: een Ahrefs-onderzoek uit 2026 met 1.885 pagina's met toegevoegde markup tegenover 4.000 controlepagina's vond geen noemenswaardige stijging in AI-citaties door schema alleen, en de FAQ-rich results van Google zijn in mei 2026 gestopt. Gestructureerde data wint de aanbeveling niet. Het haalt dubbelzinnigheid weg, en dubbelzinnigheid is precies wat een hotel buiten het antwoord houdt.
Wat je voor een hotel minimaal publiceert:
Hotelmet statutaire naam, adres, coördinaten, telefoon, sterrenklasse, voorzieningen ensameAsnaar je geverifieerde vermeldingen op Google Maps, TripAdvisor en Booking.- Eén
HotelRoomper kamertype, met bezetting, oppervlakte in vierkante meters en een prijsrange die klopt met de zichtbare pagina. Restaurantper outlet,EventVenuevoor zalen en bruiloften met echte capaciteiten,HealthAndBeautyBusinessvoor de spa.ReserveActiondie naar de URL van de boekingsmotor wijst, zodat de assistent weet waar geboekt wordt.BreadcrumbListen eenWebPage-node met een echtedateModified.
Twee regels, allebei met schade en schande geleerd. Markeer nooit iets dat niet zichtbaar op de pagina staat: verborgen prijzen en verzonnen openingstijden zijn in strijd met het beleid van Google. En verzin nooit een beoordeling. Eén site die we overnamen publiceerde een gemiddelde van 4,7 uit 2.847 reviews die bij geen enkele echte bron hoorde. Wij haalden dat weg en zetten het werkelijke TripAdvisor-cijfer van het hotel neer, 4,2 van de 5 uit 9.239 reviews, als zichtbare tekst naast de markup.
Talen, reviews en vragen in zichtbare tekst
Reizigers vragen in hun eigen taal, dus elke taal heeft een eigen URL met eigen geprerenderde inhoud: /habitaciones en /en/rooms, niet één pagina die de teksten tijdens runtime omwisselt. Zet er wederkerige hreflang plus x-default bij en stel het lang-attribuut van de html per route in. Dat laatste klinkt als een detail. Bij een site die wij hebben doorgelicht werd elke Engelse pagina geserveerd met lang="es" en stond er Spaanse tekst op de Engelse juridische pagina's. Redirect nooit op Accept-Language of IP-adres zonder crawlers uit te zonderen, anders zien de engines altijd maar één taal van je site.
Geef de assistent daarna iets om te citeren:
- Echte reviews in de paginatekst, met bron, naast het gemiddelde van het platform waar ze vandaan komen.
- Een vragenpagina die geschreven is zoals gasten het echt vragen. Eén van onze hotelsites publiceert 27 echte vragen in zes groepen, in native
<details>-elementen zodat het antwoord in de HTML staat of het accordeon nu open of dicht is, met bijpassendeFAQPage-markup. - Onder elke vraag een direct antwoord van 40 tot 70 woorden dat op zichzelf staat: inchecken vanaf 15:00 uur, luchthaven op 20 minuten rijden, all-inclusive dekt deze vier restaurants.
Een boekingsmotor die de pagina niet verbergt
De boekingsmotor is de meest voorkomende zelf toegebrachte wond. Drie patronen om te vermijden:
- Hij neemt de pagina over. Opent de beschikbaarheidswidget bij het laden als schermvullende laag, of bestaat het kamerdetail alleen binnen de iframe van de motor, dan staat niets daarvan in jouw HTML: inhoud in een iframe van een derde is van die derde.
- Hij blokkeert het renderen van de pagina. Een zware widget die vóór de header laadt kost je Core Web Vitals en levert de crawler een traag, leeg document. Laad hem uitgesteld, na de inhoud.
- De tarieven bestaan alleen daarbinnen. Publiceer een eerlijke range in je eigen HTML ("tweepersoonskamers vanaf X EUR per nacht, all-inclusive") en laat de actuele prijs met datums aan de motor over.
Op de sites die wij beheren is de motor een globale widget die uitgesteld initialiseert en zichzelf verbergt zolang er een dialoog open staat, met een ReserveAction in de gestructureerde data die ernaar wijst. De pagina leest nog steeds goed zonder de motor.
Hetzelfde hotel, overal hetzelfde geschreven
Een assistent stelt jouw hotel samen uit veel bronnen. Spreken die elkaar tegen, dan word je een paar zwakke entiteiten in plaats van één duidelijke.
- Maak één feitenkaart: statutaire naam, handelsnaam, adres, coördinaten, telefoon, categorie en één zin beschrijving. Neem die letterlijk over in de footer van de site, Google Bedrijfsprofiel, Bing Places, TripAdvisor, Booking en de vermelding van je keten.
- Controleer de coördinaten. Op een hotelsite lag het gepubliceerde punt 430 meter van de echte ingang.
- Verifieer het domein in Bing Webmaster Tools en dien de sitemap in. ChatGPT en Copilot putten uit de index van Bing, en Search Console alleen laat je dat niet zien.
- Ping IndexNow bij elke productiedeploy en zet echte
lastmod-datums uit de inhoud in de sitemap, nooit de builddatum. - Schrap claims die je niet kunt onderbouwen. Wij haalden "tot 200 gasten" en een globale "5/5" van een hotelsite af omdat geen enkele bron ze staafde.
Niets hiervan is een truc en niets komt met een garantie op positie: niemand kan je een plek beloven in een antwoord dat elke keer opnieuw wordt gegenereerd. Wat je er wel mee krijgt, is een hotel dat een machine kan lezen, correct kan beschrijven en kan citeren. Polargate start dit werk met een Discovery Sprint tegen een vaste prijs vanaf 4.900 EUR, bouwt daarna, en blijft daarna controleren met een maandelijkse CARE-retainer, want de crawlers, de boekingsmotor en je eigen kameraanbod veranderen allemaal.



