19% més ingressos: automatitza els preus de l'hotel amb IA (Duetto, n8n i Slack)

Close-up of a metallic hotel sign mounted on a textured wall.
Tutorial

19% més ingressos: automatitza els preus de l'hotel amb IA (Duetto, n8n i Slack)

Converteix les recomanacions de preus de Duetto en alertes de Slack amb n8n, sense revisar tarifes a mà.

Quin Problema Resol Això?

La majoria d'hotels independents i de mida mitjana ja fan servir un motor de pricing dinàmic com el GameChanger de Duetto, però l'última milla continua sent manual: algú entra al tauler una o dues vegades al dia, revisa els canvis de tarifa recomanats, decideix què aprova i actualitza els canals. Aquest pas de revisió no escala més enllà d'un grapat de propietats, i implica que els canvis de tarifa arriben al mercat amb hores de retard — de vegades un dia sencer, sobretot els caps de setmana, quan ningú no mira el tauler.

El motor de pricing en si mateix ja fa una feina sofisticada — processa el ritme de reserves, les tarifes de la competència, esdeveniments locals i previsions de demanda. El coll d'ampolla no és l'anàlisi; és aconseguir que aquesta anàlisi arribi a la persona adequada, en el moment adequat, en un format que de debò es llegirà en lloc de quedar en una pestanya que ningú obre. Aquesta guia automatitza precisament aquesta última milla, amb un flux petit de n8n que converteix la sortida de Duetto en una alerta de Slack llegible i a punt per actuar.

Una enquesta de Lighthouse del 2024 a més de 1.200 professionals de l'hostaleria va trobar que el 63% de les empreses ja fa servir IA d'alguna manera en revenue management, i el 75% espera que la IA tingui un impacte important en la seva estratègia de revenue management en els pròxims cinc anys.

Eines Necessàries

Pots executar tota aquesta capa d'automatització per menys de 10 €/mes per sobre d'un contracte de Duetto ja existent — el cost principal és el mateix RMS, no l'automatització.

EinaQuè faPreuEnllaç
Duetto GameChangerGenera les recomanacions de pricing dinàmic a partir de demanda, competència i reservesSense pla gratuït públic — pressupost empresarial a midaduettocloud.com
n8nExtreu, filtra i formata els canvis de tarifa en resums a punt per a SlackGratis — Community Edition autoallotjada, execucions il·limitadesn8n.io
SlackEntrega el resum de pricing formatat a l'equip de revenue managementGratis — historial de 90 dies, 10 integracionsslack.com

Guia d'Implementació Pas a Pas

Aquests 12 passos assumeixen que ja tens un compte actiu de Duetto GameChanger. Si no el tens, comença per aquí — n8n només pot encaminar i formatar recomanacions de preu que Duetto (o un altre RMS comparable) ja produeix; no pot generar-les pel seu compte.

Pas 1: Confirmar l'Accés a l'API de Duetto i Obtenir Credencials

Duetto no publica un generador de claus API d'autoservei al seu tauler estàndard, i no hi ha un connector natiu confirmat per a n8n a dia d'avui [REQUEREIX VERIFICACIÓ]. Contacta amb el teu gestor de compte de Duetto i sol·licita accés a l'API per a la propietat o propietats que vulguis automatitzar — en concret, l'exportació de recomanacions de tarifa que fa servir GameChanger.

Pregunta explícitament quin mètode d'autenticació admeten (clau API, OAuth2 amb credencials de client, o autenticació bàsica amb llista blanca d'IP són els patrons més habituals en proveïdors d'hotel-tech) i sol·licita una propietat de prova si està disponible, per no construir directament contra tarifes de producció el primer dia.

  • Escriu o truca al teu gestor de compte de Duetto per sol·licitar accés a l'API/exportació
  • Confirma el mètode exacte d'autenticació i els límits d'ús
  • Sol·licita un ID de propietat de prova per a les primeres proves
  • Desa les credencials en un gestor de contrasenyes — mai les posis directament al JSON del flux de n8n

Consell: Demana específicament l'endpoint d'exportació de recomanacions o canvis de tarifa — alguns proveïdors de RMS exposen les dades de reserves molt més fàcilment que les dades de decisió de preu, i necessites aquestes últimes per a aquest flux.

Pas 2: Configurar la Teva Instància de n8n

Tens dues opcions: autoallotjar la Community Edition gratuïta en un petit VPS (normalment entre 4 i 7 €/mes en un proveïdor com Hetzner o DigitalOcean), o fer servir n8n Cloud des de 24 €/mes amb una prova gratuïta de 14 dies. Per a una automatització d'una sola propietat com aquesta, autoallotjar sol ser l'opció més econòmica, ja que la Community Edition no té límits d'execució.

