More integrations ⚡ are on the way. Stay updated
Follow us on Instagram
ProgrammingSeptember 9, 2025 · 12 min read

How to write programs faster for multiple clients

Cut program writing time by making fewer decisions per client, not by typing faster.

Program writing is the task that quietly decides how many clients you can carry. Twenty clients on four-week blocks is roughly five programs a week, and if each one takes ninety minutes of staring at a blank builder you have given up a full working day before you have answered a single message.

The usual advice is to use templates. That is right, and it is also the reason most coaches try templates once, decide the programs came out generic, and go back to writing from scratch.

The fix is not typing faster and it is not a bigger library of finished programs. It is having fewer decisions to make per client.

Count the decisions, not the minutes

Open the last program you wrote and count what you actually decided. Split. Days per week. Session order. Exercise selection for each slot. Set and rep scheme per exercise. Rest. Tempo. Progression rule. Warm-up. What happens in week four. That is somewhere north of forty decisions for a four-week block, and you make most of them again, from nothing, for the next client.

The reason it feels slow is not that typing is slow. It is that every decision is small, none of them is obviously wrong, and each one costs you a few seconds of deliberation plus the mental overhead of holding the rest of the program in your head while you make it. Forty small decisions is far more tiring than four big ones, which is why program writing drains you out of proportion to the time it takes.

So the target is not "write the same program in forty minutes instead of ninety". It is "arrive at the program with thirty of the forty decisions already made", which is a different exercise entirely. Most of those thirty were never client-specific in the first place. You decided them once, based on how you coach, and then re-decided them identically for every client since.

That is what a template is for. Not a finished program you hand over, but a record of the decisions you have already made so you stop paying for them again.

Build skeletons, not finished programs

The common version of templating is a library of complete programs — "Female Fat Loss 3-Day", "Male Hypertrophy 4-Day", "Beginner Full Body" — and it fails for a predictable reason. A finished program only fits a client if that client matches every assumption baked into it, so you end up with a library of forty programs, no memory of what distinguishes number 19 from number 31, and a rewrite anyway once you open one.

A skeleton is the layer underneath. It fixes structure and leaves selection open:

  • The split and how many days it runs.
  • The session shape — what each session is for, and the order of movement patterns within it.
  • Set and rep prescriptions per slot.
  • The progression rule for the block.
  • Where the deload sits.

What it does not fix is which exercise fills each slot. A skeleton says "Session A: hinge, then horizontal push, then single-leg, then horizontal pull, then two accessories". Filling that in for a specific client takes a few minutes and is genuinely coaching. Deciding for the ninth time this month that Monday is a lower-body day is not.

Six to eight skeletons will cover almost any general-population roster: two or three lower-body frequencies at three, four and five days, a hypertrophy-biased version, a strength-biased version, a two-day minimum for the busy clients, and something for a client with a limited equipment set. Choosing a split for a client is the decision each skeleton encodes; hypertrophy programming is what changes inside the sets and reps when the goal shifts.

Eight skeletons you know by heart beat forty programs you have to open and read.

Your exercise library is the real bottleneck

Here is where the time actually goes, and almost nobody counts it: filling slots.

You know the client needs a horizontal push. You start typing "incline" into the exercise search, three results come back, none of them is the dumbbell version you meant, you check whether the one you picked has a video attached, it does not, you make a note to record one, you forget. Repeat that twenty times per program. That is where the ninety minutes went, and it has nothing to do with programming.

Fixing the library is boring, one-off work that pays back on every program you write afterwards:

  • Name exercises the way you search for them. Pick one convention — equipment first, then movement, then variation — and enforce it. "DB incline press" and "Incline dumbbell press" in the same library means every search misses half your options.
  • Delete the near-duplicates. If you have four cable row entries and only ever use one, the other three exist to slow you down.
  • Tag by the slot they fill, not by muscle. "Horizontal push", "hinge", "single-leg", "loaded carry" maps to how a skeleton is written, so filling a slot is one filtered search rather than a recall exercise.
  • Get videos and cues onto the exercises you use most. Twenty or thirty movements cover the overwhelming majority of what you prescribe. Do those, ignore the tail.
  • Set the default tracking columns once. If a movement is always logged as reps and weight, the exercise should say so, so you are not setting it per workout.
The job worth doing first

An afternoon on the library is the highest-return hour in this entire article, and it is the one coaches skip because it does not feel like coaching.

What genuinely has to differ between clients

Coaches over-estimate this badly. Ask most coaches what they individualise and they will say everything. Look at two of their programs side by side and the differences are usually exercise substitutions and a rep range.

Be honest about which column each thing belongs in:

Should be identical across clientsGenuinely client-specific
Session structureWarm-up format, movement order, section layout
VolumeStarting set counts per patternAdjusted after the first block from what they recovered from
Exercise selectionDefault choice per slotSubstitutions for injuries, equipment, ability
Rep rangesYour defaults per goalOnly where training age or the goal actually differs
ProgressionThe rule you useThe numbers it produces
Rest and tempoYour standardsRarely
Days per weekWhat their week can actually hold
Nutrition targetsAlways

The right-hand column is short, and that is the point. Days per week, exercise substitutions, and the loads a progression rule produces cover most of what real individualisation looks like in general-population coaching. Everything else is your method, and your method should not change because the client's name did.

