---
title: "Create Split Test Step"
method: POST
path: "/funnels/{funnel_id}/split_test_steps"
tags: ["Funnels::SplitTestStep"]
---

# Create Split Test Step

`POST /funnels/{funnel_id}/split_test_steps`

Wrap an existing page in a new split test. Provide one variant to wrap a single page
(the second branch starts empty and can be attached later via PATCH), or two variants
to wrap a page and attach a fresh page as the second branch. The API never clones
pages — the second variant's page must not already be used by any funnel step.

See the [Funnels Skill](https://accounts.myclickfunnels.com/.well-known/funnels/skill.md#split-test-steps) for the full split-test surface.

## Path parameters

- `funnel_id` integer, required

## Request body

- SplitTestStepParametersCreate — Parameters for wrapping an existing page in a new split test. Provide 1 or 2 variants. The first variant's `page_id` must already be attached to a step in this funnel's workflow (that page gets wrapped). The second variant's `page_id` must be a fresh page (not already used by any step anywhere). No cloning occurs. ### Positioning the split By default (no `show_page_step_id`), the split lands at the funnel entry — `sort_order 0` under the workflow root — with all surviving steps moved into a `Root Step after Sequence End` convergence sequence positioned right after the split. When `show_page_step_id` references an existing show-page step in this funnel, the split is inserted **after that step** under the same parent, and steps N+1...end are migrated under the convergence sequence. This is the "split between step N and step N+1" shape.
  - `split_test_step` object, required
    - `variants` object[], required — 1 or 2 variant entries.
      - `page_id` integer — Page ID (required on the first variant; optional on the second).
      - `weight` integer — Traffic weight (0..100). Either omit on both variants (defaults 100/0 for 1 variant or 50/50 for 2) or provide on both.
    - `show_page_step_id` union — Optional. Insert the new split AFTER the workflow step that wraps this `show_page_step`. Accepts a numeric `Workflows::Steps::ShowPageStep` id or its obfuscated public id (you can read either off any page response). When omitted, the split lands at funnel entry.
      - integer
      - string

## Response `201`

Created

- SplitTestStepAttributes — A split test step wraps an existing page in a funnel in a two-branch split. Each variant carries the `show_page_step` + `page` attached to that branch (both `null` when the branch is empty), plus the branch's traffic `weight` (0..100).
  - `id` integer — Split test step ID
  - `public_id` string — Obfuscated split test step ID
  - `funnel` object — The funnel containing this split test.
    - `id` integer — Funnel ID
    - `public_id` string — Obfuscated funnel ID
    - `name` string — Funnel name
  - `variants` object[] — Ordered variants. Binary split tests always have 2 entries.
    - `show_page_step` object, nullable — The ShowPageStep function attached to this branch, or null if empty.
      - `id` integer
      - `public_id` string
      - `name` string
      - `current_path` string
    - `page` object, nullable — The page attached to this branch, or null if empty.
      - `id` integer
      - `public_id` string
      - `name` string
    - `weight` integer — Percentage of traffic sent to this branch (0..100). Branches must sum to 100.
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `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)
