Define pruebas y condiciones de precio temporales reutilizables, independientes de los planes y su distribución.
Una Offer es una secuencia reutilizable de beneficios. Define qué cambia —una prueba, un descuento o un precio fijo temporal— sin decidir qué plan la usa ni cómo la recibe el customer.
Una Offer contiene entre 1 y 10 fases ordenadas:
| Fase | Efecto |
|---|---|
free_trial | Retrasa el primer cobro durante una cantidad fija de días |
percentage | Reduce el precio base del plan en basis points |
amount_off | Resta un monto explícito por cada moneda configurada |
fixed_price | Reemplaza el precio base por un monto explícito por cada moneda configurada |
La prueba gratuita solo puede ser la primera fase. Una fase de descuento puede tener un durationCycles finito o null cuando es la última fase y no tiene vencimiento.
const launchOffer = await commet.offers.create({
name: 'Secuencia de lanzamiento',
phases: [
{ type: 'free_trial', durationDays: 14 },
{ type: 'percentage', durationCycles: 3, percentage: 5000 },
{ type: 'percentage', durationCycles: null, percentage: 2000 },
],
metadata: { campaign: 'launch-2026' },
})La Offer no contiene purpose, planPriceIds, reglas de elegibilidad ni límites de canje.
| Canal | Cómo se selecciona la Offer | Qué agrega el canal |
|---|---|---|
| Introductory | Se vincula a un precio base del plan | Selección automática y elegibilidad para customers nuevos |
| Promotional | Tu integración envía offerId | Asignación explícita para campañas, retención o experimentos |
| Promo Code | El customer ingresa un código | Límites de canje, restricciones por plan y vencimiento |
El canal no crea otra copia de la Offer. Solo determina cómo recibe el customer esas condiciones reutilizables.
Cuando Commet cotiza o aplica una Offer, registra una Offer Application inmutable. La aplicación incluye:
appliesTo;Editar, desactivar o archivar la Offer del catálogo afecta solamente las aplicaciones futuras. Las aplicaciones existentes permanecen disponibles para facturación y auditoría.
La respuesta v9 conoce distintos objetivos (plan_price, addon o credit_pack) para que nuevas superficies de compra no requieran otro cambio breaking. Los flujos públicos actuales de suscripciones, Introductory, aplicación directa y Promo Code crean aplicaciones plan_price.
¿Cómo está esta guía?