Create External Page
Changed onCreate an externally-hosted (SDK) page. Unlike internal pages, the visual content lives on your own domain and is registered with ClickFunnels via a lightweight SDK integration.
Required fields:
- external_url: The fully-qualified URL where your page is hosted.
Standalone vs in a funnel: the funnel block is optional.
- Omit it to create a standalone external page: registered with an SDK token and visit tracking enabled, but not a step in any funnel. Place it later by passing its id in a conditional split's branches[].page_id, a split test's fresh-variant slot, an update swap (funnel.show_page_step_id), or the funnel attach_page flow. SDK checkout and form submission require placement and return a page_not_in_funnel error until the page is a funnel step.
- Provide funnel.funnel_id OR funnel.show_page_step_id to create it inside a funnel in one call.
Funnel positioning:
- funnel.funnel_id + optional sort_order: Creates a new show page step in the funnel at the specified zero-based position (0 = first, omit = append at end).
- funnel.show_page_step_id: Swaps the existing step to point at the new external page. The previous page on that step becomes an orphan. sort_order is ignored in this case.
- Positioning params without their funnel target return 422: sort_order requires funnel.funnel_id, and funnel.after_show_page_step_id requires funnel.funnel_id.
Rejected fields (returns 422 if present): markup, theme_id, current_path, seo_title, seo_description, seo_index, block_ai_crawler, block_ai_search, block_ai_assistant, head_code, footer_code, live_data_changes, show_page_step.product_ids, show_page_step.bumps. Attach products and order bumps in a follow-up PATCH /api/v2/pages/:id.
SDK onboarding: The response includes an sdk block with a token (prefixed cfp_). To register the page:
- Add <meta name="cf-page-token" content="<token>"> to your page's <head>.
- Include the ClickFunnels SDK script tag on the page.
The Create an External Page Skill is the end-to-end guide for the page itself. To sell products from that page, see Add Checkout to an External Page.
Request
- Base URLhttps://myworkspace.myclickfunnels.com/api/v2
- Auth
- HTTP bearer
- or OAuth 2Authorization codehttps://accounts.myclickfunnels.com/oauth/authorizeToken URLhttps://accounts.myclickfunnels.com/oauth/token
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
Request body
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,
"block_ai_crawler": false,
"block_ai_search": false,
"block_ai_assistant": false,
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-01-01T00:00:00.000Z",
"type": "funnel_page",
"custom_html_page": false,
"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"
}Changes
- info
for the
pathrequest parameterworkspace_id, the type was generalized fromintegertostring - info
removed the non-success response with the status
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
///to the response with the status - info
added the optional property
///to the response with the status
- info