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

# Update Split Test Step

`PATCH /funnels/{funnel_id}/split_test_steps/{id}`

Update a split test's variants: attach a page to an empty branch, swap an existing
variant's page, or adjust the weights. The `variants` array length must equal the
number of branches in the split test (2 for the standard binary case).

- Weight rules: if *any* variant provides `weight`, all variants must provide it and
  the values must be integers 0..100 summing to 100. If *none* provide weight, weights
  stay unchanged.
- Page-id rules per variant:
  - Equal to current `page_id` → no-op.
  - Branch currently empty + new `page_id` provided → attach.
  - Branch currently has a page + new different `page_id` → swap (old step destroyed).
  - `page_id: null` or blank is rejected (detach is out of scope — use DELETE with
    `branch` parameter instead).
- Any page being attached/swapped-in must: (a) be in the same workspace, (b) be a
  `user_page`, and (c) have no existing `ShowPageStep` anywhere in any funnel.

## Path parameters

- `funnel_id` integer, required
- `id` integer, required

## Request body

- SplitTestStepParametersUpdate — Parameters for updating a split test's variants. The `variants` array length must equal the current number of branches (2 for the standard binary case). Each entry may provide any subset of `{ page_id, weight }`.
  - `split_test_step` object, required
    - `variants` object[], required
      - `page_id` integer — New page to attach/swap to this branch. Must be a fresh page (no existing ShowPageStep).
      - `weight` integer — Traffic weight (0..100). If any variant provides weight, all must — and they must sum to 100.

## Response `200`

OK

- 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)
