Módulo embebible

Sistemas de lealtad tan transparentes y seguros como un estado de cuenta.

Una etiqueta HTML y tu aplicación tiene programa de lealtad: el cliente acumula por comprar, sube de nivel, canjea en el mostrador y recibe aviso antes de que le caduquen los puntos. Todo sobre un libro de asientos que nadie puede reescribir. Con tus colores y en tu dominio.

Lo difícil de un programa de puntos no es sumar. Es que el saldo sea auditable y no se pueda inflar, porque una recompensa de 5 000 puntos es un descuento real que sale de la caja de alguien.

Café Rita

Oro

Ana Ruiz

Clienta desde marzo · 1.5 pts por peso

Saldo

3 500

750 puntos
para Platino

OroPlatino · 4 250
MovimientoPuntos · saldo
  • Acumulación

    Venta #4812 · $380

    +570

    4 250

  • Canje

    Café grande · CJ-7Q2K

    −1 200

    3 680

  • Acumulación

    Pedido en línea #221 · $920

    +1 380

    4 880

  • Caducidad

    Puntos de sep 2024

    −300

    3 500

Cada renglón trae el saldo que dejó. La suma se comprueba sin preguntarle al sistema.

Lo que una tarjeta de sellos no hace

Un saldo que se explica solo. Estas tres cosas lo garantizan.

Un saldo de puntos no se puede recontar: no hay anaquel al que ir a mirar, la única realidad es el libro. Aquí cada saldo es la suma de asientos que nadie puede reescribir, con reglas que la base de datos cumple aunque nadie las recuerde.

Cada punto es un asiento, y el saldo va atado a él

El saldo y el asiento se escriben en la misma transacción, y nadie tiene permiso para tocar el saldo por fuera: la única puerta es la función que también escribe el porqué. Ni un gerente puede poner un número y que cuadre. «¿Por qué me faltan 400 puntos?» se responde leyendo el libro, no creyéndole al sistema.

Dos cajas, el último premio: una de las dos rebota

La comprobación de que alcanza va dentro de la misma escritura que descuenta. Dos cajeros canjeando la última recompensa del mismo cliente al mismo tiempo pasan cualquier validación del código; aquí el saldo nunca queda en menos tres mil y el cliente no se lleva dos premios pagando uno.

El cajero canjea, no ajusta

Entregar el premio es trabajo de mostrador y llega hasta la caja, porque canjear no puede crear saldo. Teclear puntos sin una regla detrás sí lo crea, y eso va sólo con quien dirige el programa, con motivo obligatorio y rastro en la auditoría. El cajero puede decir «esta venta fue de $500», nunca «dale 5 000 puntos».

Cómo funciona

De la inscripción al premio, sin parar el mostrador

01

Inscribe en la caja

Correo, teléfono o el id de tu sistema, con el cliente delante. El teléfono se normaliza solo: «55 1234 5678» y «+52 5512345678» son la misma persona, no dos saldos.

02

Acumula por comprar

La venta llega del punto de venta o de la tienda por evento, o la captura el cajero con el importe del ticket. La regla del programa saca los puntos; nadie los teclea.

03

Sube de nivel

Plata, Oro, Platino: cada nivel con su umbral y su multiplicador. Canjear no baja de nivel, porque castigaría justo la conducta que el programa quiere premiar.

04

Canjea y entrega

El cajero elige el premio, la base comprueba que alcanza y descuenta en el mismo acto. Sale un código; al entregarlo se marca, y si no se entregó, quien supervisa lo cancela y los puntos vuelven.

Qué trae

Lo que ya viene resuelto

Niveles con multiplicador

Cada nivel tiene umbral, beneficios y un multiplicador que sí toca la aritmética: Oro a 1.5× acumula la mitad más por la misma compra. El nivel es función del acumulado de por vida, no del saldo.

Recompensas con existencias

Un premio tiene costo en puntos y, si quieres, existencias. Se agota y deja de ofrecerse solo. Lo que costó al canjear queda escrito: subirle el precio mañana no reescribe el canje de hoy.

Caducidad que no reescribe el pasado

Cada acumulación guarda su propia fecha de vencimiento el día que nace. Si cambias el plazo de 24 a 12 meses, los puntos ya prometidos conservan sus 24 y sólo los nuevos nacen con 12. Se avisa antes de que caduquen.

Campañas con fechas

Puntos dobles el fin de semana: un multiplicador con inicio y fin que se compone con el del nivel. Dos campañas solapadas no se multiplican entre sí, gana la mayor, y la regla vale también para la venta que entra por evento.

Referidos y tope de canjes

Cada cliente tiene su código; quien refiere gana puntos cuando el referido hace su primera compra, no antes. Y el programa puede limitar cuántos canjes hace un cliente por día, semana o mes.

