For Coaches Training & analysis

Dynamic plans: shared subscription calendars

A boundless, date-keyed plan athletes subscribe to — what it is, how it differs from a static plan, and how to build one.

Static plan vs dynamic plan

Grepiac has two kinds of multi-week plan, and they behave differently on purpose:

How a dynamic plan works

Each entry sits on a real date. When you add one, it spawns a real ScheduledWorkout for every active subscriber (so pairing, Load, week totals and compliance all work normally). The sync rules:

Building one

Open the editor at /coach/dynamic-plan/<id>/ — an 8-week, date-keyed grid with prev/next paging, a template/ad-hoc picker, and the subscriber manager. Create a plan, place workouts on dates, then add subscribers.

Feeding it from the macrocycle planner

You do not have to place every session by hand. From the ATP Builder, Push to dynamic plan lays a generated season's dated sessions straight onto a dynamic plan. Because entries are keyed by absolute date, you can run the planner for several seasons and push each onto the same plan — they accumulate into a multi-year library that every subscriber receives. Leave replace overlapping dates on so re-running one season replaces just that season. See Macrocycle plans: the basics.

When an athlete edits a dynamic session

If an athlete changes a workout that came from a dynamic plan, that copy detaches — it becomes their own static copy and stops tracking the plan, so later plan edits no longer overwrite it. The plan keeps the original for everyone else.

Hiding a plan or weeks from athletes

You can stage a plan privately and reveal it when ready. In the plan editor:

While hidden, the sessions still sit on each subscriber's calendar and you (the coach) always see them, dimmed; the athlete does not. Flip the toggle back and they appear for everyone. Existing plans stay visible, so nothing changes for current subscribers until you choose to hide something.

Power / pace targets on a one-off workout

Each step can be a target (one number) or a range (a band like 95–100% FTP), switched with the small target/range button on the step. The Z? picker fills a range straight from a zone — pick Zone 2 and you get its real band (60–74%), not a single midpoint. Steps can also be written by time or distance: hit the time/dist button to prescribe 8 × 100 m instead of minutes. A distance step keeps its time estimate too, so Load and weekly totals stay correct.

On export: Garmin .fit carries ranges and distance steps natively. Zwift .zwo gets a band on steady blocks, but its interval format takes a single power per leg, so a range there shows as its midpoint.

When you add a one-off workout to a dynamic plan (the "or a one-off workout" box), open + Power / pace targets to build intervals — warmup, steady, ramp, intervals, cooldown — exactly like the calendar workout builder. Intensities are set as a percentage of threshold (FTP, threshold pace, LTHR) or RPE, so a single structure resolves to each subscriber's own zones: "4×5 min @ 100% FTP" is the right watts for every athlete on the plan. Editing the targets later propagates to subscriber copies that are still planned. Workouts picked from a template already carried their structure; this closes the gap for typed-in one-offs.

Last updated Aug 5, 2026

Still stuck? Ask us a question and we'll write up an answer.

Ask a question