Skip to main content

MATCH_STARTED

Triggered when a queue fills and match validation begins.

Example Payload

{
"action": "MATCH_STARTED",
"queue": "valorant",
"channel": "1234567890123456789",
"guild": "9876543210987654321",
"match_num": 42,
"players": [
{
"name": "Player1#1234",
"id": "111222333444555666",
"mmr": 1500,
"role": "Duelist",
"team_num": -1,
"top_role_index": 0,
"ign": "PlayerIGN1",
"timestamp": 1707523200.0,
"pulled_from": null
},
{
"name": "Player2#5678",
"id": "222333444555666777",
"mmr": 1450,
"role": "Controller",
"team_num": -1,
"top_role_index": 1,
"ign": "PlayerIGN2",
"timestamp": 1707523250.0,
"pulled_from": null
}
]
}

Payload Fields

FieldTypeDescription
actionstringAlways "MATCH_STARTED"
queuestringThe name/identifier of the queue
channelstringDiscord channel ID where the event occurred
guildstringDiscord guild (server) ID
match_numnumberUnique match number/ID
playersPlayer[]All players in the match

When This Event Fires

This webhook is sent when:

  • The queue reaches the required number of players
  • All players have been validated
  • Match setup process begins
info

At this stage, teams have not yet been created. Players have team_num: -1.

Use Cases

  • Notify players that a match is starting
  • Initialize match tracking systems
  • Record match start times for analytics
  • Trigger external match creation (e.g., game servers)
  • Update player availability status

Implementation Example

def handle_match_started(data):
match_id = data['match_num']
queue_name = data['queue']
player_count = len(data['players'])

print(f"Match #{match_id} starting in {queue_name}")
print(f"Players: {player_count}")

# Example: Create match record in database
create_match_record(
match_id=match_id,
queue=queue_name,
players=[p['id'] for p in data['players']],
started_at=time.time()
)

# Example: Notify external game server
notify_game_server(match_id, data['players'])

Match Flow

  1. MATCH_STARTED ← You are here
  2. TEAMS_CREATED - Teams are formed
  3. MATCH_COMPLETED or MATCH_CANCELLED - Match ends