Si optes per autoallotjar, el camí més ràpid és la imatge oficial de Docker — una sola comanda docker run et dona una instància funcionant en menys de deu minuts. Assegura't de configurar HTTPS (mitjançant un proxy invers com Caddy o Nginx) abans de connectar credencials reals, ja que els URL de webhook i l'emmagatzematge de credencials de n8n mai haurien de funcionar sobre HTTP sense xifrar en producció.

  • Tria autoallotjat (gratis) o n8n Cloud (des de 24 €/mes)
  • Desplega amb la imatge oficial de Docker si autoallotges
  • Configura HTTPS mitjançant un proxy invers abans d'afegir credencials
  • Crea el teu primer flux buit i anomena'l clarament, per exemple 'Alertes de Tarifa Duetto'

Consell: Si no et sents còmode gestionant un VPS, la prova de 14 dies de n8n Cloud és suficient per construir i provar aquest flux completament abans de decidir si l'estalvi d'autoallotjar val la pena pel manteniment.

Pas 3: Afegir un Disparador Programat (Schedule Trigger)

Obre el teu nou flux i afegeix un node Schedule Trigger com a punt d'entrada. Això determina cada quant temps n8n consulta Duetto a la recerca de noves recomanacions de tarifa. Cada 4 hores és un punt de partida raonable per a la majoria de propietats — prou freqüent per captar canvis de demanda del mateix dia, i prou espaiat per no superar els límits d'ús que Duetto pugui imposar.

Si l'equip d'integracions de Duetto confirma suport de webhooks sortints per al teu compte, pots substituir el Schedule Trigger per un node Webhook, que reacciona a l'instant quan Duetto genera una nova recomanació en lloc de consultar a intervals fixos. Tracta-ho com una optimització per a més endavant, no com un bloqueig per a la teva primera versió.

  • Afegeix un node Schedule Trigger
  • Configura l'interval cada 4 hores (ajusta-ho segons el ritme de reserves de la teva propietat)
  • Anota: pregunta a Duetto si hi ha webhooks sortints disponibles per al teu compte [REQUEREIX VERIFICACIÓ]
  • Desa el flux amb un nom descriptiu abans de continuar

Consell: Comença amb un interval més llarg (per exemple, cada 6 hores) durant les proves, i redueix-lo després de confiar en el flux — així evites inundar el teu canal de prova de Slack mentre encara estàs depurant.

Pas 4: Configurar el Node HTTP Request Per Cridar l'API de Duetto

Afegeix un node HTTP Request després del disparador. Aquest és el node que realment extreu les dades de Duetto — com que no existeix un node dedicat de Duetto a la llibreria de n8n, aquest node genèric fa la feina amb les credencials i l'endpoint que et va proporcionar el teu gestor de compte al Pas 1.

Configura el mètode (normalment GET per a una exportació de recomanacions), l'URL complet de l'endpoint, i afegeix la teva capçalera d'autenticació (el més habitual és `Authorization: Bearer {token}` o una capçalera de clau API personalitzada — confirma el nom exacte de la capçalera amb Duetto, ja que els proveïdors d'hotel-tech són inconsistents en això). Desa la credencial fent servir el gestor de Credencials integrat de n8n en lloc d'enganxar la clau directament al node, perquè quedi xifrada en repòs.

  • Afegeix un node HTTP Request connectat al disparador
  • Configura el mètode i l'URL de l'endpoint proporcionats per Duetto
  • Crea una Credencial al gestor de Credencials de n8n per a la clau/token API
  • Executa una prova única contra la teva propietat de prova per confirmar una resposta 200

Consell: Si la teva primera prova retorna un 401 o 403, revisa amb cura el nom exacte de la capçalera que espera Duetto — és el punt de fallada més comú en aquest pas, més fins i tot que credencials incorrectes.

Pas 5: Processar la Resposta JSON

La resposta de l'API de Duetto serà un JSON amb les tarifes recomanades per tipus d'habitació i data. Afegeix un node Code (o un node Set, per a casos més senzills) per extreure només els camps que necessites: tipus d'habitació, data, tarifa actual, tarifa recomanada, i el percentatge de canvi entre ambdues.

