---
title: "Enroll Contact (Create Run)"
method: POST
path: "/workflows/{workflow_id}/runs"
tags: ["Workflows::Run"]
---

# Enroll Contact (Create Run)

`POST /workflows/{workflow_id}/runs`

Manually enroll a contact into a workflow, starting a new run immediately.
The workflow must be enabled (`status: live`) — an unenabled workflow returns 422.
The contact must belong to the same workspace.

Some step types are skipped at enrollment rather than executed — notably page
(`show_page_step`) and internal sequence/plumbing steps, which only make sense
inside a funnel. This list is non-exhaustive; standalone automations run the
action and split steps documented under Workflows::Step.

## Path parameters

- `workflow_id` string, required

## Request body

- WorkflowsRunParametersCreate — Parameters for manually enrolling a contact into a workflow. The workflow must be enabled (status `live`) — otherwise returns 422.
  - `run` object, required
    - `contact_id` union, required — Integer database id or obfuscated public_id.
      - integer
      - string
    - `skip_communication` boolean — When true, communication steps (send email, chat message, etc.) are skipped for this run. Defaults to false.

## Response `201`

Created

- WorkflowsRunAttributes — An execution record tracking a contact's progress through a workflow. `status` is derived: - `canceled` — the run was explicitly canceled. - `completed` — the run finished normally. - `paused` — the run is waiting at a delay or hold step. - `active` — none of the above; currently in-progress. The list endpoint returns only standard automation runs (`type: null`); survey/STI run subtypes are excluded.
  - `id` integer — Run ID
  - `public_id` string, nullable — Obfuscated run ID
  - `workflow_id` integer — Integer ID of the parent workflow
  - `contact_id` integer, nullable — Raw integer ID of the enrolled contact
  - `current_step_id` integer, nullable — Raw integer ID of the step the run is currently at. Null when not at a step.
  - `event_id` integer, nullable — Raw integer ID of the triggering event that started this run, if any.
  - `type` string, nullable — STI type column. Always `null` for standard automation runs (the only subtype the list endpoint returns).
  - `status` 'active' | 'paused' | 'completed' | 'canceled' — Derived execution status.
  - `skip_communication` boolean — When true, communication steps (send email, etc.) are skipped for this run.
  - `completed_at` string, date-time, nullable — Timestamp when the run completed. Null if still in progress.
  - `paused_at` string, date-time, nullable — Timestamp when the run was last paused. Null if never paused.
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity

---

[API](https://skmtc.net/myclickfunnels/apis/clickfunnels-api.md) · [All operations](https://skmtc.net/myclickfunnels/apis/clickfunnels-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/myclickfunnels/clickfunnels-api/revisions/ae6313eaa176/schema)
