Connect TrackScore with your existing tools and workflows. From communication platforms to learning management systems, build seamless integrations that enhance your competition experiences.
Keep teams connected with real-time notifications and updates.
Sync data with business intelligence and analytics platforms.
Integrate with educational and learning management systems.
Direct integration with Excel Online and desktop for advanced data analysis.
Official JavaScript SDK for browser and Node.js applications.
Python library for data science and backend integrations.
Native SDKs for iOS and Android mobile applications.
Send formatted leaderboard updates to a Slack channel using webhooks.
// Webhook handler for score updates
app.post('/webhooks/trackscore', (req, res) => {
const { type, data } = req.body;
if (type === 'score.updated') {
const message = {
text: `🏆 Score Update!`,
blocks: [
{
type: "section",
text: {
type: "mrkdwn",
text: `*${data.participant_name}* just scored ${data.new_score} points!\n`
+ `They moved from #${data.old_rank} to #${data.new_rank} on the leaderboard.`
}
}
]
};
// Send to Slack
fetch(process.env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(message)
});
}
res.status(200).send('OK');
});Automatically update a Google Sheet with the latest leaderboard data.
const { GoogleSpreadsheet } = require('google-spreadsheet');
async function syncLeaderboardToSheets(leaderboardId) {
// Fetch leaderboard data from TrackScore
const response = await fetch(`${API_BASE}/leaderboards/${leaderboardId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const leaderboard = await response.json();
// Connect to Google Sheets
const doc = new GoogleSpreadsheet(SHEET_ID);
await doc.useServiceAccountAuth(credentials);
await doc.loadInfo();
const sheet = doc.sheetsByIndex[0];
// Clear existing data and add headers
await sheet.clear();
await sheet.setHeaderRow(['Rank', 'Name', 'Score', 'Last Updated']);
// Add participant data
const rows = leaderboard.participants.map((p, index) => ({
'Rank': index + 1,
'Name': p.name,
'Score': p.score,
'Last Updated': new Date().toLocaleString()
}));
await sheet.addRows(rows);
console.log(`Updated ${rows.length} participants in Google Sheet`);
}