Nutrition is the honest counter-example. Calorie and protein targets have to be calculated per person from their own numbers, and there is no template that survives that — how to calculate TDEE and macros is a per-client calculation every time. Training simply does not vary that much, and treating it as though it does is the habit that costs you the day.

Batch program writing into one session a week

Reactive program writing is the second big cost. A client's block ends on Tuesday, you notice on Tuesday night, you write it between two other things. Another ends Thursday. You are doing the same task five times a week, from a cold start, at whatever hour it lands.

Batching works because the setup cost is paid once. By the third program in a sitting you are holding your own skeletons in working memory, you are not re-searching the same exercises, and you have stopped context-switching between programming and messaging.

A workable shape for a roster of twenty:

ReactiveBatched
Sessions per week51
Time per program60–90 min25–35 min after the first
Weekly total5–7 hoursAbout 2.5 hours
QualityVaries with the hour it landsConsistent

Those times are what coaches typically report once the skeletons and library are in place, not a measured study — but the direction is not really in dispute, because it is the same reason batching works for anything else.

To make it run, put every client's block on the same cycle length so their renewal dates cluster, and write one week ahead of where the client is. Programs go out on Sunday for the block starting Monday week, which means a client who goes quiet or gets sick does not cause an emergency. If you run four-week blocks with a deload in the last week, your writing calendar becomes predictable enough to defend.

Beginners do not need the individualisation you are giving them

This is the uncomfortable one. A client in their first year of consistent training will progress on almost any reasonable program. Two sessions a week of compound movements with a progression rule they follow will produce results they will remember for a decade. Nothing you agonise over at the exercise-selection level is the reason they succeed or fail.

What determines their outcome is whether they turn up, whether they understand what they are doing, and whether the load goes up over time. None of those are solved by a more bespoke program, and one of them — understanding what they are doing — is actively harmed by variety, because a beginner learning six new movements is a beginner performing all six badly.

So the fastest programs you write should be for your newest clients, and the effort you save goes into onboarding, technique feedback and contact. The time to individualise heavily is when the client has run out of easy progress, when the injury history is real, or when the goal is specific enough that the general answer stops working.

The backwards version

Note what happens if you get this backwards, which is what most coaches do: hours of individualising a beginner's exercise selection, and an advanced client on a template because you ran out of week.

How to keep templates from feeling generic

The fear is legitimate. A client can tell when they have been handed something off a shelf, and one who works it out is close to leaving. But what makes a program feel generic is rarely its structure.

Three things carry the perception, and none of them is the skeleton:

  • The coaching notes. A note that says "keep the last two reps hard, this is the one you told me you rushed" is the whole difference. Notes are cheap to write and impossible to fake.
  • The exercise substitutions. Swapping two movements because of their shoulder or their gym's equipment is what a client notices, because it is a direct response to something they told you.
  • The check-in that follows. A program is generic when nothing about the previous block visibly changed it. If your check-in produces a specific change in the next program, and you say which change and why, the structural template underneath is invisible.

The reverse also holds. A fully bespoke program delivered with no notes, no explanation and no reference to last block reads as generic no matter how long you spent on it.

The practical version: spend the time you saved on structure on the first session's notes and the substitution list. Ten minutes there does more for how the program lands than an hour of reinventing the split.

Skeletons are also the piece a platform can hold for you. Fitsly's phased programs are built as a set of phases, each a number of weeks, with workouts pulled in from your library or from another program, and copied to a client as their own editable copy — so the structure is reusable but the client's version is yours to change, and later edits to your library never rewrite what someone is already training.

Where speed becomes a problem

When it has gone too far

There is a point where a client stops receiving coaching and starts receiving a template with their name at the top. It is worth being able to recognise it, because the whole approach above makes it easier to reach.

The honest tests:

  • Could you name, without opening it, one thing in this client's program that is there because of them? If not, they are on a template.
  • Did the last check-in change anything? A program that would be identical whether the client reported great weeks or terrible ones is not being coached.
  • Are you substituting exercises, or accepting the default because the default is already there? The convenience of a filled slot is exactly what stops you thinking about it.
  • Has anything changed in three blocks? Same skeleton, same exercises, same numbers, three blocks running is drift, not consistency.

Two warning signs from the client side matter more than any of that: they stop asking questions about the program, and their logged sessions get less complete. Both usually mean disengagement, and disengagement often starts when the training stopped feeling like it was about them.

The correction is not to abandon skeletons. It is to reintroduce the decisions that should have stayed client-specific — the substitutions, the volume adjustment off last block, the note that references what they told you — and to accept that some clients need more than the system gives them by default. Advanced clients, anyone in rehab, anyone with a competition date: those get written properly, and you can afford to because the other fifteen took twenty-five minutes each.

Frequently asked questions

How long should it take to write a client's program?

Once you have skeletons and a clean exercise library, twenty-five to thirty-five minutes for a four-week block is a realistic target for a general-population client, with the first program of a batch taking longer. If every program still takes over an hour, the cost is almost always exercise selection and re-deciding structure, not the writing itself.

One price, every feature

Fitsly includes nutrition, payments, forms and automations on every plan. The only thing that changes your bill is how many active clients you have.

See pricing →
Written by the Fitsly Team

Written by the team building Fitsly. We spend most weeks talking to coaches about the unglamorous half of the job — billing, check-ins and the software bill.

Free 14-day trial
All features included

Start today with a free trial

Build a better coaching business with Fitsly — the all-in-one platform built by coaches, for coaches. Save time, stay organized, and start your free 14-day trial today.