Programme Import Template (XLSX)
The Coach-Led Import pipeline accepts one file format only: the official Bliply Programme Import Template (.xlsx). This article explains exactly how to fill it in, what each column means, and the validation rules the uploader enforces.
Where to get the template
- Open Workouts → New Phase (Coach-led).
- Choose the destination programme in Step 1.
- In Step 2, click Download .xlsx. The file is named
bliply-programme-template.xlsx.
Always download a fresh copy at the start of every new week — it guarantees the column headers exactly match what the parser expects.
Golden rules
- Do not rename, reorder, add, or remove columns. The uploader validates every required header before parsing — any mismatch is rejected with a clear error.
- One row per training day, in the order Monday → Sunday. Skip a day by leaving its row blank (the row will be ignored).
- Only the yellow input cells should be edited. The grey "Total Time Check" column auto-calculates session length and should be left as a formula.
- Up to 3 strength/skill slots per day. Leave Strength 2 and Strength 3 blank if not needed.
- Numbers stay as numbers — don't add units like "min" or "kg" inside numeric cells (Sets, Reps, Duration, Rounds). Notes columns are free text.
Header rows (rows 1–4)
| Row | Cell | What to fill in |
|---|---|---|
| 1 | A1 | Template title — leave as-is. |
| 2 | A2 | Helper text — leave as-is. |
| 3 | A3 | Phase Overview / Philosophy. Free text describing the phase intent, periodisation, test weeks, de-loads, etc. This is imported into the programme as the phase philosophy and powers AI enrichment context. Replace the example text with your own. |
| 4 | B4 | Week number (1, 2, 3…). The label "Week:" stays in A4. |
Day rows (rows 6–12) — column-by-column
Row 5 is the locked header row. Rows 6–12 are the seven training days.
Day & teaching
| Column | Header | Required? | What to put here |
|---|---|---|---|
| A | Day | Yes | Mon / Tuesday / Wed etc. The parser accepts full names and 3-letter abbreviations. Rows without a recognised day are ignored. |
| B | Total Time Check | Auto | Formula cell. It sums teaching + working time across the day. Don't overwrite. |
| C | Strength Teaching Time Duration | No | Whole number of minutes spent on strength teaching/setup (e.g. 10). |
| D | Strength Teaching | No | Free text teaching cues for the strength block. Comma-separated items are auto-split into bullet points. |
Strength slots 1, 2 and 3 (columns E–V)
Each slot has the same six columns. Repeat the pattern for slots 2 and 3, leaving any unused slot blank.
| Suffix | Header | Required? | What to put here |
|---|---|---|---|
| Name | Strength n Name | Yes (slot 1) | The movement name — must match (or fuzzy-match) something in your component library, e.g. Back Squat, Strict Pull Up. |
| Variant | Strength n Variant | No | Optional variant qualifier, e.g. Tempo 3-1-1, Pause, Banded. |
| Sets | Strength n Sets | No | Number of sets, e.g. 5. |
| Reps | Strength n Reps | No | Reps per set. Free text so you can write 5, 3-3-3, or AMRAP. |
| Duration | Strength n Duration | No | Total minutes for this slot (used by the Time Check formula). |
| Notes | Strength n Notes | No | Loading %, RPE, scoring guidance, scaling cues — anything coach-facing. |
Superset Group (column W)
If two or more strength slots on the same day should be paired, give them a shared label here. Examples: A, Superset, Tri-set, Complex. The Parse & Fix step uses this hint and lets you confirm the grouping type before publishing. Leave blank for stand-alone movements.
Conditioning teaching & metadata (columns X–AE)
| Column | Header | Required? | What to put here |
|---|---|---|---|
| X | Conditioning Teaching Time Duration | No | Minutes for conditioning teaching/setup. |
| Y | Conditioning Teaching | No | Free text — comma-separated items become bullets. |
| Z | Conditioning Format | Yes (if conditioning) | The format label: AMRAP, EMOM, For Time, RFT, Chipper, Intervals, etc. |
| AA | Conditioning Duration | Yes (if conditioning) | Total working minutes (number only). Used by the Time Check formula. |
| AB | Conditioning Scoring | No | One of: Time, Reps, Rounds & Reps, Calories, None. |
| AC | Conditioning Rounds | No | Whole number of rounds where applicable (e.g. RFT or chipper rounds). |
| AD | Conditioning Benchmark | No | yes or no. Marking yes tells the system this is a benchmark workout (e.g. Fran, Grace) so it can fetch the canonical version verbatim. |
| AE | Conditioning Description | Yes (if conditioning) | The full WOD description, e.g. 21-15-9 Thrusters (42.5/30kg), Pull Ups. Movement names are fuzzy-matched against your component library in the Parse & Fix step. |
Validation: what the uploader checks
Before any rows are parsed the uploader confirms the file is a .xlsx and that the header row contains every required column. If anything is missing, you'll see a message like:
"This file doesn't match the Bliply Programme Import Template. Missing required columns: Strength 1 Name, Conditioning Format. Please download the latest template and re-export your week without renaming or removing any columns."
The required headers are: Day, Strength 1 Name, Strength 1 Sets, Strength 1 Reps, Superset Group, Conditioning Format, Conditioning Duration, and Conditioning Description. All other columns are optional but recommended.
Common mistakes & fixes
| Issue | Fix |
|---|---|
| "Missing required column" error | You've renamed, deleted, or merged a column. Download a fresh template and copy your data over carefully — keep the row 5 headers exactly as supplied. |
| "No training days were detected" | Column A has values the parser doesn't recognise as days. Use Mon–Sun (full or 3-letter). |
Numeric cells showing #VALUE! in Total Time Check | You've typed text (e.g. "20 min") into a numeric column. Replace with a plain number; put units in the Notes column instead. |
| Strength 2 / 3 didn't come through | Make sure the Name cell for that slot has a value. Empty Name = slot ignored, even if Sets/Reps are filled. |
| Movements not auto-grouped as a superset | Add the same Superset Group label to every paired slot. You'll still confirm the grouping type (Superset / Tri-set / Complex / A-B-C) in the Parse & Fix step. |
| Benchmark workout looks rewritten | Set the Conditioning Benchmark column to yes so the canonical version is preserved verbatim during enrichment. |
After upload
Once parsed, the pipeline takes you to Parse & Fix for movement matching and grouping confirmation, then through Enrich → Review → Publish. See the "AI Workout Generation" article for what each subsequent step does.