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

customer.updated

Fired when a customer's details change. Carries the full current customer resource.

Payload

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

idstring

The Commet customer ID (cus_...).

externalIdstring | null

Your own identifier for this customer, if you provided one.

fullNamestring | null

The customer's full name.

emailstring

The customer's email.

timezonestring | null

The customer's timezone.

metadataobject | null

Custom key-value metadata you attached to the customer.

createdAtstring

ISO 8601 datetime when the customer was created.

updatedAtstring

ISO 8601 datetime of this update.

{
  "event": "customer.updated",
  "timestamp": "2026-04-02T09:10:00.000Z",
  "organizationId": "org_abc123",
  "mode": "live",
  "apiVersion": "2026-05-25",
  "data": {
    "id": "cus_1a2b3c4d",
    "externalId": "user_123",
    "fullName": "Ada Lovelace",
    "email": "ada.lovelace@acme.com",
    "timezone": "Europe/London",
    "metadata": {
      "plan_intent": "pro"
    },
    "createdAt": "2026-03-25T14:29:00.000Z",
    "updatedAt": "2026-04-02T09:10:00.000Z"
  }
}

What counts as an update

The event fires when a customer field changes: email, fullName, timezone, externalId, or metadata. It carries the complete current resource, not a diff — replace your local copy with the payload.

Every distinct update delivers its own event, even several in quick succession. Like customer.created, the resource shape follows your endpoint's pinned API version.

How is this guide?

customer.created

Fired when a customer is created. The payload mirrors the customer resource from GET /customers.

customer.state_changed

Aggregate entitlement event — what can this customer access right now.