Commet
  • Pricing
Log InTry out
Introduction

Subscription Events

subscription.createdsubscription.activatedsubscription.reactivatedsubscription.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

subscription.reactivated

Fired when a canceled subscription is reactivated and its reactivation charge succeeds.

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

Always "active" for this event. Restore access here.

currentPeriodStartstring | null

ISO 8601 start of the new billing period, anchored to the reactivation date.

currentPeriodEndstring | null

ISO 8601 end of the new billing period.

namestring | null

Optional custom name for the subscription.

invoiceIdstring

The fresh reactivation invoice ID.

invoiceNumberstring

The human-readable invoice number.

invoiceTotalnumber

Invoice total in cents (100 = $1.00).

invoiceCurrencystring

The invoice currency code.

{
  "event": "subscription.reactivated",
  "timestamp": "2026-05-10T09:20:00.000Z",
  "organizationId": "org_abc123",
  "mode": "live",
  "apiVersion": "2026-05-25",
  "data": {
    "subscriptionId": "sub_1a2b3c4d",
    "customerId": "user_123",
    "status": "active",
    "currentPeriodStart": "2026-05-10T00:00:00.000Z",
    "currentPeriodEnd": "2026-06-10T00:00:00.000Z",
    "name": "Acme Corp",
    "invoiceId": "inv_q7r8s9",
    "invoiceNumber": "INV-0051",
    "invoiceTotal": 9900,
    "invoiceCurrency": "usd"
  }
}

When this fires

A canceled subscription was reactivated through reactivate and the reactivation charge succeeded. Commet generates a fresh invoice, charges the saved payment method, and sets the status back to active with a billing period anchored to the reactivation date.

The subscription returns to active at the same time, so customer.state_changed also fires. Restore access on either event.

This is distinct from two similar events. subscription.activated fires on a subscription's first activation. payment.recovered fires when a past_due subscription is recovered — that path keeps the original invoice and billing anchor, while reactivation issues a new invoice and resets the anchor to now.

Reactivation requires the plan to still be available in the subscription's currency. If the reactivation charge declines, no event fires and the API returns a recoveryUrl the customer can use to add a new card and pay.

How is this guide?

subscription.activated

Fired when a subscription becomes active after payment

subscription.canceled

Fired when a subscription is terminated at the end of the billing period. Revoke access here.