trial.converted
Fired when a trialing customer converts to a paid subscription before the trial ends.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The subscription ID.
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
Always "active" for this event.
The plan ID the customer converted to.
The plan name.
{
"event": "trial.converted",
"timestamp": "2026-04-01T10:00:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-05-25",
"data": {
"subscriptionId": "sub_1a2b3c4d",
"customerId": "user_123",
"status": "active",
"planId": "plan_pro_monthly",
"planName": "Pro"
}
}When this fires
A customer on a trial changes plan before the trial runs out. The trial ends immediately, the full new plan price is charged (no proration credit — trials are free), and the subscription becomes active.
subscription.plan_changed fires alongside this event with the charge details. Use trial.converted for conversion analytics and lifecycle messaging; use subscription.plan_changed for entitlement updates.
Trials that simply run out fire trial.expired instead — that is the natural trial-to-paid transition.
How is this guide?