Commet
  • Pricing
Log InTry out
Introduction

Subscription Events

subscription.createdsubscription.activatedsubscription.canceledsubscription.updatedsubscription.plan_changedsubscription.cancellation_scheduledsubscription.cancellation_revokedsubscription.plan_change_scheduledsubscription.plan_change_revokedsubscription.past_due

Trial Events

trial.startedtrial.convertedtrial.expiredtrial.will_endtrial.checkout_ready

Checkout Events

checkout.ready

Payment Events

payment.receivedpayment.failedpayment.recoveredpayment.refundedpayment.disputedpayment.dispute_resolved

Invoice Events

invoice.createdinvoice.upcominginvoice.overdueinvoice.voided

Payment Method Events

payment_method.attachedpayment_method.updated

Customer Events

customer.createdcustomer.updatedcustomer.state_changed

Credits & Balance Events

credits.grantedcredits.purchasedcredits.lowcredits.depletedcredits.expiredbalance.topped_upbalance.lowbalance.depleted

Quota & Usage Events

quota.threshold_reachedquota.exceededusage.recorded

Seat Events

seats.updatedseats.limit_reached

Add-on Events

addon.activatedaddon.deactivated

Payout Events

payout.availablepayout.createdpayout.paidpayout.failed
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

trial.expired

Fired when a trial period runs out and regular billing begins.

Payload

All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.

subscriptionIdstring

The subscription ID.

customerIdstring

The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.

statusstring

Current status — "active" once the billing cycle has activated the subscription.

planIdstring

The plan ID.

planNamestring

The plan name.

trialEndsAtstring

ISO 8601 datetime when the trial ended.

{
  "event": "trial.expired",
  "timestamp": "2026-04-08T01: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",
    "trialEndsAt": "2026-04-08T00:00:00.000Z"
  }
}

When this fires

The trial reached trialEndsAt. The billing cycle activates the subscription (status: "active"), starts the first regular billing period, and generates the first invoice — invoice.created and payment events follow as the charge is processed.

Access does not change at this moment: the customer already had full access while trialing and keeps it as an active subscriber. If the first charge fails, the regular payment failure flow applies (payment.failed, and subscription.past_due once the subscription has been paid before).

How is this guide?

trial.converted

Fired when a trialing customer converts to a paid subscription before the trial ends.

trial.will_end

Predictive event fired once, 3 days before a trial ends.