Una bonificación por referido y una bonificación por hito pueden activarse en la primera estancia de un huésped. Este es el error real que detectamos y así es como pagan de verdad los programas de referidos hoteleros.

"Primera estancia" parece la expresión más sencilla en la lógica de un programa de fidelización. Un huésped reserva, llega, hace el check-out y ya está: se ha producido el evento que cumple los requisitos. Hasta que un grupo hotelero activa más de una forma de ganar puntos y dos de esas formas pueden activarse legítimamente en la misma reserva exacta. Entonces, "primera estancia" deja de ser un dato sobre una reserva y pasa a ser una pregunta sobre qué bonificación puede reclamarla.
Esa pregunta apareció mientras creábamos los referidos y la obtención de puntos sin estancia para el programa de fidelización de GuestMaker, y sirve muy bien para explicar cómo funcionan ambos, porque la corrección cuenta más sobre el mecanismo que una lista de funcionalidades.
Cada miembro inscrito recibe su propio enlace de referido, una URL estable con la forma /loyalty/<program>/join?ref=<code>, que puede enviar a un amigo, publicar en internet o mandar por mensaje antes de un viaje. Hasta ahí, nada raro. La parte importante es cuándo se activa el pago.
Una bonificación por referido paga tanto a quien refiere como al nuevo miembro, pero no al registrarse. Paga cuando el amigo referido completa una estancia que cumple los requisitos o realiza un gasto que cumple los requisitos. Un grupo hotelero podría conceder una bonificación en cuanto alguien hace clic en un enlace y crea una cuenta, pero eso recompensa la intención, no a un huésped real. Al condicionar el pago a una estancia completada, el programa de referidos acaba pagando reservas, no clics en enlaces.
El pago del referido utiliza el flujo compartido de obtención de puntos y una referencia estable para cada parte del referido. Esas referencias permiten comprobar las solicitudes repetidas de bonificación frente a una transacción existente, en lugar de crear un saldo de puntos separado para los referidos. La bonificación reutiliza el flujo de obtención de puntos con un disparador distinto.
Los referidos son una forma de ganar puntos sin una reserva nueva. No son la única. Los miembros también pueden ganar una bonificación fija y única por acciones que no tienen nada que ver con reservar una estancia: dejar una reseña, completar una encuesta, terminar su perfil, descargar la aplicación del hotel o seguir al hotel en redes sociales.
Una bonificación por una acción sin estancia se configura como un premio único por miembro y regla de bonificación. Una referencia estable vincula la acción y la regla configurada con el premio del miembro, de modo que las solicitudes repetidas puedan comprobarse frente a la transacción original. Esto limita los premios repetidos bajo la misma regla; no es una garantía vitalicia que cubra cualquier configuración posterior de esa acción ni una garantía frente a cualquier forma de abuso.
Así es como se ve en la práctica un programa de fidelización cuando la reserva no es el único disparador. Un miembro que no viaja nunca, pero aun así descarga la aplicación, sigue la cuenta del hotel o completa una encuesta, gana algo por ello una vez, sin que haya ninguna reserva en la ecuación. Es un mecanismo pequeño, pero cambia lo que mide el programa de fidelización: no solo estancias, sino interacción con la marca entre estancias.
Si colocas esos dos mecanismos uno al lado del otro, referidos y obtención de puntos sin estancia, parecen funcionalidades limpias e independientes. No lo son del todo. Comparten un huésped y, a veces, comparten un momento.
Este es el escenario que sacó a la luz el error antes de que llegara a producción. Un amigo usa un enlace de referido para unirse al programa de fidelización de un hotel, reserva una habitación y llega para su primera estancia. Durante esa misma estancia, también hace algo que genera una bonificación sin estancia: termina su perfil o deja una reseña antes del check-out. Ahora hay dos bonificaciones intentando activarse desde la misma reserva. Una es el pago por referido, que debe activarse en el momento en que esta estancia cuenta como la estancia cualificada del amigo referido. La otra es una bonificación por hito o sin estancia, abonada durante esa estancia por una acción sin relación con la reserva.
El riesgo estaba en cómo se comprobaba si "ya ha ocurrido la estancia cualificada". Si esa comprobación simplemente preguntaba si el miembro ya había ganado alguna bonificación vinculada a una estancia, vería la bonificación por completar el perfil o por hito abonada durante esa primera estancia y la interpretaría como prueba de que el evento cualificado ya se había producido, aunque viniera de la fuente equivocada. El sistema de referidos concluiría que su trabajo ya estaba hecho y omitiría el pago, porque, por lo que podía saber, la primera estancia ya había sido "usada" por otra bonificación. La persona que había hecho el referido y el nuevo miembro nunca cobrarían, precisamente en la estancia que todo el programa de referidos estaba diseñado para recompensar.
Nada de eso aparecería como un error. No habría solicitud fallida, ni excepción, ni ticket de soporte que apuntara a la línea de código correcta. Solo parecería un referido que, silenciosamente, nunca pagó en la estancia donde más importaba: la primera.
La corrección no fue un parche puntual para este escenario. Fue una lista explícita de exclusión de fuentes de obtención de puntos, bonificaciones por referido, bonificaciones por hito, bonificaciones de cumpleaños y obtenciones similares sin estancia, a las que nunca se les permite contar como la estancia cualificada para un pago por referido. Cualquier comprobación que decida si "ya ha ocurrido la estancia cualificada de este miembro referido" ahora tiene que encontrar una obtención basada en estancia fuera de esa lista, no cualquier evento de obtención que simplemente tenga una marca de tiempo dentro de una estancia.
Eso resuelve más casos que completar el perfil durante una primera estancia: una bonificación de cumpleaños o por hito también puede coincidir con el evento cualificado. La lista de exclusión actual identifica expresamente las fuentes conocidas de bonificaciones internas que no deben contar como estancia o gasto cualificado. Una fuente nueva debe clasificarse e incorporarse a esa comprobación antes de intervenir con seguridad en la cualificación de un referido; una fuente desconocida no se excluye automáticamente solo por representar una bonificación sin estancia.
Un programa de referidos que concede puntos necesita controles para evitar que un miembro utilice su propio enlace de referido. GuestMaker comprueba los autorreferidos al registrar la relación y al evaluar el evento cualificado. Estas comprobaciones ofrecen más de una oportunidad para rechazar un autorreferido, pero no garantizan la protección frente a cualquier forma de abuso del programa. El grupo hotelero sigue decidiendo las reglas de cualificación y debe revisar cómo se utiliza el programa.
Nada de esto funciona por defecto. Los referidos están desactivados. Las bonificaciones por acciones sin estancia están desactivadas. Incluso notificar a quien refiere que su amigo se ha unido, una funcionalidad con mucho menos riesgo que el propio pago, está desactivado. Un grupo hotelero tiene que activar expresamente cada elemento.
Conviene detenerse un segundo en esto, porque va en sentido contrario a cómo suelen lanzarse muchos complementos genéricos para programas de recompensas hoteleras: activados en todas partes, configurables si alguien se pone a buscar. Los referidos y la obtención de puntos sin estancia afectan a puntos reales, pagos reales y una comprobación de estancia cualificada que, como muestra el error anterior, tiene más casos límite de los que sugiere la expresión "primera estancia". Que cada pieza esté desactivada por defecto significa que un grupo hotelero adopta los referidos porque ha decidido ejecutar un programa de referidos, no porque un interruptor estuviera activado por defecto en algún sitio y nadie se diera cuenta.
Si un grupo hotelero todavía está decidiendo si merece la pena crear un programa de fidelización, esa es una pregunta distinta y anterior, tratada en cómo lanzar un programa de fidelización hotelera. Los referidos y la obtención de puntos sin estancia son añadidos para un programa que ya existe, no un punto de partida. Pero el mismo principio se mantiene en ambas etapas: las partes de un programa de fidelización que tocan dinero deben construirse asumiendo que dos cosas acabarán ocurriendo en la misma reserva, porque tarde o temprano ocurrirán.
Treinta minutos con tus hoteles reales.