customer.created
Fired when a customer is created. The payload mirrors the customer resource from GET /customers.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The Commet customer ID (cus_...).
Your own identifier for this customer, if you provided one.
The customer's full name.
The customer's email.
The customer's timezone.
Custom key-value metadata you attached to the customer.
ISO 8601 datetime when the customer was created.
ISO 8601 datetime of the last update.
{
"event": "customer.created",
"timestamp": "2026-03-25T14:29:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-05-25",
"data": {
"id": "cus_1a2b3c4d",
"externalId": "user_123",
"fullName": "Ada Lovelace",
"email": "ada@acme.com",
"timezone": "UTC",
"metadata": {
"plan_intent": "pro"
},
"createdAt": "2026-03-25T14:29:00.000Z",
"updatedAt": "2026-03-25T14:29:00.000Z"
}
}Resource shape and version pinning
The payload is the customer resource exactly as the REST API returns it for your pinned API version. If your endpoint is pinned to a version before 2026-06-07, the email field arrives as billingEmail — the same downgrade applied to GET /customers responses.
The event fires for every creation path: POST /customers, batch create, the SDKs, and the dashboard. Creating a customer with an externalId that already exists returns the existing customer and does NOT fire this event again.
How is this guide?