Assigning a Program to a Client
Three ways to assign a program — pick the one that fits your workflow.
trainer guide/programs
What this is for: Get a program onto a client's calendar so today's workout starts showing up in their app.
Three places to assign
You can assign the same program from any of these surfaces. They all hit POST /api/programs/[id]/assign under the hood.
- Click Programs in the sidebar to see your programs.
- Click Assign to Client on a program card.
- Select the clients who should get the program. More options appear below, including Start Date.
A. From /programs (best for assigning to many clients)
- On the program card, click Assign to Client (in list view the button reads Assign).
- The BulkAssignmentModal opens.
- Pick clients from your roster (multi-select).
- Pick the Start date (it appears once at least one client is ticked). The program's 7-day cycle anchors to the Monday of that week.
- Optional Notes — visible to the client on their program detail page.
- Click Assign to N Client(s) (the button counts the clients you ticked).
B. From /clients/[id] Schedule tab (best for one client at a time)
- Open the client (
/clients/[clientId]) and click the Schedule tab. - Click Assign Program (always visible in the header and in the empty state).
- The AssignProgramModal opens with this client pre-selected.
- Pick the program, pick start date, click Assign.
C. From /clients/[id]/programs (drill-down view)
- Inside Client 360, click Programs tab → Assign Program button.
- Routes to
/programs?assign={clientId}and opens the modal pre-filtered.
What the client sees after you assign
- Their
/dashboard/clientshows Today's workout — the template on today's cycle slot (or "Rest day"). /programs(their view) lists the new program.- Past sessions are not seeded — they start fresh from the assignment date.
Multiple active programs at once
- A client can have multiple active programs assigned simultaneously (e.g. Hypertrophy + Mobility Flow).
- The today's workout widget shows the first one with a workout scheduled for today.
- Use the Schedule tab Timeline view to visualize overlapping programs.
Replacing a program
- To replace, archive the old assignment (set
isActive=falsein the API, or use Archive Program from the program card menu) and assign a new one. - Both stay in the client's history — Timeline view shows both as colored bars.
Common pitfalls
Where to find this
/programs→ ProgramCard → Assign → BulkAssignmentModal./clients/[id]Schedule tab → Assign Program button./clients/[id]/programs→ Assign Program button.- API:
POST /api/programs/[id]/assign.
Was this article helpful?
