Download on the App Store

CSV Export Format

Documentation for importing and exporting workout data

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.