Skip to main content

Google Sheets Integration

Connect a Google Sheet to power a live leaderboard. Supports integer, decimal, and time-based scores with automatic format detection.

The Google Sheets integration lets you run a Leaderboarded board from a familiar spreadsheet. Manage your participants and scores in Google Sheets — where you can collaborate with colleagues, paste in race timings, or wire up a form — and Leaderboarded pulls the latest data on every sync. The board becomes a clean public-facing display while your team continues to work in the sheet.

It's a good fit for office competitions where someone else owns the scores, for race events where timings land in a sheet from a timing system, for fundraising drives where contributions feed in from a form, and for any situation where your data already lives in Google Sheets and you don't want to copy it twice.

Heads-up: this feature is still growing.
Right now you have to click Sync data to pull updates, and the integration only reads a Name and Score column. We plan to remove the manual sync step (so the board updates on its own) and to support richer sheet structures — multiple score columns, teams, comments, and more. If you have a use case that doesn't quite fit today, tell us about it — it helps us prioritise.

Setting up your sheet

Your Google Sheet must have a header row with at least these two columns:

  • Name — the participant's display name
  • Score — the score for that participant

A Team column is also accepted but currently unused. Other columns are ignored. Column matching is case-insensitive and accepts common aliases like Player, Participant, Points, Punkte, Jugador, etc.

Example:

Name      | Score
Alice     | 100
Bob       | 85
Charlie   | 72

Once your sheet looks right, publish it to the web as CSV:

  1. In Google Sheets, go to File → Share → Publish to web.
  2. Choose Comma-separated values (.csv) in the format dropdown.
  3. Click Publish and copy the URL — it should end in pub?output=csv.
  4. Paste the URL into Leaderboarded's connect form.

Supported score formats

Scores can be numbers, decimals, or times. The format is detected from your sheet on every sync — you don't need to configure anything.

Whole numbers

Alice     | 100
Bob       | 85

Stored as integers. Higher score ranks higher by default.

Decimals

Alice     | 9.85
Bob       | 9.72

Two-decimal precision is preserved. Use this for gymnastics scores, golf strokes (with sub-stroke adjustments), or any scoring system with fractions.

Time — MM:SS.SSS

Joe       | 02:10.020
Alice     | 03:10.030

Use this format for race times where milliseconds matter (swimming, athletics, motorsport). Times are stored as milliseconds. Sort direction defaults to fastest wins (ascending).

Time — HH:MM:SS

Joe       | 1:02:30
Alice     | 1:05:15

Use this format for longer events (marathons, ultras, cycling). Times are stored as seconds. Sort direction defaults to fastest wins (ascending).

Sort direction

The default depends on the detected format:

  • Numbers and decimals — highest first (descending)
  • Times — fastest first (ascending)

You can override this from the board settings: open Settings → Ranking and pick the direction you want. Your override is preserved across syncs unless the score format changes (e.g. you switch from numbers to times).

Syncing

The sheet is the source of truth — you can't edit names, scores, or add/remove participants on the board itself. Every update has to go through Google Sheets. Click Sync data in the admin panel whenever you want the board to catch up; each sync replaces all participants and scores with whatever is currently in the sheet. There's a 30-second cooldown between syncs to prevent accidental rapid refreshes.

The Settings, Appearance, and Share tools still work as on any other board — only the participant data is locked to the sheet.

Troubleshooting

All my scores show as 0

This usually means your score column contains values the importer doesn't recognise. Open the sheet and check:

  • Times must use the exact formats above (MM:SS.SSS or HH:MM:SS). 1:30 alone is ambiguous — pad it to 01:30:00 or 01:30.000.
  • Decimals must use a . as the separator. 9,85 (European comma) won't parse.
  • The Score column header must be present in the first row.
  • Cells must be plain text or numbers, not formulas that resolve to error values.

After fixing the sheet, click Sync data again. If a few rows still couldn't be read, you'll see a yellow warning banner above the sync button telling you how many.

Some scores are 0 but most are fine

A handful of unparseable rows (e.g. someone wrote DNF or left a cell blank with a stray space) won't break the sync — those rows are stored as 0 and counted in the warning banner. The rest of the sheet is imported normally.

The wrong person is at #1

If your scores are times and the slowest entry is at the top, open Settings → Ranking and switch to Ascending (fastest wins).

Changes in my sheet aren't showing up

Make sure you're using a published sheet URL (pub?output=csv), not the regular share URL. Google caches published CSVs for several minutes, so changes can take a few minutes to appear even after you click sync.

"Maximum number of players reached"

Free plans have a participant limit. If your sheet has more rows than your plan allows, the sync will fail with this message. Upgrade your plan to add more participants.