Skip to content

Funnels

Funnels are the multi-step landing pages, order forms, upsells, and thank-you pages you build in your SMBcrm account to move a visitor toward a purchase or signup. Most of this API is read-oriented: list the funnels and pages that already exist so you can look up IDs, report on performance, or link out to them from your own systems. The exception is redirects, which you can create, update, and delete through the API.

Base URL: https://services.smbcrm.com · Version header: v3 · Scopes: funnels/funnel.readonly (list funnels), funnels/page.readonly (list pages), funnels/pagecount.readonly (count pages), funnels/redirect.readonly (list redirects), funnels/redirect.write (create, update, or delete a redirect). See Scopes.

GET/funnels/funnel/list

List the funnels in your SMBcrm account.

scope funnels/funnel.readonlyauth Location token or PIT

locationId is required. Filter with name, type, category, or parentId, and page through results with limit and offset.

Each funnel’s identifier comes back as _id. Pass it as funnelId to the page endpoints below. steps[].pages holds the IDs of the pages in each step, and url is the funnel’s path. count and traceId are always in the response.

Terminal window
curl "https://services.smbcrm.com/funnels/funnel/list?locationId=<location_id>&limit=20&offset=0" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"funnels": [
{
"_id": "<funnel_id>",
"name": "Webinar Signup",
"type": "funnel",
"url": "/webinar-signup",
"locationId": "<location_id>",
"deleted": false,
"dateAdded": "2026-07-01T12:00:00.000Z",
"dateUpdated": "2026-07-01T12:30:00.000Z",
"updatedAt": "2026-07-01T12:30:00.000Z",
"steps": [
{
"id": "<step_id>",
"name": "Registration",
"sequence": 1,
"type": "optin_funnel_page",
"url": "/register",
"pages": ["<page_id>"]
}
]
}
],
"count": 1,
"traceId": "<trace_id>"
}
GET/funnels/page

List the pages that belong to a funnel.

scope funnels/page.readonlyauth Location token or PIT

locationId, funnelId, limit, and offset are required. Filter to one page by name with the optional name parameter. See Pagination.

Terminal window
curl "https://services.smbcrm.com/funnels/page?locationId=<location_id>&funnelId=<funnel_id>&limit=20&offset=0" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
[
{
"_id": "<page_id>",
"locationId": "<location_id>",
"funnelId": "<funnel_id>",
"name": "Registration",
"stepId": "<step_id>",
"deleted": false,
"updatedAt": "2026-07-01T12:00:00.000Z"
},
{
"_id": "<page_id_2>",
"locationId": "<location_id>",
"funnelId": "<funnel_id>",
"name": "Thank You",
"stepId": "<step_id_2>",
"deleted": false,
"updatedAt": "2026-07-01T12:05:00.000Z"
}
]
GET/funnels/page/count

Get the total number of pages in a funnel, useful for paging through /funnels/page.

scope funnels/pagecount.readonlyauth Location token or PIT

locationId and funnelId are required. Narrow the count to a single page with the optional name parameter.

Terminal window
curl "https://services.smbcrm.com/funnels/page/count?locationId=<location_id>&funnelId=<funnel_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"count": 2
}

Redirects send visitors who hit an old domain-and-path combination to a funnel, a website page, or a URL instead. Use them when you retire a funnel step, change a path, or need a vanity URL to point somewhere else.

Invalid or incomplete input, such as a missing target or an action outside the allowed values, returns 422 Unprocessable Entity. When a create or update request fails this way, the response body has statusCode, message (an array with one entry per failed check), and error fields. See Errors.

GET/funnels/lookup/redirect/list

List the redirects configured in your SMBcrm account.

scope funnels/redirect.readonlyauth Location token or PIT

locationId, limit, and offset are required. Filter with the optional search parameter. See Pagination.

The redirects are in data.data, and data.count is the number of redirects.

Terminal window
curl "https://services.smbcrm.com/funnels/lookup/redirect/list?locationId=<location_id>&limit=20&offset=0" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"data": {
"count": 1,
"data": [
{
"id": "<redirect_id>",
"locationId": "<location_id>",
"domain": "example.com",
"path": "/old-webinar",
"pathLowercase": "/old-webinar",
"type": "Permanent",
"target": "https://example.com/webinar-signup",
"action": "url"
}
]
}
}
POST/funnels/lookup/redirect

Create a redirect.

scope funnels/redirect.writeauth Location token or PIT

locationId, domain, path, target, and action are required. action sets what the redirect points to and must be one of funnel, website, url, or all. The response includes a type field (for example Permanent or Temporary). You don’t send type in the request.

Terminal window
curl -X POST https://services.smbcrm.com/funnels/lookup/redirect \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"locationId": "<location_id>",
"domain": "example.com",
"path": "/old-webinar",
"target": "https://example.com/webinar-signup",
"action": "url"
}'
200 OK
{
"data": {
"id": "<redirect_id>",
"locationId": "<location_id>",
"domain": "example.com",
"path": "/old-webinar",
"pathLowercase": "/old-webinar",
"type": "Permanent",
"target": "https://example.com/webinar-signup",
"action": "url"
}
}
PATCH/funnels/lookup/redirect/{id}

Update an existing redirect's target.

scope funnels/redirect.writeauth Location token or PIT

locationId, target, and action are required. action must be one of funnel, website, url, or all. domain and path aren’t part of an update. Delete the redirect and create a new one to change either.

Terminal window
curl -X PATCH https://services.smbcrm.com/funnels/lookup/redirect/<redirect_id> \
-H "Authorization: Bearer <token>" \
-H "Version: v3" \
-H "Content-Type: application/json" \
-d '{
"locationId": "<location_id>",
"target": "https://example.com/new-webinar-signup",
"action": "url"
}'
200 OK
{
"data": {
"id": "<redirect_id>",
"locationId": "<location_id>",
"domain": "example.com",
"path": "/old-webinar",
"pathLowercase": "/old-webinar",
"type": "Permanent",
"target": "https://example.com/new-webinar-signup",
"action": "url"
}
}
DELETE/funnels/lookup/redirect/{id}

Delete a redirect.

scope funnels/redirect.writeauth Location token or PIT

locationId is required as a query parameter.

Terminal window
curl -X DELETE "https://services.smbcrm.com/funnels/lookup/redirect/<redirect_id>?locationId=<location_id>" \
-H "Authorization: Bearer <token>" \
-H "Version: v3"
200 OK
{
"data": {
"status": "ok"
}
}
  • Forms, another UI-built, read-oriented asset you can list and read the same way.
  • Surveys, multi-step surveys listed and read the same way as funnels.
  • Locations, where you look up the locationId every endpoint on this page requires.