Create a funnel and its steps
Create a funnel with 2 to 20 steps, in order. The funnel is active straight away. The name must be 1-200 characters and is refused, not shortened, when longer. A body that is not valid is refused with a 400 that names the field, and fields this endpoint does not know are refused with the code unknown_field. The reply is the funnel without its steps; read the funnel to get them.
https://app.softsolz.uk/api/v1/services/funnels/funnelsRecent Requests
Kept only in this browserHeaders
AuthorizationstringrequiredBearer token: Bearer sk_live_... (or sk_test_... for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
namestringrequiredFunnel name.
descriptionstring | nullWhat the funnel tracks.
stepsarray of objectsrequiredSteps in the order visitors go through them.
project_idstring | nullWebsite Builder project that holds the funnel pages.
Response
Response Body
idstringFunnel id.namestringFunnel name.descriptionstring | nullWhat the funnel tracks.project_idstring | nullWebsite Builder project that holds the funnel pages, when it has any.statusstringactive while it counts visitors, paused when it was switched off and still has steps, draft when it has no steps yet, archived when it was put away.goal_value_centsintegerValue of one conversion, in minor units of the currency. 0 when none is set.currencystringThree-letter currency code used for values.window_hoursintegerHow long a visitor stays in the same journey, in hours. A visitor who converts stays in that journey for the window and is not counted again.template_idstring | nullTemplate the funnel was started from, or null.archived_atstring | nullWhen the funnel was archived, or null.created_atstringWhen the funnel was created.updated_atstringWhen the funnel last changed.Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/funnels/funnels \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "name": "Free trial sign-up", "description": "From the pricing page to a started trial.", "steps": [ { "name": "Viewed pricing", "match_type": "path", "match_value": "/pricing" }, { "name": "Opened sign-up", "match_type": "starts_with", "match_value": "/signup" }, { "name": "Started trial", "trigger_type": "event", "trigger_value": "trial_started", "is_goal": true } ]}'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 201
{ "data": { "id": "12", "name": "Free trial sign-up", "description": "From the pricing page to a started trial.", "project_id": null, "status": "active", "goal_value_cents": 0, "currency": "GBP", "window_hours": 720, "template_id": null, "archived_at": null, "created_at": "2026-10-01T09:00:00.000Z", "updated_at": "2026-10-01T09:00:00.000Z" }}