# End

Stop the run right here — including whatever sits further out than the lane the End step is nested in, such as a Condition branch or a Date & Time branch.

## Getting here

**Automate → Workflows**, open a workflow, click **+** on the canvas, then pick **End** under **Add Steps**.

## Before you start

- An **owner**, **admin** or **agent** can add this step and save the workflow. Publishing it is an **owner** or **admin** action.
- Building and running workflows depends on your plan; see [pricing](/pricing).
- Nothing outside Inchat has to be connected, and there is nothing to configure — End takes no fields.

## Set up

1. Open the workflow and click **+** where the run should stop.
2. Pick **End**. There is nothing to configure.
3. Save the step, then publish the workflow.

## How it works

- Reaching an End step stops the run there: no later step in the workflow executes for this contact on this run, not just the rest of the lane the End step sits on.
- That reach is deliberate — an End step placed inside a Condition branch or a Date & Time branch stops the whole run, not only that branch, so a segment that decides the conversation is finished does not have to be the last thing on every lane for that to hold.

## When it fails

- End cannot fail on its own — it takes no fields and makes no lookup, so reaching it always stops the run. The surprise operators report instead is what does not also stop: see Limits.

## Limits

- It does not cancel anything this run already queued for later. A Timeout Branch message an earlier **Assign To** step queued still fires on schedule even though the run that queued it later reached End — cancelling it is **Remove from Workflow**'s job, not End's. (A **Wait** step earlier in the same run is not an example of this: reaching a Wait suspends the run into a queued continuation right there, so an End step cannot be reached afterward in that same run — only in whatever runs later, after the wait fires.)
- It sends the customer nothing and changes nothing about the conversation's assignee or status by itself — it only stops the run.

## Best practices

- Use End when a path is genuinely finished and nothing after it should run, even in a branch further out on the canvas — reach for **Remove from Workflow** as well if the run also queued something that needs cancelling.

## Use cases

- A self-serve path resolves the customer's request and ends there, without falling through to a follow-up meant for unresolved conversations.
- A Condition step's branch for "already handled" ends the run immediately, while the other branches continue with the rest of the workflow.

## Related

- [Jump To](https://inchat.inseller.my/help/workflows/jump-to)
- [Condition](https://inchat.inseller.my/help/workflows/condition)
- [Remove from Workflow](https://inchat.inseller.my/help/workflows/remove-from-workflow)
- [Workflows: how a flow runs](https://inchat.inseller.my/help/workflows/workflows-overview)

---

Source files: `src/lib/workflows/ai-builder/spec.ts`, `src/lib/workflows/canvas-model.ts`, `src/components/workflows/WorkflowStepConfigDrawer.tsx`, `src/lib/workflows/types.ts`, `src/lib/workflows/engine.ts`
