Overview
Chalk Track exports your workout data in a unified CSV
format that supports both climbing workouts and
hangboard sessions. This format allows you to backup
your data, analyze it in spreadsheet applications, or
import it into other tools.
CSV Columns
| Column |
Type |
Description |
| ID |
UUID |
Unique identifier for the workout |
| Date |
ISO 8601 |
Workout date (e.g., 2024-06-15T00:00:00Z)
|
| Time |
String |
Time of day in HH:mm format |
| Duration (minutes) |
Integer |
Workout duration in minutes |
| Gym |
String |
Gym or location name (optional) |
| Workout Category |
Enum |
"Climbing" or "Hangboard" |
| Workout Type |
String |
Climbing type OR hangboard protocol |
| Focus Areas |
String |
Semicolon-separated list (see below) |
| Grades |
String |
Grade data OR total sets (see below) |
| Notes |
String |
User notes (optional) |
| Created At |
ISO 8601 |
Timestamp when workout was created |
| Sets |
JSON |
Hangboard sets data (JSON format). Empty for
climbing workouts
|
Workout Categories
Climbing Workouts
When Workout Category is "Climbing":
-
Workout Type: Bouldering, Top Rope,
Lead, Training Board, or Weights
-
Focus Areas: Semicolon-separated
focus types (e.g., "Strength;Technique")
-
Grades: Comma-separated grade:count
pairs (e.g., "V5: 2, V6: 1, V7: 1")
Example Climbing Workout
ID,Date,Time,Duration (minutes),Gym,Workout
Category,Workout Type,Focus
Areas,Grades,Notes,Created At
A1B2C3D4-E5F6-7890-1234-567890ABCDEF,2024-06-15T00:00:00Z,18:30,90,The
Crag,Climbing,Bouldering,Strength;Technique,V5: 2,
V6: 1,Great session today!,2024-06-15T18:30:00Z
Hangboard Workouts
When Workout Category is "Hangboard":
-
Workout Type: Max Hangs or
Repeaters
-
Focus Areas: Semicolon-separated
grip types (e.g., "Half Crimp;Sloper")
-
Grades: Total number of sets
completed (e.g., "6")
-
Sets: JSON object containing
individual set records and protocol configuration
Note: Available grip types include:
Half Crimp, Full Crimp, Open Hand, 2-Finger: Middle,
2-Finger: Index+Middle, 2-Finger: Middle+Ring,
2-Finger: Ring+Pinky, 3-Finger Drag, Sloper, Pinch,
and Mono.
Sets Column Format
The Sets column contains a JSON object with two fields:
-
sets: Array of set objects with
grip, set number, completed repeats count, weight,
depth, completion status, and timestamp
-
protocolConfig: Object containing
hang duration, rest duration, number of sets, and
protocol settings
{ "sets": [ { "grip": "Half Crimp", "setNumber": 1,
"completedRepeats": 6, "weight": null, "depth": 15,
"wasCompleted": true, "timestamp":
"2024-06-16T08:17:00Z" } ], "protocolConfig": {
"protocolType": "Repeaters", "hangDuration": 7.0,
"restDuration": 3.0, "numberOfSets": 6, "repeatsPerSet":
6, "longRestDuration": 60.0, "alternatingHands": false,
"switchPauseDuration": 10 } }
Note: For Max Hangs,
completedRepeats will always be 1. For
Repeaters, it indicates how many reps
were completed in that set (e.g., 6 out of 6 planned
reps).
Example Max Hangs Workout
ID,Date,Time,Duration (minutes),Gym,Workout
Category,Workout Type,Focus
Areas,Grades,Notes,Created At,Sets
B2C3D4E5-F6A7-8901-2345-678901BCDEF0,2024-06-16T00:00:00Z,08:15,35,Home
Board,Hangboard,Max Hangs,Half Crimp;Full
Crimp,5,Progressing
well,2024-06-16T08:15:00Z,{"sets":[{"grip":"Half
Crimp","setNumber":1,"completedRepeats":1,"weight":null,"depth":15,"wasCompleted":true,"timestamp":"2024-06-16T08:17:00Z"},{"grip":"Full
Crimp","setNumber":2,"completedRepeats":1,"weight":5.5,"depth":9,"wasCompleted":true,"timestamp":"2024-06-16T08:19:00Z"}],"protocolConfig":{"protocolType":"Max
Hangs","hangDuration":7.0,"restDuration":180.0,"numberOfSets":6,"repeatsPerSet":null,"longRestDuration":null,"alternatingHands":false,"switchPauseDuration":10}}
Example Repeaters Workout
ID,Date,Time,Duration (minutes),Gym,Workout
Category,Workout Type,Focus
Areas,Grades,Notes,Created At,Sets
C3D4E5F6-A7B8-9012-3456-789012CDEF01,2024-06-17T00:00:00Z,19:00,45,Home
Board,Hangboard,Repeaters,Half Crimp,4,Good
endurance
work,2024-06-17T19:00:00Z,{"sets":[{"grip":"Half
Crimp","setNumber":1,"completedRepeats":6,"weight":null,"depth":18,"wasCompleted":true,"timestamp":"2024-06-17T19:05:00Z"},{"grip":"Half
Crimp","setNumber":2,"completedRepeats":6,"weight":null,"depth":18,"wasCompleted":true,"timestamp":"2024-06-17T19:12:00Z"},{"grip":"Half
Crimp","setNumber":3,"completedRepeats":5,"weight":null,"depth":18,"wasCompleted":true,"timestamp":"2024-06-17T19:19:00Z"},{"grip":"Half
Crimp","setNumber":4,"completedRepeats":4,"weight":null,"depth":18,"wasCompleted":false,"timestamp":"2024-06-17T19:26:00Z"}],"protocolConfig":{"protocolType":"Repeaters","hangDuration":7.0,"restDuration":3.0,"numberOfSets":4,"repeatsPerSet":6,"longRestDuration":60.0,"alternatingHands":false,"switchPauseDuration":10}}
Importing Data
You can import CSV files into Chalk Track from the
Settings screen. The app will:
-
Automatically detect whether each row is a climbing
or hangboard workout
- Skip duplicate workouts (based on ID)
-
Show a summary of how many workouts were imported
Important: When importing, make
sure your CSV file uses the exact column headers
shown above. The "Workout Category" column is
essential for the app to correctly identify the
workout type.
Exporting Data
When you export your data from Chalk Track, all workouts
(both climbing and hangboard) are included in a single
CSV file. Workouts are sorted by date in descending
order (newest first).
Special Characters
The CSV format properly handles special characters:
-
Fields containing commas are wrapped in double
quotes
-
Double quotes within fields are escaped as two
double quotes ("")
- Newlines within notes are escaped as \n
Grade Systems
When logging grades for climbing workouts, you can use
any of these formats:
- V-Scale: V0, V1, V2, ... V17
- Font: 4, 5, 6A, 6B, 6C, ... 9C
- French: 5a, 5b, 5c, 6a, ... 9c
-
Yosemite: 5.5, 5.6, 5.7, ... 5.15
The app does not validate grade formats during
import—you can use any grading system or custom
format that works for your needs.