Skip to main content
This page lists all webhook events and the exact payload sent to your endpoint when using the default payload format. Use it to integrate with 16Arena webhooks. For the HTTP contract, 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. Only data 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 Tournament joining Assignments & Placements Match Lifecycle Tournaments Match announcements Tournament-related announcements

Team

team.member.joined

When: A user is added to a team. Payload data: Example data:

team.member.removed

When: A user is removed from a team. Payload data: Same as team.member.joined.

Tournament joining

tournament.player.joined

When: A player (individual) is approved/joined to a tournament. Payload data: Example data:

tournament.team.joined

When: A team is approved/joined to a tournament. Payload data: Same structure as tournament.player.joined; participantType is "Team".

Assignments & Placements

Assignment and removal webhooks are scoped by context. Subscribe to participant.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). Payload data: Example data:

participant.assigned.group

When: Participants are assigned to a group (for example within a round). Payload data: Example data:

participant.assigned.match

When: Participants are assigned to a match. Payload data: Example data:

participant.removed.round

When: A participant is removed from a round. Payload data: Same fields as participant.assigned.round (tournamentId, roundId, roundName, participantIds, participantType). Example data:

participant.removed.group

When: A participant is removed from a group. Payload data: Same fields as participant.assigned.group. Example data:

participant.removed.match

When: A participant is removed from a match. Payload data: Same fields as participant.assigned.match. Example data:

Match Lifecycle

When: A match is created (e.g. in a round). Payload data: 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). Payload data: 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. Payload data: Example data:

tournament.rules.updated

When: Tournament rules are saved or changed. Payload data: 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. Payload data: 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. Payload data: Example data:

match.announcement

When: Announcement targets a specific match. Payload data: tournamentId, messageContent, senderId, matchId. Example data:

group.announcement

When: Announcement targets a group. Payload data: tournamentId, messageContent, senderId, groupId.

round.announcement

When: Announcement targets a round. Payload data: tournamentId, messageContent, senderId, roundId.

tournament.announcement

When: Announcement is tournament-wide (no match/group/round target). Payload data: 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 the events 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 format custom 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}}).
The payload sent to your URL will then be the result of applying these placeholders to your template JSON.