data key mapping, full allow-list of event types, and integration checklist, see the Webhook developer guide.
Delivery details
- Method:
POST - Content-Type:
application/json - Body: JSON (camelCase). Null fields are omitted.
- Signature (optional): If you set a Secret Key on the webhook, each request includes header:
X-Webhook-Signature: sha256=<hex>(HMAC-SHA256 of the raw JSON body).
Default payload envelope (all events)
Every webhook uses this top-level structure. Onlydata varies by event.
Event reference (all event types)
Use the list below to jump to a specific event. Events are grouped by category; the sidebar shows the same structure. Team- team.member.joined — User added to team
- team.member.removed — User removed from team
- tournament.player.joined — Player joined tournament
- tournament.team.joined — Team joined tournament
- participant.assigned.round — Participant assigned to a round
- participant.assigned.group — Participant assigned to a group
- participant.assigned.match — Participant assigned to a match
- participant.removed.round — Participant removed from a round
- participant.removed.group — Participant removed from a group
- participant.removed.match — Participant removed from a match
- match.created — Match created
- match.updated — Match updated
- tournament.published — Tournament published
- tournament.rules.updated — Tournament rules updated
- tournament.points.updated — Tournament points system updated
- id.pass.announcement — Room ID and credentials for a match
- match.announcement — Announcement to a match
- group.announcement — Announcement to a group
- round.announcement — Announcement to a round
- tournament.announcement — Tournament-wide announcement
Team
team.member.joined
When: A user is added to a team. Payloaddata:
Example
data:
team.member.removed
When: A user is removed from a team. Payloaddata: Same as team.member.joined.
Tournament joining
tournament.player.joined
When: A player (individual) is approved/joined to a tournament. Payloaddata:
Example
data:
tournament.team.joined
When: A team is approved/joined to a tournament. Payloaddata: Same structure as tournament.player.joined; participantType is "Team".
Assignments & Placements
Assignment and removal webhooks are scoped by context. Subscribe toparticipant.assigned.* / participant.removed.* for the round, group, or match flows you care about.
participant.assigned.round
When: Participants are assigned to a round (for example bracket slots). Payloaddata:
Example
data:
participant.assigned.group
When: Participants are assigned to a group (for example within a round). Payloaddata:
Example
data:
participant.assigned.match
When: Participants are assigned to a match. Payloaddata:
Example
data:
participant.removed.round
When: A participant is removed from a round. Payloaddata: Same fields as participant.assigned.round (tournamentId, roundId, roundName, participantIds, participantType).
Example data:
participant.removed.group
When: A participant is removed from a group. Payloaddata: Same fields as participant.assigned.group.
Example data:
participant.removed.match
When: A participant is removed from a match. Payloaddata: Same fields as participant.assigned.match.
Example data:
Match Lifecycle
When: A match is created (e.g. in a round). Payloaddata:
Example
data:
For
match.created, status is currently the match type (e.g. SingleElimination, DoubleElimination, Ffa).match.updated
When: A match is updated (e.g. score, status change). Payloaddata: Same structure as match.created; status is the match status (e.g. Scheduled, InProgress, Completed, Cancelled).
Tournaments
tournament.published
When: A tournament successfully published making it publicly available to users. Payloaddata:
Example
data:
tournament.rules.updated
When: Tournament rules are saved or changed. Payloaddata: Same shape as tournament.published — identifies the tournament and its current high-level status.
Example
data:
tournament.points.updated
When: The tournament points configuration is saved or changed. Payloaddata: Same fields as tournament.rules.updated.
Example
data:
Match announcements
id.pass.announcement
When: Match targeted announcement specifically meant to share room ID and password details or joining credentials. Payloaddata:
Example
data:
match.announcement
When: Announcement targets a specific match. Payloaddata: tournamentId, messageContent, senderId, matchId.
Example data:
Tournament-related announcements
group.announcement
When: Announcement targets a group. Payloaddata: tournamentId, messageContent, senderId, groupId.
round.announcement
When: Announcement targets a round. Payloaddata: tournamentId, messageContent, senderId, roundId.
tournament.announcement
When: Announcement is tournament-wide (no match/group/round target). Payloaddata: tournamentId, messageContent, senderId only.
Announcement events (common fields): All announcement events share
tournamentId, messageContent, and senderId. The context field (matchId, groupId, or roundId) indicates the scope. If none are set, the announcement is tournament-wide.Subscription
When creating or updating a webhook, set theevents array to the event types you want (e.g. ["match.created", "match.updated"]). If events is null or empty, the webhook subscribes to all events above.
Custom payload format
If you use payload formatcustom and a Custom Payload Template, you can use placeholders such as:
{{eventType}},{{eventId}},{{timestamp}},{{tenantId}}{{tournamentId}},{{externalId}},{{participantId}},{{participantType}}- Any key from the event’s
Data(e.g.{{matchId}},{{registrationId}},{{messageContent}}).