Aquest és també el lloc adequat per calcular tu mateix el camp de percentatge de canvi si la resposta de Duetto no l'inclou ja — una expressió senzilla com `((recomanada - actual) / actual) * 100` al node Code et dona el número amb el qual filtraràs en el pas següent.

  • Afegeix un node Code després del node HTTP Request
  • Mapeja tipus_habitacio, data, tarifa_actual i tarifa_recomanada des de la resposta
  • Calcula el percentatge_canvi si la resposta de Duetto no el proporciona directament
  • Genera un array net d'objectes, un per cada recomanació de tarifa

Consell: Registra la resposta en brut al log d'execució de n8n durant les proves — els noms de camp de Duetto no estan documentats públicament, així que probablement necessites inspeccionar l'estructura real de la resposta abans que la teva lògica de processament sigui correcta.

Pas 6: Filtrar els Canvis Rellevants

Afegeix un node Filter que només deixi passar els canvis de tarifa per sobre d'un llindar que tu defineixis — el 5% és un punt de partida raonable per a la majoria de propietats, però ajusta'l segons amb quina freqüència Duetto recomani ajustos petits. Sense aquest pas, el teu canal de Slack s'omplirà de soroll per ajustos de l'1-2% que ningú necessita revisar individualment.

Considera afegir una segona condició que sempre deixi passar canvis per sobre d'un llindar molt més alt (per exemple, el 15%) independentment de qualsevol altre filtre, ja que els moviments inusualment grans solen indicar o bé un esdeveniment de demanda important que convé conèixer immediatament, o un error de dades que convé detectar ràpid.

  • Afegeix un node Filter (o IF) després del node Code
  • Configura la condició principal: percentatge_canvi > 5 (valor absolut)
  • Opcionalment, afegeix una regla secundària de 'marcar sempre' per a canvis superiors al 15%
  • Prova amb una barreja de canvis simulats petits i grans per confirmar que el filtre funciona com esperes

Consell: La majoria d'equips fixen aquest llindar massa baix la primera setmana, pateixen fatiga d'alertes en pocs dies i comencen a ignorar el canal del tot. Comença al 5% i baixa'l només si comproves que et perds canvis rellevants.

Pas 7: Agrupar Canvis per Tipus d'Habitació i Interval de Dates

Una llista plana de canvis individuals és difícil de llegir ràpid. Afegeix un pas d'agregació (amb el node Aggregate o Summarize de n8n, o un node Code personalitzat) per agrupar els canvis filtrats per tipus d'habitació, i després per interval de dates, de manera que el missatge final de Slack es llegeixi com un resum estructurat en lloc d'un mur de línies individuals.

Per a propietats amb molts tipus d'habitació, considera també ordenar els grups per la mida del canvi — les variacions percentuals més grans primer — perquè els elements més urgents apareguin a l'inici del missatge en lloc de quedar enterrats a la meitat.

  • Afegeix un node Aggregate/Summarize després del node Filter
  • Agrupa per tipus_habitacio i després per interval_dates
  • Ordena els grups per percentatge_canvi de manera descendent
  • Verifica que l'estructura de sortida coincideix amb el que espera el teu pas de formatatge de Slack

Consell: Si gestiones diverses propietats amb un sol compte de Duetto, afegeix el nom de la propietat com a clau d'agrupació principal abans del tipus d'habitació — d'altra manera, un resum multi-propietat es torna il·legible ràpidament.

Pas 8: Formatar el Resum amb Slack Block Kit

Els missatges de Slack en text pla es llegeixen per damunt i s'ignoren. Fes servir el format Block Kit de Slack — seccions, divisors i parells de camps en negreta — per convertir les dades agrupades en un resum que de debò sigui fàcil de llegir al mòbil entre reunions. Un node Code (o el mateix node Slack de n8n, que admet JSON de Block Kit directament) construeix aquesta estructura a partir de les teves dades agrupades.

Mantén cada grup de tipus d'habitació en una línia de capçalera curta més 2-4 camps tipus bullet mostrant interval de dates, tarifa actual, tarifa recomanada i percentatge de canvi. Resisteix la temptació d'incloure totes les dades disponibles — l'objectiu és una lectura de 10 segons, no un informe complet.

  • Construeix una estructura JSON de Block Kit: un bloc de secció per grup de tipus d'habitació
  • Fes servir text en negreta per al tipus d'habitació i un indicador de color per a la direcció (puja/baixa)
  • Afegeix un bloc divisor entre grups
  • Prova el missatge renderitzat en un canal de proves privat abans de connectar-lo a producció

Consell: Afegeix un petit indicador amb emoji 🟢/🔴 per a pujades i baixades de tarifa — sembla trivial, però és la pista visual més ràpida per a un revenue manager que escaneja el canal en 5 segons.

