Skip to main content
Every stage in a Motion carries a list of milestones — the customer outcomes that stage exists to produce, written in plain English: “Sending domain authenticated”, “Admin has invited the team”, “First report scheduled”. Milestones are what the account’s stage panel tracks, what the customer sees in their portal, and what gates the advance to the next stage.
An account in a Motion's Setup stage: milestone rows with required, agent, and manual tags, Run checks, agent-cited evidence, and the Advance button disabled at 2 of 3 required met
There is no separate exit-criteria layer to maintain. The milestone list is the single source of truth: the ones you flag as required are the gate.

Two ways a milestone gets confirmed

Each milestone is confirmed in exactly one of two modes, chosen with a toggle in the stage editor: Agent — an AI verifies the outcome by reading your connected systems. You write one plain-English check (“what should the agent confirm?”), and the agent answers it by calling the account’s connected read-only tools — your CRM, Google Workspace, Slack, and the rest of your integrations. The check is grounded: the agent has to cite what it actually found, and it can only ever confirm a milestone — it never un-confirms one that has already been met. Manual — a human marks it. Use this for outcomes that live outside anything Thread can read: a signed-off kickoff call, an in-product metric from a system that isn’t connected, a judgment call.
No faking: if an agent-confirmed milestone can’t actually be verified — because no connected tool can see that outcome — Thread shows you the honest gap (“No connected tool for the agent to verify with yet — connect one or use Manual”) instead of a false green. The stage editor flags this at authoring time, keyed on which read tools your org actually has connected.

When checks run

Agent checks run two ways:
  • Automatically — Thread sweeps active accounts on a schedule and re-runs the checks for each account’s current stage.
  • On demand — the account’s stage panel has a Run checks button that runs the live agentic check immediately for that stage’s agent-confirmed milestones. Use it after a customer tells you they’ve finished something, or to sanity-check a new Motion without waiting for the sweep.
Either way, a confirmation is only written when the agent found real evidence in a connected system. A confirmed milestone shows what the check consulted, so you can see why it’s green. Manual milestones are marked directly on the milestone row in the account’s stage panel.

The required flag is the stage-advance gate

Each milestone has a Required to advance toggle. That flag is the entire gating model:
  • The stage panel shows the gate as a running count — “3 of 4 required met”.
  • Non-required milestones are still tracked and still visible to you and the customer; they just don’t block the advance.
  • A stage with no required milestones gates on nothing — the advance is available whenever you judge it right.
When the last required milestone on the current stage confirms, the runtime proposes the stage advance to a human. An item lands in the Inbox saying the account is ready to advance, and the stage panel’s Advance button goes live. A person reviews and confirms; nothing advances automatically. See Motions overview for the full advance flow.

Authoring milestones

In the Motion editor, open a stage and add milestones to its list:
1

Write the outcome

One plain-English line, phrased as the customer outcome — this is the label you, your team, and the customer will all see.
2

Choose Agent or Manual

Agent mode adds a check field: describe what the agent should confirm, in plain English. If your org has no connected read tool that could answer it, the editor shows the honest-gap notice so you can connect one or switch the milestone to Manual.
3

Set Required to advance

Flag the milestones that define “done” for this stage. Everything else is progress color.
If you AI-draft a Motion, the builder generates the milestone list for each stage from your source material and tags each one as agent-verifiable or manual based on what Thread can actually check — you review and adjust the same list in the same editor.
Keep required milestones few and load-bearing. They are the definition of stage-done, so each one should be an outcome you would genuinely refuse to advance without. Track the nice-to-haves as non-required milestones instead.

What the customer sees

Milestones flow to the customer portal grouped by stage — the same outcomes, the same confirmations, in customer-facing language. Confirming a milestone isn’t just internal bookkeeping; it’s how the customer knows the program is moving.