Once you decide to track, the next question is what to track with. The two usual options are a spreadsheet you build yourself or a dedicated tracking app. Either works. The difference is how much upkeep you are willing to do and how much analysis you want.
The short answer
- If you enjoy building things, play a modest number of events and do not need to share, a spreadsheet is plenty.
- If you often forget to log at the venue, want charts, or need to reconcile with teammates, an app saves real effort.
- The worst option is "I'll remember it and sort it out at home".
Spreadsheet: how to lay out the columns
One row per event. The first five columns are required and the rest optional (the reasoning is in what to track after every session).
| Col | Field | Example | Notes |
|---|---|---|---|
| A | Date | 2026-10-04 | Use a real date format, not text |
| B | Total cost | 224 | Fee and all re-entries included |
| C | Prize | 0 | Always enter 0 when you do not cash |
| D | Hours | 5.5 | Decimal, not "5 and a half hours" |
| E | Currency | USD | A fixed code |
| F | Bullets | 2 | |
| G | Format | Deep stack | Use a dropdown so one format is not spelled three ways |
| H | Venue | — | Same |
| I | Field size | 86 | |
| J | Place | 31 | |
| K | Expenses | 12 | Travel, food |
| L | Notes | Came straight from work, tired late on |
The formulas to add
Assuming data starts in row 2, create a separate "Stats" sheet with these. They are written for Google Sheets. In Excel, change open-ended ranges such as B2:B to B2:B1000.
| Metric | Formula |
|---|---|
| Entries | =SUM(F2:F) |
| Total cost | =SUM(B2:B) |
| Total prizes | =SUM(C2:C) |
| Net profit | =SUM(C2:C)-SUM(B2:B) |
| ROI | =(SUM(C2:C)-SUM(B2:B))/SUM(B2:B) |
| Events cashed | =COUNTIF(C2:C,">0") |
| Hourly rate | =(SUM(C2:C)-SUM(B2:B))/SUM(D2:D) |
| Net after expenses | =SUM(C2:C)-SUM(B2:B)-SUM(K2:K) |
Two easy mistakes:
- Do not average the ROI of each row. That figure is badly distorted by small buy-in events. Sum first, then divide, as above.
- The hourly denominator may only include events with hours logged. If some rows have no hours, exclude them from the numerator too (see how to calculate hourly rate).
To split by format or venue, use a pivot table or the SUMIF family — for example, total cost for one format is =SUMIF(G2:G,"Deep stack",B2:B).
Strengths and limits of a spreadsheet
| Strengths | Limits |
|---|---|
| Free, and you can add any column you like | Awkward to fill in on a phone, so entries slip until you get home |
| The data is entirely in your hands | You handle exchange rates for multiple currencies yourself |
| Transparent formulas — you know where every number comes from | Charts and segmented stats are all do-it-yourself |
| Easy to export and back up | With several editors, people overwrite each other and changes are hard to trace |
When an app makes sense
A dedicated tracker mainly solves three spreadsheet pain points:
- Entry speed: logging on your phone in a few seconds, as you leave the table, so the record has no gaps.
- Automatic stats: ROI, hourly rate and the long-term curve without maintaining formulas.
- Collaboration: team members each enter their own results and the split is calculated by share, with no manual reconciliation (see staking and team profit splits).
The trade-off is less flexibility: you get the fields and statistics the app offers. So check that it records what you need and that you can export your data. The checklist is in how to choose a poker tracker.
Moving from a spreadsheet to an app
If you already have years of data in a sheet, you do not have to start over. Tidy the old data into a consistent shape first (one column each for date, cost, prize and hours), then see whether your chosen app can import it. If it cannot import event by event, you can at least enter past yearly or monthly totals so your long-term curve is not broken.
Either is fine — consistency is what counts
The tool will not make you better. A simple sheet with fixed columns that you fill in after every event beats a powerful app you keep forgetting to open. Choose the method you will actually keep using, and start with your next event.
