Ofrece features opcionales que los clientes pueden activar en sus suscripciones por un precio adicional.
Los addons son features opcionales con su propio precio y modelo de consumo que los clientes activan en sus suscripciones. Extienden una suscripción sin modificar el plan base — piensa en SSO, canales SMS o soporte premium.
| Aspecto | Descripción |
|---|---|
| Precio | Precio base fijo por período de cobro, prorrateado al activarse |
| Cargo al activar | Cargo inmediato por los días restantes del período actual |
| Cobro recurrente | El precio base se suma al recibo del plan en cada ciclo |
| Desactivación | Sin reembolso — la feature se detiene de inmediato |
| Acceso a la feature | La feature del addon aparece junto a las features del plan |
Cada addon se mapea a exactamente una feature. Al activarse, esa feature queda disponible a través de featureAccess.get, usage.check y featureAccess.list — igual que cualquier feature del plan.
Los addons declaran su propio modelo de consumo. Los addons booleanos son compatibles con cualquier plan. Los demás modelos requieren coincidir con el modelo del plan.
| Modelo | Descripción | Planes compatibles | Ejemplo |
|---|---|---|---|
| Boolean | Desbloquea acceso, sin tracking de uso | Todos los planes | SSO, cumplimiento HIPAA |
| Metered | Unidades incluidas + excedente al cierre del período | Planes Metered | SMS: 1000 incluidos, $0.03/extra |
| Credits | El uso consume del pool de créditos del plan | Planes Credits | Resúmenes IA: 5 créditos/uso |
| Balance | El uso descuenta del pool de balance del plan | Planes Balance | Procesamiento de imágenes: $0.015/unidad |
Los addons Credits y Balance consumen del pool compartido del plan — no hay un pool separado para el addon. Si el pool se agota, la feature del addon también queda bloqueada.
Ve a Add-ons y haz clic en Create Add-on. Configura el nombre, precio base, feature y modelo de consumo. Para addons Metered, define las unidades incluidas y la tarifa de excedente. Para Credits, define el costo en créditos por unidad.
El dropdown de feature solo muestra features que no están asignadas a otro addon. Una vez creado, el addon queda disponible para cualquier cliente cuyo plan sea compatible.
Los addons se pueden activar en cualquier suscripción con un método de pago:
| Estado | Puede activar addons |
|---|---|
| Active | Sí |
| Trialing | Sí — la tarjeta se capturó en el checkout del trial |
| Free plan | Sí — la primera compra pide un método de pago |
Los addons se gestionan desde el dashboard, el customer portal o la API.
| Acción | Dónde |
|---|---|
| Crear / actualizar / archivar addons | Dashboard → Add-ons, o el recurso addons de la API |
| Activar / desactivar | Dashboard (detalle de suscripción), Customer Portal o la API |
| Listar addons activos | API, Dashboard o Customer Portal |
Activa o desactiva un addon en una suscripción vía SDK. La activación cobra el monto prorrateado del período actual; la desactivación detiene la feature de inmediato, sin reembolso.
await commet.subscriptions.activateAddon({
id: 'sub_abc123',
addonId: 'adn_xyz789',
})
await commet.subscriptions.deactivateAddon({
id: 'sub_abc123',
addonId: 'adn_xyz789',
})Equivalentes REST: POST /api/v1/subscriptions/{id}/addons y DELETE /api/v1/subscriptions/{id}/addons/{addonId}. Los addons en sí soportan CRUD completo a través del recurso addons: commet.addons.list, get, create, update y delete.
Las features de los addons funcionan exactamente igual que las features del plan — sin manejo especial:
// Verificar addon booleano
const sso = await commet.featureAccess.get({
customerId: 'user_123',
code: 'sso',
})
// { allowed: true, type: 'boolean', enabled: true }
// Registrar uso de addon metered
await commet.usage.track({
customerId: 'user_123',
featureCode: 'sms_messages',
value: 50,
})
// Listar todas las features (plan + addons combinados)
const features = await commet.featureAccess.list({
customerId: 'user_123',
})# Verificar addon booleano
sso = commet.feature_access.get('sso', customer_id='user_123')
# sso.allowed == True, sso.type == 'boolean'
# Registrar uso de addon metered
commet.usage.track(customer_id='user_123', feature_code='sms_messages', value=50)
# Listar todas las features (plan + addons combinados)
features = commet.feature_access.list(customer_id='user_123')// Verificar addon booleano
sso, _ := client.FeatureAccess.Get(ctx, "sso", &commet.GetFeatureAccessParams{
CustomerID: "user_123",
})
// sso.Allowed == true, *sso.Type == "boolean"
// Registrar uso de addon metered
value := 50
client.Usage.Track(ctx, &commet.TrackUsageParams{
CustomerID: "user_123",
FeatureCode: "sms_messages",
Value: &value,
})
// Listar todas las features (plan + addons combinados)
features, _ := client.FeatureAccess.List(ctx, &commet.ListFeatureAccessParams{
CustomerID: "user_123",
})// Verificar addon booleano
var sso = commet.featureAccess()
.get("sso", GetFeatureAccessParams.builder("user_123").build());
// sso.allowed() == true
// Registrar uso de addon metered
commet.usage().track(
TrackUsageParams.builder("sms_messages", "user_123").value(50.0).build()
);
// Listar todas las features (plan + addons combinados)
var features = commet.featureAccess()
.list(ListFeatureAccessParams.builder("user_123").build());// Verificar addon booleano
$sso = $commet->featureAccess->get('sso', 'user_123');
// $sso->allowed === true, $sso->enabled === true
// Registrar uso de addon metered
$commet->usage->track(
featureCode: 'sms_messages',
customerId: 'user_123',
value: 50,
);
// Listar todas las features (plan + addons combinados)
$features = $commet->featureAccess->list('user_123');# Verificar addon booleano
curl "https://commet.co/api/v1/feature-access/sso?customerId=user_123" \
-H "x-api-key: $COMMET_API_KEY"
# Registrar uso de addon metered
curl -X POST https://commet.co/api/v1/usage/events \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"featureCode": "sms_messages",
"customerId": "user_123",
"value": 50
}'
# Listar todas las features (plan + addons combinados)
curl "https://commet.co/api/v1/feature-access?customerId=user_123" \
-H "x-api-key: $COMMET_API_KEY"Cuando un cliente activa un addon de $50/mes en el día 11 de un período de 31 días (20 días restantes):
| Valor | |
|---|---|
| Precio completo | $50.00 |
| Prorrateado | $50 × (20/31) = $32.26 |
| Tipo de recibo | addon_activation |
El cargo va al proveedor de pago de la suscripción de inmediato con su propio recibo.
A partir del siguiente ciclo de cobro completo, el precio base del addon aparece como una línea separada en el recibo del plan:
Plan Pro (base) $99.00
API Calls: 12,500 (2,500 excedente × $0.01)$25.00
Addons
SMS Channel (base) $15.00
SMS: 1,800 (800 excedente × $0.03) $24.00
SSO $50.00
Subtotal $213.00Los precios de los addons se definen en USD. Para suscripciones en monedas no USD, el precio se convierte usando el tipo de cambio del plan — el mismo mecanismo que se usa para los precios base de los planes.
Los clientes pueden autogestionar addons desde el portal:
Los addons cuya feature ya existe en el plan del cliente se ocultan del portal automáticamente.
¿Cómo está esta guía?