Cinco papeles, permisos en la base

Dueño, responsable del programa, encargado, cajero y sólo lectura. Lo que cada uno no puede hacer lo impide la base de datos, no un botón deshabilitado. Quien cambia las reglas no es quien atiende.

Integrarlo

Esto es todo el código que escribes

El token lo emite tu backend con tu llave secreta y dura quince minutos. Cuando caduca, el módulo avisa con un evento; tu página pide otro y el canje a medio elegir sigue donde estaba.

<script src="https://nexusnorth.dev/embed/v1/nexus-lealtad.js" defer></script>

<nexus-lealtad
  tenant-id="tu-tenant"
  auth-token="token-efimero-de-tu-backend"
  workspace-id="el-programa"
  brand-name="Café Rita"
  style="--nexus-primary: #b45309; --nexus-radius: 0.75rem"
></nexus-lealtad>

<script>
  document.querySelector("nexus-lealtad")
    .addEventListener("token-expired", renovarToken);
</script>
  • Si ya tienes nuestro punto de venta o la tienda en línea, las ventas acreditan solas: el módulo escucha sus eventos y no comparte tablas con ellos.
  • Si vendes con otro sistema, acreditas por API con el importe de la venta; los puntos los saca la regla del programa.
  • Cambiar el token no remonta la app: el importe a medio teclear sigue donde estaba.
  • Sin cookies de terceros: el token viaja en memoria, no en el navegador.
  • Aislado en Shadow DOM: tus estilos no lo tocan y los suyos no te tocan.
  • Tus colores, tu tipografía y tus radios desde variables CSS. Sin declarar nada, se ve neutro.
Preguntas

Lo que suelen preguntar antes de integrarlo

¿Puedo regalarle puntos a un cliente?

Sí, pero sólo el dueño o el responsable del programa, con motivo obligatorio, y queda como un asiento de ajuste con el antes y el después en la auditoría. Es a propósito: un ajuste es la única operación que escribe un número de puntos que no salió de ninguna regla, y por eso es la puerta por la que se regala dinero. El cajero no la tiene. Lo que sí puede hacer es registrar una venta con su importe, y de ahí la regla saca los puntos.

¿Qué pasa si el bus entrega la misma venta dos veces?

Nada: se reconoce y no se duplica. La unicidad está anclada a la venta, no al evento, con un índice en la base. Un reintento de red, un segundo evento sobre la misma fila o una captura manual del mismo ticket chocan contra ese índice, y la función devuelve el asiento que ya existía en vez de acreditar otra vez.

¿Y si se cancela la venta que dio los puntos?

Se escribe un reverso que quita lo que todavía está. Si el cliente ya gastó una parte, se le quita lo que queda y el asiento lo dice; el saldo nunca se va a negativo, porque «tienes −200 puntos» no se le puede explicar a nadie en un mostrador. El nivel sí baja por lo otorgado completo: un cliente que sube de nivel cancelando compras es un agujero de dinero con forma de bug.

¿Canjear me baja de nivel?

No. El nivel se calcula sobre el acumulado de por vida, no sobre el saldo vivo. Si bajara al canjear, el programa castigaría exactamente la conducta que quiere premiar y el cliente aprendería a no canjear nunca. Lo único que baja el acumulado es el reverso de una venta cancelada.

¿Qué pasa con los puntos si cambio la caducidad?

Cada acumulación guarda su propia fecha de vencimiento el día que se escribe. Cambiar el plazo afecta sólo a lo que se acumule a partir de entonces; lo ya prometido conserva su fecha. La caducidad se aplica con un asiento nuevo de signo negativo, y se consume primero lo que vence antes, para que nunca caduque algo que se podía haber gastado.

¿Los puntos tienen decimales?

No. Un punto es entero en el asiento, en el saldo, en el umbral del nivel y en el precio del premio. La regla puede dar un resultado fraccionario y ahí se trunca hacia abajo por omisión: redondear al más cercano regala medio punto por ticket, y sobre un millón de tickets eso es medio millón de puntos que nadie presupuestó.

¿Se puede ver como mi producto?

Sí, y es el default. El módulo no lleva marca propia: colores, tipografía y radios salen de variables CSS que heredas desde tu hoja. Sin declarar nada, se ve neutro.

¿Dónde viven los datos?

En nuestra instancia por omisión, con aislamiento por cliente impuesto en la base de datos. Si lo prefieres, pueden vivir en la tuya: el módulo apunta a donde le digas.

¿Tu producto necesita premiar a quien vuelve?

Cuéntanos qué estás construyendo y te decimos si este módulo encaja — o si lo tuyo necesita otra cosa.

Hablemos