Receive instant notifications when your leaderboards, scores, or competition data changes. Build responsive applications that react to events in real-time.
A score is updated, participant is added, or leaderboard changes in TrackScore.
TrackScore immediately sends an HTTP POST request to your configured endpoint.
Your application processes the webhook data and takes appropriate action.
score.updated
- Score changesleaderboard.created
- New leaderboardleaderboard.updated
- Leaderboard changesranking.changed
- Position updatescompetition.started
- Competition beginscompetition.ended
- Competition endsparticipant.added
- New participantparticipant.updated
- Info changesteam.created
- New teamteam.member_added
- Team member joinsachievement.unlocked
- Milestone reachedmilestone.reached
- Goals achievedAll webhooks will follow a consistent JSON structure for easy parsing and handling.
{ "id": "wh_1234567890abcdef", "type": "score.updated", "created": "2025-06-09T10:30:00Z", "data": { "leaderboard_id": "lb_987654321", "participant_id": "pt_555666777", "old_score": 850, "new_score": 950, "rank_change": { "old_rank": 5, "new_rank": 3 } }, "meta": { "webhook_url": "https://your-app.com/webhooks", "delivery_attempt": 1, "api_version": "1.0" } }
Set up an HTTP endpoint in your application to receive webhook POST requests.
Add your endpoint URL and select which events to subscribe to in your TrackScore dashboard.
Use our testing tools to send sample webhooks and verify your endpoint is working correctly.
Enable your webhooks and start receiving real-time notifications for your leaderboards.
const express = require('express'); const crypto = require('crypto'); const app = express(); app.use(express.json()); // Webhook endpoint app.post('/webhooks/trackscore', (req, res) => { const signature = req.headers['x-trackscore-signature']; const payload = JSON.stringify(req.body); // Verify webhook signature const expectedSignature = crypto .createHmac('sha256', process.env.WEBHOOK_SECRET) .update(payload) .digest('hex'); if (signature !== `sha256=${expectedSignature}`) { return res.status(401).send('Invalid signature'); } // Process the webhook const event = req.body; switch (event.type) { case 'score.updated': handleScoreUpdate(event.data); break; case 'leaderboard.created': handleNewLeaderboard(event.data); break; case 'participant.added': handleNewParticipant(event.data); break; default: console.log(`Unhandled event type: ${event.type}`); } res.status(200).send('OK'); }); function handleScoreUpdate(data) { console.log(`Score updated: ${data.participant_id} now has ${data.new_score} points`); // Your business logic here } app.listen(3000, () => { console.log('Webhook server listening on port 3000'); });
Update live dashboards and displays instantly when scores change.
Trigger automated actions based on competition events.
Keep external systems synchronized with your TrackScore data.
Build comprehensive notification systems for participants and organizers.