Períodos de prueba
Ofrece trials gratis en planes pagos en Commet con cobro automático cuando termina el trial.
Un período de prueba permite que los clientes usen tu producto antes de ser cobrados. Configura los días de trial en un plan y cada nueva suscripción obtiene un trial automáticamente.
Componentes del trial
| Componente | Descripción | Ejemplo |
|---|---|---|
| Trial Days | Duración del trial gratis antes del cobro | 7, 14, 30 |
| Per Interval | Cada intervalo de cobro puede tener días de trial distintos | Mensual: 14 días, Anual: 30 días |
| Skip Trial | Saltar el trial para clientes específicos vía SDK | skipTrial: true |
Configurar días de trial en el dashboard
En el dashboard, ve a Plans, edita un plan y define Trial Days en cada intervalo de precio. Los días de trial se configuran por precio del plan, no por cliente. Cada intervalo (mensual, trimestral, anual) puede tener su propia duración de trial. Los planes free no pueden tener trials.
Crear una suscripción con trial
No se necesitan cambios de código para habilitar trials. La suscripción comienza en estado trialing automáticamente cuando el plan tiene días de trial configurados.
const { data } = await commet.subscriptions.create({
customerId: 'user_123',
planCode: 'pro',
})
// data.status → 'trialing'
// data.trialEndsAt → '2026-01-15T00:00:00.000Z'
redirect(data.checkoutUrl)response = commet.subscriptions.create(
customer_id='user_123',
plan_code='pro',
)
# response.data['status'] → 'trialing'
# response.data['trial_ends_at'] → '2026-01-15T00:00:00.000Z'
redirect(response.data['checkout_url'])result, err := client.Subscriptions.Create(ctx, &commet.CreateSubscriptionParams{
CustomerID: "user_123",
PlanCode: "pro",
})
// result.Data.Status → "trialing"
// result.Data.TrialEndsAt → "2026-01-15T00:00:00.000Z"
// redirect(result.Data.CheckoutURL)ApiResponse<Subscription> result = commet.subscriptions().create("user_123", "pro");
// result.getData().getStatus() → "trialing"
// result.getData().getTrialEndsAt() → "2026-01-15T00:00:00.000Z"
// redirect(result.getData().getCheckoutUrl())$result = $commet->subscriptions->create(
customerId: 'user_123',
planCode: 'pro',
);
// $result->data['status'] → 'trialing'
// $result->data['trialEndsAt'] → '2026-01-15T00:00:00.000Z'
redirect($result->data['checkoutUrl']);curl -X POST https://commet.co/api/subscriptions \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"planCode": "pro"
}'Saltar un trial
const { data } = await commet.subscriptions.create({
customerId: 'user_123',
planCode: 'pro',
skipTrial: true,
})response = commet.subscriptions.create(
customer_id='user_123',
plan_code='pro',
skip_trial=True,
)skipTrial := true
result, err := client.Subscriptions.Create(ctx, &commet.CreateSubscriptionParams{
CustomerID: "user_123",
PlanCode: "pro",
SkipTrial: &skipTrial,
})CreateSubscriptionParams params = CreateSubscriptionParams.builder()
.customerId("user_123")
.planCode("pro")
.skipTrial(true)
.build();
ApiResponse<Subscription> result = commet.subscriptions().create(params);$result = $commet->subscriptions->create(
customerId: 'user_123',
planCode: 'pro',
skipTrial: true,
);curl -X POST https://commet.co/api/subscriptions \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"planCode": "pro",
"skipTrial": true
}'skipTrial es la única forma de saltar el trial de un plan para un cliente específico.
Verificar el estado del trial
const { data } = await commet.subscriptions.get('user_123')
if (data.status === 'trialing') {
const trialEnd = new Date(data.trialEndsAt)
}response = commet.subscriptions.get(customer_id='user_123')
if response.data['status'] == 'trialing':
trial_end = datetime.fromisoformat(response.data['trial_ends_at'])result, err := client.Subscriptions.Get(ctx, "user_123")
if result.Data.Status == "trialing" {
trialEnd, _ := time.Parse(time.RFC3339, result.Data.TrialEndsAt)
_ = trialEnd
}ApiResponse<Subscription> result = commet.subscriptions().get("user_123");
if ("trialing".equals(result.getData().getStatus())) {
Instant trialEnd = Instant.parse(result.getData().getTrialEndsAt());
}$result = $commet->subscriptions->get('user_123');
if ($result->data['status'] === 'trialing') {
$trialEnd = new DateTime($result->data['trialEndsAt']);
}curl "https://commet.co/api/subscriptions/active?customerId=user_123" \
-H "x-api-key: $COMMET_API_KEY"Más información
Relacionado
- Administrar planes — Configura días de trial en los precios del plan
- Administrar suscripciones — Suscribe clientes a planes
- Manejar pagos fallidos — Qué pasa después de que termina el trial
¿Cómo está esta guía?