Promociones y cupones
Un cupón es un código que el cliente escribe en el carrito; una promoción automática se aplica sola cuando el carrito cumple sus condiciones.
Un cupón es un código que el cliente escribe en el carrito; una promoción automática se aplica sola cuando el carrito cumple sus condiciones. Las dos las calcula el mismo motor, en el servidor, cada vez que el carrito cambia.
🔴 No hay pantalla en el panel para crear ni editar promociones, ni ruta de la API de gestión para ello. Hoy una promoción llega a la tienda por uno de dos caminos: se trae de WooCommerce con la mudanza, o alguien la escribe directamente en la base de datos. Lo que cuenta esta página es lo que el motor hace con las promociones que existen.
Lo que hace el cliente
En el carrito hay un campo para el código. No distingue mayúsculas:
verano10 y VERANO10 son el mismo cupón.
- Si se aplica, el carrito enseña el descuento y el código.
- Si no, el código no se queda colgado en el carrito: se quita, y la API contesta con el motivo (ha caducado, se ha agotado, no se cumplen sus condiciones, no hay nada en el carrito a lo que aplicarlo…). Ese motivo hoy se escribe solo en español.
De los temas de fábrica, solo base tiene el campo del código en el carrito.
Enseña un aviso genérico de «código no válido», no el motivo. Las rutas de la
API son POST /tienda/carritos/<id>/cupon (con codigo) y
DELETE /tienda/carritos/<id>/cupon/<código>; en el contrato de comercio son
cart.applyPromo y cart.removePromo.
Cuándo se descarta una promoción
Cada vez que se recalcula el carrito se revisa cada promoción, y se descarta si:
- no está activa (borrador o desactivada);
- su campaña no ha empezado o ha terminado;
- ha llegado a su límite de usos, o su campaña se ha quedado sin usos;
- es un importe fijo en otra moneda que la del carrito;
- no se cumplen sus condiciones;
- no hay nada en el carrito a lo que aplicarla;
- es del tipo «compra X y llévate Y»: ese tipo todavía no se calcula.
Una campaña también puede tener un presupuesto de gasto. Se comprueba, pero nada le suma cuando se usa una promoción, así que hoy nunca se agota. El presupuesto de usos sí avanza.
La misma revisión se repite al hacer el pedido. Un cupón que caducó mientras el cliente pagaba no se aplica.
Cómo se calcula el descuento
Una promoción es un porcentaje o un importe fijo, y se aplica a una de dos cosas:
- los productos del carrito, o
- el envío.
Y se reparte de una de tres formas:
| Reparto | Qué hace |
|---|---|
| En conjunto | Un descuento para todo, repartido entre las líneas en proporción a su importe. Un fijo de 10 son 10 en total. |
| Por unidad | Por cada unidad: un fijo de 2 son 2 en cada unidad a la que se aplica, hasta la cantidad máxima si la hay. |
| Una vez | Hasta una cantidad máxima (1 si no se fija), empezando por las unidades más baratas. |
Un descuento nunca deja una línea ni un envío en negativo.
Pueden aplicarse varias promociones a la vez. Se aplican por orden de creación, y cada una trabaja sobre lo que dejaron las anteriores, así que dos cupones del 50 % no son un pedido gratis.
Condiciones
Una promoción puede tener dos juegos de reglas:
- Condiciones, que deciden si se aplica al carrito.
- Reglas de destino, que deciden qué líneas (o qué envío) descuenta.
Cada regla es un atributo, un operador (eq, in, ne, gt, gte, lt,
lte) y uno o varios valores. Los atributos que entiende el motor:
| Para condiciones | Para reglas de destino |
|---|---|
subtotal (productos, antes de descuentos) | product.id |
currency_code, region_id, sales_channel_id | product_type.id |
email | product_collection.id |
customer.id, customer_group.id | variant.id |
items.product.id, items.product_type.id, items.product_collection.id, items.variant.id | shipping_option.id |
Un atributo desconocido nunca se cumple, así que una promoción con una regla que el motor no entiende no se aplica: no descuenta por error.
Cuándo se cuenta un uso
Un uso se cuenta al hacer el pedido, no cuando llega el pago. La promoción queda apuntada en el pedido, así que después se sabe qué pedidos usaron qué cupón.
Cupones traídos de WooCommerce
La mudanza trae cada cupón con su código, su tipo (porcentaje o fijo), su importe, su límite de usos, los usos ya gastados y su caducidad. Uno caducado llega desactivado.
De sus condiciones, tres pasan como reglas: el gasto mínimo, solo estos productos (los que ya se trajeron) y solo estos correos. El resto —gasto máximo, productos excluidos, categorías, envío gratis, «no se combina», usos por cliente, excluir rebajados— no pasa, y esos códigos salen en una lista con lo que se dejaron para que los revises antes de anunciarlos.
Dos cosas más:
- Un cupón de importe fijo llega en euros. Si la tienda vende en otra moneda, se descarta por no coincidir la moneda.
- Los códigos llegan en mayúsculas. Como la comparación no distingue mayúsculas, los clientes pueden seguir escribiéndolos como quieran.
Con impuestos, puntos y tarjetas regalo
El orden en que se calcula un carrito es: promociones, después puntos, después impuestos.
- Los impuestos se calculan sobre el precio después del descuento. Un cupón baja la base imponible.
- Los puntos se canjean sobre lo que dejaron los cupones.
- Una tarjeta regalo es un medio de pago, no un descuento: se usa después de todo esto y no toca la base imponible. A diferencia de los puntos, un cupón sí descuenta una tarjeta regalo del carrito; la tarjeta se emite igualmente por su valor completo.
- Los precios por cantidad (ver venta avanzada) no son una promoción: cambian el precio por unidad, y los cupones se aplican encima.
Ver también
Productos y catálogo
Esta guía cuenta lo que hace el panel hoy, y también lo que todavía no hace, para que no busques un botón que no está.
Carritos abandonados
Un carrito con correo, sin tocar desde hace 30 minutos, que no llegó a convertirse en pedido. Se enseñan los carritos creados en los últimos 30 días.