seats.limit_reached
A seat change reached the plan's included seat limit.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
The subscription ID.
The seats feature code.
The seat count after the change.
The included seat limit of the plan.
{
"event": "seats.limit_reached",
"timestamp": "2026-06-18T09:12:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-06-10",
"data": {
"customerId": "user_123",
"subscriptionId": "sub_1a2b3c4d",
"featureCode": "editors",
"currentSeats": 5,
"includedSeats": 5
}
}When this fires
When a seat change moves the count from below the plan's included seat limit to at or above it. It fires once per crossing — removing seats and re-adding past the limit fires it again. Plans with unlimited seats never fire it.
Seats are not blocked at the limit: counts above the included amount are allowed and billed as overage when the plan enables it.
Use it to prompt an upgrade to a higher tier before overage kicks in.
How is this guide?