Pas 9: Connectar el Node de Slack i Provar l'Enviament

Afegeix el node natiu de Slack de n8n, autentica'l amb un token d'app/bot de Slack (creat des del panell d'API de Slack, amb com a mínim l'scope `chat:write`), i apunta'l a un canal dedicat — no publiquis en un canal general on es perdrà. Executa el flux complet d'extrem a extrem contra les teves dades de prova i confirma que el missatge es renderitza correctament tant a Slack d'escriptori com al mòbil.

Si tens previst afegir botons d'aprovació interactius més endavant (Pas 11), demana també ara els scopes `chat:write.public` i interactivitat, per no haver de reautoritzar l'app de Slack a mig construir la funció següent.

  • Crea una app de Slack i un token de bot amb scope chat:write
  • Crea un canal dedicat #revenue-pricing (o similar)
  • Afegeix el node de Slack, autentica'l i apunta'l al nou canal
  • Executa una prova d'extrem a extrem i revisa el missatge a escriptori i mòbil

Consell: Silencia les notificacions del canal de proves mentre depures — disparàs desenes d'execucions de prova abans que el format quedi bé, i són moltes vibracions del mòbil si no ho fas.

Pas 10: Afegir un Flux de Resum Setmanal

A més del flux d'alertes en temps real, duplica'l en un segon flux independent que s'executi una vegada per setmana (per exemple, els dilluns al matí) i agregui tots els canvis marcats de la setmana en un únic resum tipus informe — total de canvis marcats, percentatge mitjà de canvi, i quins tipus d'habitació van tenir més ajustos.

Aquesta vista setmanal és el que realment volen veure la majoria de directors generals i grups propietaris; les alertes en temps real són per al revenue manager que pren decisions del dia a dia, mentre que el resum setmanal sosté la conversa més àmplia sobre estratègia de preus.

  • Duplica el flux principal com un nou flux setmanal independent
  • Canvia el Schedule Trigger perquè s'executi una vegada per setmana
  • Ajusta el pas d'agregació per resumir tota la setmana en lloc d'una sola extracció
  • Envia el resum setmanal a un canal diferent o inclou propietat/direcció general com a membres

Consell: Fixa el missatge de resum setmanal al canal — es converteix en un punt de referència ràpid per a converses de 'com va anar el pricing aquest mes' sense haver de buscar entre l'historial d'alertes en temps real.

Pas 11: Afegir Botons d'Aprovació Interactius (Opcional)

Per a equips que volen un registre d'auditoria formal en lloc d'una notificació passiva, afegeix botons interactius de Slack (Aprovar / Anul·lar) a cada missatge agrupat fent servir els components interactius de Block Kit de Slack. En prémer un botó es dispara un segon webhook de n8n que registra la decisió — qui va prémer, quan, i quina opció — en un full de Google Sheets.

Aquest pas afegeix complexitat real (necessitaràs un endpoint de webhook públic i verificar les peticions d'interactivitat de Slack), així que la majoria d'equips haurien de tenir primer el flux bàsic d'extreure-filtrar-publicar funcionant de manera fiable, i afegir això com una segona iteració un cop provada la base.

  • Activa Interactivitat i Shortcuts als ajustos de la teva app de Slack amb un URL de webhook públic
  • Afegeix botons Aprovar/Anul·lar a cada missatge de Block Kit
  • Crea un segon flux de webhook a n8n per rebre les dades del clic al botó
  • Registra cada decisió (usuari, data i hora, opció triada) en un full de Google Sheets dedicat

Consell: Verifica la signatura de la petició de Slack al webhook entrant abans de processar-la — saltar-te aquest pas deixa el teu endpoint d'aprovació obert a qualsevol que descobreixi l'URL.

Pas 12: Afegir Gestió d'Errors i Monitoritzar el Flux

Afegeix un flux d'Error Trigger (el mecanisme de gestió d'errors integrat de n8n) que s'activi quan qualsevol node del teu flux principal falli — el més habitual, el node HTTP Request de Duetto, si les credencials caduquen o l'API no està disponible temporalment. Dirigeix les notificacions d'error a un canal #alertes separat perquè una extracció fallida no es tradueixi silenciosament en que el teu revenue manager no vegi cap missatge i assumeixi que no hi ha canvis.

