¿Qué Problema Resuelve Esto?
La mayoría de hoteles independientes y de tamaño medio ya usan un motor de pricing dinámico como GameChanger de Duetto, pero la última milla sigue siendo manual: alguien entra en un panel una o dos veces al día, revisa los cambios de tarifa recomendados, decide qué aprobar y actualiza los canales. Ese paso de revisión no escala más allá de un puñado de propiedades, y supone que los cambios de tarifa llegan al mercado con horas de retraso — a veces un día entero, sobre todo los fines de semana, cuando nadie está mirando el panel.
El motor de pricing en sí ya hace un trabajo sofisticado — procesa el ritmo de reservas, las tarifas de la competencia, eventos locales y previsiones de demanda. El cuello de botella no es el análisis; es conseguir que ese análisis llegue a la persona correcta, en el momento correcto, en un formato que realmente vaya a leer en lugar de dejarlo en una pestaña que nadie abre. Esta guía automatiza precisamente esa última milla, con un pequeño flujo de n8n que convierte la salida de Duetto en una alerta de Slack legible y lista para actuar.
Una encuesta de Lighthouse de 2024 a más de 1.200 profesionales de hostelería encontró que el 63% de las empresas ya usa IA de alguna forma en revenue management, y el 75% espera que la IA tenga un impacto importante en su estrategia de revenue management en los próximos cinco años.
Herramientas Necesarias
Puedes ejecutar toda esta capa de automatización por menos de 10 €/mes encima de un contrato de Duetto ya existente — el coste principal es el propio RMS, no la automatización.
| Herramienta | Qué hace | Precio | Enlace |
|---|---|---|---|
| Duetto GameChanger | Genera las recomendaciones de pricing dinámico a partir de demanda, competencia y reservas | Sin plan gratuito público — presupuesto empresarial a medida | duettocloud.com |
| n8n | Extrae, filtra y formatea los cambios de tarifa en resúmenes listos para Slack | Gratis — Community Edition autoalojada, ejecuciones ilimitadas | n8n.io |
| Slack | Entrega el resumen de pricing formateado al equipo de revenue management | Gratis — historial de 90 días, 10 integraciones | slack.com |
Guía de Implementación Paso a Paso
Estos 12 pasos asumen que ya tienes una cuenta activa de Duetto GameChanger. Si no la tienes, empieza por ahí — n8n solo puede enrutar y formatear recomendaciones de precio que Duetto (u otro RMS comparable) ya produce; no puede generarlas por sí solo.
Paso 1: Confirmar el Acceso a la API de Duetto y Obtener Credenciales
Duetto no publica un generador de claves API de autoservicio en su panel estándar, y no hay un conector nativo confirmado para n8n a fecha de hoy [REQUIERE VERIFICACIÓN]. Contacta con tu gestor de cuenta de Duetto y solicita acceso a la API para la propiedad o propiedades que quieras automatizar — en concreto, la exportación de recomendaciones de tarifa que usa GameChanger.
Pregunta explícitamente qué método de autenticación soportan (clave API, OAuth2 con credenciales de cliente, o autenticación básica con lista blanca de IPs son los patrones más comunes en proveedores de hotel-tech) y solicita una propiedad de prueba si está disponible, para no construir directamente contra tarifas de producción el primer día.
- Escribe o llama a tu gestor de cuenta de Duetto para solicitar acceso a la API/exportación
- Confirma el método exacto de autenticación y los límites de uso
- Solicita un ID de propiedad de prueba para las primeras pruebas
- Guarda las credenciales en un gestor de contraseñas — nunca las pongas directamente en el JSON del flujo de n8n
Consejo: Pide específicamente el endpoint de exportación de recomendaciones o cambios de tarifa — algunos proveedores de RMS exponen los datos de reservas mucho más fácilmente que los datos de decisión de precio, y necesitas estos últimos para este flujo.
Paso 2: Configurar Tu Instancia de n8n
Tienes dos opciones: autoalojar la Community Edition gratuita en un pequeño VPS (normalmente entre 4 y 7 €/mes en un proveedor como Hetzner o DigitalOcean), o usar n8n Cloud desde 24 €/mes con una prueba gratuita de 14 días. Para una automatización de una sola propiedad como esta, autoalojar suele ser la opción más económica, ya que la Community Edition no tiene límites de ejecución.
Si optas por autoalojar, el camino más rápido es la imagen oficial de Docker — un solo comando docker run te da una instancia funcionando en menos de diez minutos. Asegúrate de configurar HTTPS (mediante un proxy inverso como Caddy o Nginx) antes de conectar credenciales reales, ya que las URLs de webhook y el almacenamiento de credenciales de n8n nunca deberían funcionar sobre HTTP sin cifrar en producción.
- Elige autoalojado (gratis) o n8n Cloud (desde 24 €/mes)
- Despliega con la imagen oficial de Docker si autoalojas
- Configura HTTPS mediante un proxy inverso antes de añadir credenciales
- Crea tu primer flujo vacío y nómbralo claramente, por ejemplo ‘Alertas de Tarifa Duetto’
Consejo: Si no te sientes cómodo gestionando un VPS, la prueba de 14 días de n8n Cloud es suficiente para construir y probar este flujo por completo antes de decidir si el ahorro de autoalojar compensa el mantenimiento.
Paso 3: Añadir un Disparador Programado (Schedule Trigger)
Abre tu nuevo flujo y añade un nodo Schedule Trigger como punto de entrada. Esto determina cada cuánto tiempo n8n consulta a Duetto en busca de nuevas recomendaciones de tarifa. Cada 4 horas es un punto de partida razonable para la mayoría de propiedades — suficientemente frecuente para captar cambios de demanda del mismo día, y suficientemente espaciado para no superar los límites de uso que Duetto pueda imponer.
Si el equipo de integraciones de Duetto confirma soporte de webhooks salientes para tu cuenta, puedes sustituir el Schedule Trigger por un nodo Webhook, que reacciona al instante cuando Duetto genera una nueva recomendación en lugar de consultar a intervalos fijos. Trátalo como una optimización para más adelante, no como un bloqueo para tu primera versión.
- Añade un nodo Schedule Trigger
- Configura el intervalo cada 4 horas (ajústalo según el ritmo de reservas de tu propiedad)
- Apunta: pregunta a Duetto si hay webhooks salientes disponibles para tu cuenta [REQUIERE VERIFICACIÓN]
- Guarda el flujo con un nombre descriptivo antes de continuar
Consejo: Empieza con un intervalo más largo (por ejemplo, cada 6 horas) durante las pruebas, y redúcelo después de confiar en el flujo — así evitas inundar tu canal de prueba de Slack mientras todavía estás depurando.
Paso 4: Configurar el Nodo HTTP Request Para Llamar a la API de Duetto
Añade un nodo HTTP Request después del disparador. Este es el nodo que realmente extrae los datos de Duetto — como no existe un nodo dedicado de Duetto en la librería de n8n, este nodo genérico hace el trabajo usando las credenciales y el endpoint que te proporcionó tu gestor de cuenta en el Paso 1.
Configura el método (normalmente GET para una exportación de recomendaciones), la URL completa del endpoint, y añade tu cabecera de autenticación (lo habitual es `Authorization: Bearer {token}` o una cabecera de clave API personalizada — confirma el nombre exacto de la cabecera con Duetto, ya que los proveedores de hotel-tech son inconsistentes en esto). Guarda la credencial usando el gestor de Credenciales integrado de n8n en lugar de pegar la clave directamente en el nodo, para que quede cifrada en reposo.
- Añade un nodo HTTP Request conectado al disparador
- Configura el método y la URL del endpoint proporcionados por Duetto
- Crea una Credencial en el gestor de Credenciales de n8n para la clave/token API
- Ejecuta una prueba única contra tu propiedad de prueba para confirmar una respuesta 200
Consejo: Si tu primera prueba devuelve un 401 o 403, revisa con cuidado el nombre exacto de la cabecera que espera Duetto — es el punto de fallo más común en este paso, más incluso que credenciales incorrectas.
Paso 5: Procesar la Respuesta JSON
La respuesta de la API de Duetto será un JSON con las tarifas recomendadas por tipo de habitación y fecha. Añade un nodo Code (o un nodo Set, para casos más simples) para extraer solo los campos que necesitas: tipo de habitación, fecha, tarifa actual, tarifa recomendada, y el porcentaje de cambio entre ambas.
Este es también el lugar adecuado para calcular tú mismo el campo de porcentaje de cambio si la respuesta de Duetto no lo incluye ya — una expresión sencilla como `((recomendada - actual) / actual) * 100` en el nodo Code te da el número con el que filtrarás en el siguiente paso.
- Añade un nodo Code después del nodo HTTP Request
- Mapea tipo_habitacion, fecha, tarifa_actual y tarifa_recomendada desde la respuesta
- Calcula el porcentaje_cambio si la respuesta de Duetto no lo proporciona directamente
- Genera un array limpio de objetos, uno por cada recomendación de tarifa
Consejo: Registra la respuesta en bruto en el log de ejecución de n8n durante las pruebas — los nombres de campo de Duetto no están documentados públicamente, así que probablemente necesites inspeccionar la estructura real de la respuesta antes de que tu lógica de procesado sea correcta.
Paso 6: Filtrar los Cambios Relevantes
Añade un nodo Filter que solo deje pasar los cambios de tarifa por encima de un umbral que tú definas — el 5% es un punto de partida razonable para la mayoría de propiedades, pero ajústalo según con qué frecuencia Duetto recomiende ajustes pequeños. Sin este paso, tu canal de Slack se llenará de ruido por ajustes del 1-2% que nadie necesita revisar individualmente.
Considera añadir una segunda condición que siempre deje pasar cambios por encima de un umbral mucho más alto (por ejemplo, el 15%) independientemente de cualquier otro filtro, ya que los movimientos inusualmente grandes suelen indicar o bien un evento de demanda importante que conviene conocer de inmediato, o un error de datos que conviene detectar rápido.
- Añade un nodo Filter (o IF) después del nodo Code
- Configura la condición principal: porcentaje_cambio > 5 (valor absoluto)
- Opcionalmente, añade una regla secundaria de 'marcar siempre' para cambios superiores al 15%
- Prueba con una mezcla de cambios simulados pequeños y grandes para confirmar que el filtro funciona como esperas
Consejo: La mayoría de equipos fija este umbral demasiado bajo la primera semana, sufre fatiga de alertas en pocos días y empieza a ignorar el canal por completo. Empieza en el 5% y bájalo solo si compruebas que te estás perdiendo cambios relevantes.
Paso 7: Agrupar Cambios por Tipo de Habitación y Rango de Fechas
Una lista plana de cambios individuales es difícil de leer rápido. Añade un paso de agregación (con el nodo Aggregate o Summarize de n8n, o un nodo Code personalizado) para agrupar los cambios filtrados por tipo de habitación, y luego por rango de fechas, de forma que el mensaje final de Slack se lea como un resumen estructurado en lugar de un muro de líneas individuales.
Para propiedades con muchos tipos de habitación, considera también ordenar los grupos por el tamaño del cambio — las mayores variaciones porcentuales primero — para que los elementos más urgentes aparezcan al principio del mensaje en lugar de quedar enterrados a la mitad.
- Añade un nodo Aggregate/Summarize después del nodo Filter
- Agrupa por tipo_habitacion y después por rango_fechas
- Ordena los grupos por porcentaje_cambio de forma descendente
- Verifica que la estructura de salida coincide con lo que espera tu paso de formateo de Slack
Consejo: Si gestionas varias propiedades con una sola cuenta de Duetto, añade el nombre de la propiedad como clave de agrupación principal antes del tipo de habitación — de otro modo, un resumen multi-propiedad se vuelve ilegible rápidamente.
Paso 8: Formatear el Resumen con Slack Block Kit
Los mensajes de Slack en texto plano se leen por encima y se ignoran. Usa el formato Block Kit de Slack — secciones, divisores y pares de campos en negrita — para convertir los datos agrupados en un resumen que realmente sea fácil de leer en el móvil entre reuniones. Un nodo Code (o el propio nodo Slack de n8n, que admite JSON de Block Kit directamente) construye esta estructura a partir de tus datos agrupados.
Mantén cada grupo de tipo de habitación a una línea de cabecera corta más 2-4 campos tipo bullet mostrando rango de fechas, tarifa actual, tarifa recomendada y porcentaje de cambio. Resiste la tentación de incluir todos los datos disponibles — el objetivo es una lectura de 10 segundos, no un informe completo.
- Construye una estructura JSON de Block Kit: un bloque de sección por grupo de tipo de habitación
- Usa texto en negrita para el tipo de habitación y un indicador de color para la dirección (sube/baja)
- Añade un bloque divisor entre grupos
- Prueba el mensaje renderizado en un canal de pruebas privado antes de conectarlo a producción
Consejo: Añade un pequeño indicador con emoji 🟢/🔴 para subidas y bajadas de tarifa — parece trivial, pero es la pista visual más rápida para un revenue manager que escanea el canal en 5 segundos.
Paso 9: Conectar el Nodo de Slack y Probar el Envío
Añade el nodo nativo de Slack de n8n, autentícalo con un token de app/bot de Slack (creado desde el panel de API de Slack, con como mínimo el scope `chat:write`), y apúntalo a un canal dedicado — no publiques en un canal general donde se perderá. Ejecuta el flujo completo de extremo a extremo contra tus datos de prueba y confirma que el mensaje se renderiza correctamente tanto en Slack de escritorio como en móvil.
Si planeas añadir botones de aprobación interactivos más adelante (Paso 11), pide también ahora los scopes `chat:write.public` e interactividad, para no tener que reautorizar la app de Slack a mitad de construir la siguiente función.
- Crea una app de Slack y un token de bot con scope chat:write
- Crea un canal dedicado #revenue-pricing (o similar)
- Añade el nodo de Slack, autentícalo y apúntalo al nuevo canal
- Ejecuta una prueba de extremo a extremo y revisa el mensaje en escritorio y móvil
Consejo: Silencia las notificaciones del canal de pruebas mientras depuras — vas a disparar decenas de ejecuciones de prueba antes de que el formato quede bien, y son muchas vibraciones del móvil si no lo haces.
Paso 10: Añadir un Flujo de Resumen Semanal
Además del flujo de alertas en tiempo real, duplícalo en un segundo flujo independiente que se ejecute una vez por semana (por ejemplo, los lunes por la mañana) y agregue todos los cambios marcados de la semana en un único resumen tipo informe — total de cambios marcados, porcentaje medio de cambio, y qué tipos de habitación tuvieron más ajustes.
Esta vista semanal es lo que realmente quieren ver la mayoría de directores generales y grupos propietarios; las alertas en tiempo real son para el revenue manager que toma decisiones del día a día, mientras que el resumen semanal sostiene la conversación más amplia sobre estrategia de precios.
- Duplica el flujo principal como un nuevo flujo semanal independiente
- Cambia el Schedule Trigger para que se ejecute una vez por semana
- Ajusta el paso de agregación para resumir toda la semana en lugar de una sola extracción
- Envía el resumen semanal a un canal distinto o incluye a propiedad/dirección general como miembros
Consejo: Fija el mensaje de resumen semanal en el canal — se convierte en un punto de referencia rápido para conversaciones de 'cómo fue el pricing este mes' sin tener que buscar entre el historial de alertas en tiempo real.
Paso 11: Añadir Botones de Aprobación Interactivos (Opcional)
Para equipos que quieren un registro de auditoría formal en lugar de una notificación pasiva, añade botones interactivos de Slack (Aprobar / Anular) a cada mensaje agrupado usando los componentes interactivos de Block Kit de Slack. Al pulsar un botón se dispara un segundo webhook de n8n que registra la decisión — quién pulsó, cuándo, y qué opción — en una hoja de Google Sheets.
Este paso añade complejidad real (necesitarás un endpoint de webhook público y verificar las peticiones de interactividad de Slack), así que la mayoría de equipos deberían tener primero el flujo básico de extraer-filtrar-publicar funcionando de forma fiable, y añadir esto como una segunda iteración una vez probada la base.
- Activa Interactividad y Shortcuts en los ajustes de tu app de Slack con una URL de webhook pública
- Añade botones Aprobar/Anular a cada mensaje de Block Kit
- Crea un segundo flujo de webhook en n8n para recibir los datos del clic en el botón
- Registra cada decisión (usuario, fecha y hora, opción elegida) en una hoja de Google Sheets dedicada
Consejo: Verifica la firma de la petición de Slack en el webhook entrante antes de procesarla — saltarte este paso deja tu endpoint de aprobación abierto a cualquiera que descubra la URL.
Paso 12: Añadir Manejo de Errores y Monitorizar el Flujo
Añade un flujo de Error Trigger (el mecanismo de manejo de errores integrado de n8n) que se active cuando cualquier nodo de tu flujo principal falle — lo más habitual, el nodo HTTP Request de Duetto, si las credenciales caducan o la API no está disponible temporalmente. Dirige las notificaciones de error a un canal #alertas separado para que una extracción fallida no se traduzca silenciosamente en que tu revenue manager no vea ningún mensaje y asuma que no hay cambios.
Por último, revisa el log de ejecución de n8n semanalmente durante el primer mes para detectar problemas silenciosos — como un umbral de filtro que deja pasar demasiado o demasiado poco — antes de que se conviertan en hábitos que nadie cuestiona.
- Crea un flujo de Error Trigger dedicado en n8n
- Conéctalo para enviar alertas de fallo a un canal #alertas separado en Slack
- Incluye el nombre del nodo fallido y el mensaje de error en la alerta para depurar rápido
- Revisa el log de ejecución semanalmente durante el primer mes tras el lanzamiento
Consejo: Pon un recordatorio en el calendario para revisar las credenciales de la API de Duetto 30 días antes de cualquier fecha de caducidad de token que te hayan dado — las credenciales caducadas son el modo de fallo silencioso más común en este tipo de integración.
Casos de Uso Reales
Caso de Uso 1: Resort Independiente en la Costa, 120 Habitaciones
Un resort independiente de 120 habitaciones que usa GameChanger de Duetto lo conectó a este mismo flujo de n8n y Slack, con un umbral de relevancia del 5% y un intervalo de extracción de 4 horas. La revenue manager pasó de una revisión diaria fija de panel de 45 minutos a leer un resumen de Slack en menos de 5 minutos entre reuniones, y reportó detectar picos de demanda del mismo día (provocados por un calendario de eventos regionales) horas antes de lo que habría permitido el proceso manual anterior.
Caso de Uso 2: Grupo Hotelero Boutique, 4 Propiedades
Un grupo boutique con cuatro propiedades de unas 50 habitaciones cada una, sobre una cuenta de Duetto compartida, adaptó el flujo para agrupar las alertas primero por propiedad y luego por tipo de habitación, en un único canal compartido. La única revenue manager del grupo — que antes entraba en cuatro paneles separados cada día — consolidó la revisión en un solo canal, y añadió el flujo opcional de botones de aprobación (Paso 11) específicamente para mantener un registro de auditoría claro entre propiedades para el informe mensual del grupo propietario.
Errores Habituales y Cómo Evitarlos
Fijar el umbral de relevancia demasiado bajo la primera semana es el error más común. Los equipos quieren verlo todo al principio, el canal se llena de ruido en pocos días, y la gente empieza a ignorarlo por completo. Empieza en el 5% y ajústalo solo después de una semana completa de datos reales.
Saltarse el paso de propiedad de prueba es el segundo error más frecuente. Construir directamente contra tarifas de producción significa que un bug de procesado en el Paso 5 o 6 puede generar una alerta engañosa sobre la que alguien actúa antes de que nadie note el error de fondo.
Un tercer problema frecuente es publicar las alertas en un canal general o ya muy activo en lugar de uno dedicado. Las alertas de precios que compiten con la conversación diaria se pierden en minutos, anulando todo el propósito de la automatización.
Lo más crítico: nunca pongas la credencial de la API de Duetto directamente en el nodo HTTP Request. Usa el gestor de Credenciales de n8n para que la clave quede cifrada en reposo y se pueda rotar sin tocar el flujo en sí.
Resultados Esperados
Comparación basada en implementaciones típicas de este flujo:
| Antes | Después |
|---|---|
| El revenue manager revisa el panel de Duetto a mano 2 veces al día (~45 min/día en total) | Un resumen de Slack llega automáticamente cada 4 horas; revisarlo lleva menos de 5 minutos |
| Los cambios de tarifa se aprueban horas después de que Duetto los recomiende, a veces al siguiente día hábil tras un fin de semana | Los cambios relevantes se marcan y se actúa sobre ellos en la misma hora hábil, incluidos los fines de semana |
| No existe registro de quién aprobó qué cambio de tarifa ni cuándo | Cada decisión de aprobar/anular queda registrada automáticamente en una hoja de Google Sheets mediante botones de Slack |
| Un equipo multi-propiedad entra en un panel de RMS distinto por cada propiedad | Un único canal de Slack agrupa los cambios marcados de todas las propiedades |
Próximos Pasos
Una vez que el flujo básico de extraer-filtrar-publicar es estable, los siguientes pasos naturales son: añadir el flujo de aprobación interactivo (Paso 11) si necesitas un registro de auditoría formal, ampliar el flujo de resumen semanal para comparar el rendimiento con la misma semana del año anterior, y explorar si la API más amplia de Duetto expone datos de tarifas de la competencia que puedas incorporar al mismo resumen para dar más contexto.
Si gestionas varias propiedades en distintas plataformas de RMS, el mismo patrón de extraer-filtrar-formatear-entregar en n8n se aplica sin importar qué motor de pricing esté al principio de la cadena — solo cambian el endpoint y la autenticación del nodo HTTP Request.
Visita sityos.com para más guías de implementación — guía nueva cada semana.