> For the complete documentation index, see [llms.txt](https://help.rhythms.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.rhythms.ai/goals-and-okrs/managing-and-tracking-goals/set-a-progress-plan-for-an-okr.md).

# Set a progress plan for an OKR

A progress plan tells Rhythms where a goal is supposed to be at points along the way, so status is judged against your plan instead of a straight line from start to finish. A sales goal that is meant to be flat in January and spike in March shows On Track in February when you are where you planned to be, rather than At Risk. You set a plan on the goal's Metric attribute, in the **Progress plan** tab, or by asking Rhythms in chat.

[Watch the video](https://www.loom.com/embed/d07b02e400ac4a4bb415171bd4a2d178)

## What a progress plan changes

Without a plan, expected progress grows in a straight line between the goal's start date and end date: three months into a twelve-month goal Rhythms expects 25%. With a plan, expected progress follows the line through your milestones. Status is then derived from the gap between expected and actual progress with the same thresholds as everywhere else: 25 or more points behind is At Risk, 10 to 24 is Behind, otherwise On Track.

A progress plan affects only the status of the goal it is on. The progress that rolls up to a parent is the goal's actual progress, unchanged. The plan does feed the parent's own plan, described below.

## Which goals can have a plan

Any Objective, Key Result or Initiative whose metric type is **Achieve a target** (the default), including the plain 0 to 100% Progress metric, and which has a start date and an end date. Goals whose metric is Stay above, Stay below or Stay between cannot have a plan; switching a goal to one of those types removes its plan. Anyone who can edit the goal, which by default means its owners, their managers, its delegates and Rhythms Admins, can set or change its plan.

## Set or edit a progress plan

1. Open the goal page and click the **Metric** attribute (it shows the target, or "Set target").
2. Select the **Progress plan** tab. On an Objective the popover opens straight on the plan.
3. Click **Add milestone** and enter a date and the target value you expect to have reached by then. Add as many milestones as you need; they must fall between the goal's start and end dates.
4. Close the popover. The plan saves and the goal's status is recalculated on its next check-in or rollup.

To change a plan, open the same tab and edit, add or delete milestones. To go back to the straight line, open **Manage** in the tab and choose **Remove plan**.

To do the same in chat, click the **Edit with Rhythms** icon in the Progress plan tab, or describe the shape you want to Rhythms: "Create a back-weighted quarterly progress plan for KR-042". Rhythms proposes the milestones and applies them when you confirm.

## How status is calculated with a plan

Rhythms draws a straight line from the goal's start value on its start date, through each milestone in date order, to the target on the end date, and reads the expected value for today off that line. It then converts that value to expected progress and compares it with actual progress.

Example: an annual goal from $0 to $500K has milestones of $50K on 31 March, $150K on 30 June and $350K on 30 September. On 15 April, a fifth of the way from the March milestone to the June one, the expected value is about $66K, or 13%. If you are at $60K (12%) the gap is one point, so On Track. Without a plan, expected progress on 15 April would be 29% and the same $60K would be 17 points behind, so Behind.

Because the line runs between milestones, you are not measured against the last milestone you passed. Falling short of the March figure in mid-April still shows as Behind or At Risk; the plan makes the expectation honest, not lenient.

## Plans on parent OKRs

A parent that updates from its children can carry a plan derived from them. Rhythms takes each contributing child's milestones, or its start and end dates if it has no plan, and works out the parent's expected value on each of those dates from the weighted expected progress of the children. The tab then shows **Updating from children**, and the derived plan is refreshed whenever children are added, removed, made visible, or change their own plan or target.

Click **Edit plan** in that banner to take the plan over by hand; a plan you have edited is never overwritten by the children. To hand it back, open **Manage** and choose **Update from children**.

## Frequently asked questions

**Does a progress plan change the progress that rolls up to my Objective?** No. The plan changes only how this goal's status is judged. The parent receives the actual progress, and may use this goal's milestones when deriving its own plan.

**What happens if I change the goal's dates?** Rhythms keeps the milestones that still fall within the new dates and drops the rest; the plan is re-read against the new start and end.

**Can I use a plan together with auto-updates?** Yes. The connection supplies the current value and the plan decides what status that value earns.

**Can I label a milestone?** Yes, milestones take an optional label, for example "Launch" or "Q2 close".

## Related articles

* [How parent OKR progress and status roll up](/goals-and-okrs/managing-and-tracking-goals/how-parent-okr-progress-and-status-roll-up.md)
* [Understanding Metric Types in Rhythms](/goals-and-okrs/creating-goals/metric-types-for-key-results.md)
* [Effective Check-ins to Track OKR Progress in Rhythms](/goals-and-okrs/managing-and-tracking-goals/write-and-submit-check-ins.md)
* [How to Set Up Auto-Updates](/connectivity/connectors/set-up-automatic-updates-from-a-connector.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.rhythms.ai/goals-and-okrs/managing-and-tracking-goals/set-a-progress-plan-for-an-okr.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