Finalment, revisa el log d'execució de n8n setmanalment durant el primer mes per detectar problemes silenciosos — com un llindar de filtre que deixa passar massa o massa poc — abans que es converteixin en hàbits que ningú qüestiona.

  • Crea un flux d'Error Trigger dedicat a n8n
  • Connecta'l per enviar alertes de fallada a un canal #alertes separat a Slack
  • Inclou el nom del node fallat i el missatge d'error a l'alerta per depurar ràpid
  • Revisa el log d'execució setmanalment durant el primer mes després del llançament

Consell: Posa un recordatori al calendari per revisar les credencials de l'API de Duetto 30 dies abans de qualsevol data de caducitat de token que t'hagin donat — les credencials caducades són el mode de fallada silenciosa més comú en aquest tipus d'integració.

Casos d'Ús Reals

Cas d'Ús 1: Resort Independent a la Costa, 120 Habitacions

Un resort independent de 120 habitacions que fa servir el GameChanger de Duetto el va connectar a aquest mateix flux de n8n i Slack, amb un llindar de rellevància del 5% i un interval d'extracció de 4 hores. La revenue manager va passar d'una revisió diària fixa de tauler de 45 minuts a llegir un resum de Slack en menys de 5 minuts entre reunions, i va reportar detectar pics de demanda del mateix dia (provocats per un calendari d'esdeveniments regionals) hores abans del que hauria permès el procés manual anterior.

Cas d'Ús 2: Grup Hoteler Boutique, 4 Propietats

Un grup boutique amb quatre propietats d'unes 50 habitacions cadascuna, sobre un compte de Duetto compartit, va adaptar el flux per agrupar les alertes primer per propietat i després per tipus d'habitació, en un únic canal compartit. L'única revenue manager del grup — que abans entrava en quatre taulers separats cada dia — va consolidar la revisió en un sol canal, i va afegir el flux opcional de botons d'aprovació (Pas 11) específicament per mantenir un registre d'auditoria clar entre propietats per a l'informe mensual del grup propietari.

Errors Habituals i Com Evitar-los

Fixar el llindar de rellevància massa baix la primera setmana és l'error més comú. Els equips volen veure-ho tot al principi, el canal s'omple de soroll en pocs dies, i la gent comença a ignorar-lo del tot. Comença al 5% i ajusta'l només després d'una setmana completa de dades reals.

Saltar-se el pas de propietat de prova és el segon error més freqüent. Construir directament contra tarifes de producció vol dir que un bug de processament al Pas 5 o 6 pot generar una alerta enganyosa sobre la qual algú actua abans que ningú no noti l'error de fons.

Un tercer problema freqüent és publicar les alertes en un canal general o ja molt actiu en lloc d'un dedicat. Les alertes de preus que competeixen amb la conversa diària es perden en minuts, anul·lant tot el propòsit de l'automatització.

El més crític: mai posis la credencial de l'API de Duetto directament al node HTTP Request. Fes servir el gestor de Credencials de n8n perquè la clau quedi xifrada en repòs i es pugui rotar sense tocar el flux en si mateix.

Resultats Esperats

Comparació basada en implementacions típiques d'aquest flux:

AbansDesprés
El revenue manager revisa el tauler de Duetto a mà 2 vegades al dia (~45 min/dia en total)Un resum de Slack arriba automàticament cada 4 hores; revisar-lo porta menys de 5 minuts
Els canvis de tarifa s'aproven hores després que Duetto els recomani, de vegades l'endemà hàbil després d'un cap de setmanaEls canvis rellevants es marquen i s'actua sobre ells en la mateixa hora hàbil, inclosos els caps de setmana
No existeix registre de qui va aprovar quin canvi de tarifa ni quanCada decisió d'aprovar/anul·lar queda registrada automàticament en un full de Google Sheets mitjançant botons de Slack
Un equip multi-propietat entra en un tauler de RMS diferent per cada propietatUn únic canal de Slack agrupa els canvis marcats de totes les propietats

Pròxims Passos

Un cop el flux bàsic d'extreure-filtrar-publicar és estable, els pròxims passos naturals són: afegir el flux d'aprovació interactiu (Pas 11) si necessites un registre d'auditoria formal, ampliar el flux de resum setmanal per comparar el rendiment amb la mateixa setmana de l'any anterior, i explorar si l'API més àmplia de Duetto exposa dades de tarifes de la competència que puguis incorporar al mateix resum per donar més context.

Si gestiones diverses propietats en plataformes de RMS diferents, el mateix patró d'extreure-filtrar-formatar-entregar a n8n s'aplica sense importar quin motor de pricing estigui al principi de la cadena — només canvien l'endpoint i l'autenticació del node HTTP Request.

Visita sityos.com per a més guies d'implementació — guia nova cada setmana.