A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"plane": "customer",
"description": "<string>",
"subscribed_events": [
"<string>"
],
"status": "enabled",
"consecutive_failures": 123,
"disabled_at": "2023-11-07T05:31:56Z",
"disabled_reason": "<string>",
"recent_failures": 123,
"created_at": "2023-11-07T05:31:56Z",
"secret": "<string>"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Register a webhook endpoint for my team
Requires $webhooks.manage. The endpoint hears the events the product tracked about this team — POST /v1/track lines naming this customer — delivered under the product’s own event names, signed with the secret this response carries.
subscribed_events names 1 to 20 of the product’s event names and may not be empty: the product’s vocabulary is open-ended, so “everything” is not a subscription anybody can mean. Ask the product’s team what they emit — UserKit stores the names and matches them, it does not define them.
A team holds at most 5 endpoints, counted over every status. The capability is part of the product’s UserKit plan: on a plan without it this answers 403 webhooks_not_available, and a later downgrade stops deliveries without deleting anything.
The signing secret comes back here because this is the moment you need it, but it is re-showable: losing this response is not losing the secret.
A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"plane": "customer",
"description": "<string>",
"subscribed_events": [
"<string>"
],
"status": "enabled",
"consecutive_failures": 123,
"disabled_at": "2023-11-07T05:31:56Z",
"disabled_reason": "<string>",
"recent_failures": 123,
"created_at": "2023-11-07T05:31:56Z",
"secret": "<string>"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Autorizações
A contact session token, uk_ct_…. Belongs to one of the developer's own users, and reads only that user's data.
Cabeçalhos
The customer this call is acting inside — the same arrangement as X-Organization-Id, one plane down. Switching customers is navigation, not a mutation: nothing is stored, you send a different header, and the membership JOIN behind it decides what you may do there. An id you are not a member of matches no row and answers 404. Absent, the contact's oldest membership answers.
Corpo
Resposta
The endpoint, with its signing secret.
Where deliveries are POSTed. https:// only.
Always customer on this surface. The plane is set when the endpoint is registered and never afterwards.
customer The event names this team hears — the product's own vocabulary (pedido.aprovado), not UserKit's catalogue. Never empty: the product's vocabulary is open-ended, so "everything" is not a subscription anybody can mean.
1 - 20 elementsdisabled is either the team's decision or the auto-disable after sustained failure. A disabled endpoint is queued nothing.
enabled, disabled Deliveries that spent every attempt, back to back. Any success resets it.
Deliveries that gave up in the last 24 hours.
What signs every delivery. Re-showable from /secret.