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.

  1. Click Programs in the sidebar to see your programs.
  2. Click Assign to Client on a program card.
  3. Select the clients who should get the program. More options appear below, including Start Date.

A. From /programs (best for assigning to many clients)

  1. On the program card, click Assign to Client (in list view the button reads Assign).
  2. The BulkAssignmentModal opens.
  3. Pick clients from your roster (multi-select).
  4. 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.
  5. Optional Notes — visible to the client on their program detail page.
  6. 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)

  1. Open the client (/clients/[clientId]) and click the Schedule tab.
  2. Click Assign Program (always visible in the header and in the empty state).
  3. The AssignProgramModal opens with this client pre-selected.
  4. Pick the program, pick start date, click Assign.

C. From /clients/[id]/programs (drill-down view)

  1. Inside Client 360, click Programs tab → Assign Program button.
  2. Routes to /programs?assign={clientId} and opens the modal pre-filtered.

What the client sees after you assign

  • Their /dashboard/client shows 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=false in 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?