Create Page
Create a new internal page in the workspace. By default, creating a page without references to a funnel or show page step will create a standalone landing page.
You can optionally attach the page to a funnel by providing either:
- funnel.funnel_id: Creates a new show page step in the specified funnel. When provided without show_page_step_id, the page is added as the last step of the funnel, positioned after the currently last page.
- funnel.show_page_step_id: Swaps the referenced step to point at this newly created page. The page previously linked to that step becomes an orphan (kept in the workspace, no longer linked to any step).
sort_order (optional, top-level): Controls the zero-based position within the funnel when creating with funnel.funnel_id. 0 inserts before the first existing step; omit to append at the end. Out-of-bounds values (negative or greater than the current step count) return 422. sort_order is ignored when funnel.show_page_step_id is used — the swap target's current position is preserved.
funnel.after_show_page_step_id (optional, with funnel.funnel_id): Insert the new step right after the referenced show page step — also places the page inside a split branch. Alternative to sort_order. An id that does not resolve to a step in the funnel returns 400.
To also attach products to the page's checkout step in the same call, pass show_page_step.product_ids: [...] (sibling of funnel). This is the only way to set products at create time — the legacy funnel.products shape is rejected with a 400. Products attachment is additive and all-or-nothing: any unresolved id fails the whole request and the page is not created.
external_url is rejected — to create an externally-hosted (SDK) page use POST /api/v2/workspaces/:workspace_id/pages/external.
Path parameters
Query parameters
Expand additional data in the response. Use expand[]=field_name to include optional fields (e.g., expand[]=head_code&expand[]=footer_code&expand[]=custom_css&expand[]=markup). Markup is opt-in on every endpoint (show, list, create, update) because PML serialization runs per page. custom_css is available on internal pages only. See the Expanding guide for available fields and examples.
Request body
Example request
{
"page": {
"page": {
"name": "My New Page",
"current_path": "/my-new-page",
"theme_id": 12345,
"description": "A landing page for our new product launch",
"seo_title": "New Product Launch - My Brand",
"seo_description": "Discover our latest product offering",
"seo_index": true,
"funnel": {
"funnel_id": "xyz789"
},
"show_page_step": {
"product_ids": [
"PrdAbc"
]
},
"head_code": "<script>console.log('hello');</script>",
"head_code_mode": "append",
"markup": "<section>\n <row cols=\"1\">\n <column>\n <headline>Welcome to our page</headline>\n <subheadline>Start your journey here</subheadline>\n </column>\n </row>\n</section>\n"
}
}
}Response
Created
Example response
{
"id": 9,
"public_id": "kJzvQi",
"workspace_id": 42000,
"name": "Great Page",
"description": "A high-converting sales page",
"theme_id": null,
"seo_title": "Great Page - My Brand",
"seo_description": "Learn more about our amazing offer",
"seo_index": true,
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-01-01T00:00:00.000Z",
"type": "funnel_page",
"current_path": "/my-page-canonical",
"url": "https://myteam.myclickfunnels.com/my-funnel-page",
"show_page_step": {
"id": 42,
"public_id": "aBcDeF",
"name": "Best Page Step",
"current_path": "/my-funnel-page",
"sort_order": 0,
"products": []
},
"funnel": {
"id": 123,
"public_id": "xYzAbC",
"name": "My Sales Funnel"
},
"sdk": null,
"markup": "<section>\n <row cols=\"1\">\n <column>\n <headline>Great Page</headline>\n <subheadline>Start your journey here</subheadline>\n </column>\n </row>\n</section>\n"
}