CDPGuidesSupport

Funnels

Create, manage, and run funnel configurations through the REST API.

Create, manage, and run session-based Funnel configurations. Results include visitor counts, conversion rates, drop-off rates, and session IDs for the selected date window.

GET/rest/v1/funnels

GET
/rest/v1/funnels
AuthorizationBearer <token>

Ours Privacy API key

In: header

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/rest/v1/funnels"
{  "entities": [    {      "funnelId": "cc36c810-1122-4842-933f-6c41b39cda1a",      "name": "string",      "description": "string",      "steps": [        {          "stepId": "string",          "name": "string",          "eventName": "string",          "order": 0,          "filters": {},          "logic": {            "AND": [              {}            ],            "OR": [              {}            ],            "NOT": {},            "condition": {              "property": "string",              "operator": "Is",              "value": "string"            }          }        }      ],      "funnelType": "SESSION_BASED",      "utmFilters": {},      "globalLogic": {        "AND": [          {}        ],        "OR": [          {}        ],        "NOT": {},        "condition": {          "property": "string",          "operator": "Is",          "value": "string"        }      },      "conversionWindow": {        "value": 1,        "unit": "MINUTES"      },      "countingMethod": "UNIQUES",      "stepOrder": "EXACT",      "watched": true,      "status": "READY",      "reportDateRange": {        "from": "string",        "to": "string"      },      "createdAt": "string",      "updatedAt": "string"    }  ]}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

POST/rest/v1/funnels

POST
/rest/v1/funnels
*object
array<object>
AuthorizationBearer <token>

Ours Privacy API key

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/rest/v1/funnels" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "steps": [      {        "name": "string",        "eventName": "string",        "order": 0      },      {        "name": "string",        "eventName": "string",        "order": 0      }    ]  }'
{  "funnelId": "cc36c810-1122-4842-933f-6c41b39cda1a",  "name": "string",  "description": "string",  "steps": [    {      "stepId": "string",      "name": "string",      "eventName": "string",      "order": 0,      "filters": {},      "logic": {        "AND": [          {}        ],        "OR": [          {}        ],        "NOT": {},        "condition": {          "property": "string",          "operator": "Is",          "value": "string"        }      }    }  ],  "funnelType": "SESSION_BASED",  "utmFilters": {},  "globalLogic": {    "AND": [      {}    ],    "OR": [      {}    ],    "NOT": {},    "condition": {      "property": "string",      "operator": "Is",      "value": "string"    }  },  "conversionWindow": {    "value": 1,    "unit": "MINUTES"  },  "countingMethod": "UNIQUES",  "stepOrder": "EXACT",  "watched": true,  "status": "READY",  "reportDateRange": {    "from": "string",    "to": "string"  },  "createdAt": "string",  "updatedAt": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

GET/rest/v1/funnels/{id}

GET
/rest/v1/funnels/{id}
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/rest/v1/funnels/string"
{  "funnelId": "cc36c810-1122-4842-933f-6c41b39cda1a",  "name": "string",  "description": "string",  "steps": [    {      "stepId": "string",      "name": "string",      "eventName": "string",      "order": 0,      "filters": {},      "logic": {        "AND": [          {}        ],        "OR": [          {}        ],        "NOT": {},        "condition": {          "property": "string",          "operator": "Is",          "value": "string"        }      }    }  ],  "funnelType": "SESSION_BASED",  "utmFilters": {},  "globalLogic": {    "AND": [      {}    ],    "OR": [      {}    ],    "NOT": {},    "condition": {      "property": "string",      "operator": "Is",      "value": "string"    }  },  "conversionWindow": {    "value": 1,    "unit": "MINUTES"  },  "countingMethod": "UNIQUES",  "stepOrder": "EXACT",  "watched": true,  "status": "READY",  "reportDateRange": {    "from": "string",    "to": "string"  },  "createdAt": "string",  "updatedAt": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

PATCH/rest/v1/funnels/{id}

PATCH
/rest/v1/funnels/{id}
*object
array<object>
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/rest/v1/funnels/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "funnelId": "cc36c810-1122-4842-933f-6c41b39cda1a",  "name": "string",  "description": "string",  "steps": [    {      "stepId": "string",      "name": "string",      "eventName": "string",      "order": 0,      "filters": {},      "logic": {        "AND": [          {}        ],        "OR": [          {}        ],        "NOT": {},        "condition": {          "property": "string",          "operator": "Is",          "value": "string"        }      }    }  ],  "funnelType": "SESSION_BASED",  "utmFilters": {},  "globalLogic": {    "AND": [      {}    ],    "OR": [      {}    ],    "NOT": {},    "condition": {      "property": "string",      "operator": "Is",      "value": "string"    }  },  "conversionWindow": {    "value": 1,    "unit": "MINUTES"  },  "countingMethod": "UNIQUES",  "stepOrder": "EXACT",  "watched": true,  "status": "READY",  "reportDateRange": {    "from": "string",    "to": "string"  },  "createdAt": "string",  "updatedAt": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

DELETE/rest/v1/funnels/{id}

DELETE
/rest/v1/funnels/{id}
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/rest/v1/funnels/string"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "deleted": true}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

GET/rest/v1/funnels/{id}/results

GET
/rest/v1/funnels/{id}/results
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

Query Parameters

from*string

Inclusive lower bound of the analysis window, as a UTC calendar day in YYYY-MM-DD format. The window may span at most 31 days including both endpoints.

Match^\d{4}-\d{2}-\d{2}$
to*string

Inclusive upper bound of the analysis window, as a UTC calendar day in YYYY-MM-DD format. Must be on or after from, and the window may span at most 31 days including both endpoints.

Match^\d{4}-\d{2}-\d{2}$
deviceType?string

Restrict the funnel to sessions on a device class. MOBILE matches phone sessions; DESKTOP matches every session that is not a phone, tablet, TV, console, wearable, XR, or embedded device. ALL (the default) applies no device filter.

Default"ALL"

Value in

  • "DESKTOP"
  • "MOBILE"
  • "ALL"
attributionType?string

Accepted for backward compatibility but NOT applied. Funnel sessions carry a single attribution set, so there is no initial vs. last-touch distinction to select between.

Value in

  • "INITIAL"
  • "LAST_TOUCH"
utmSource?string

Restrict the funnel to sessions whose utm_source exactly matches this value.

Length1 <= length <= 512
utmMedium?string

Restrict the funnel to sessions whose utm_medium exactly matches this value.

Length1 <= length <= 512
utmCampaign?string

Restrict the funnel to sessions whose utm_campaign exactly matches this value.

Length1 <= length <= 512
utmContent?string

Restrict the funnel to sessions whose utm_content exactly matches this value.

Length1 <= length <= 512
utmTerm?string

Restrict the funnel to sessions whose utm_term exactly matches this value.

Length1 <= length <= 512
utmName?string

Accepted for backward compatibility but NOT applied — there is no campaign-name dimension on funnel sessions. Use utmCampaign instead.

Length1 <= length <= 512

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/rest/v1/funnels/string/results?from=2026-06-01&to=2026-06-30"
{  "steps": [    {      "stepNumber": 0,      "visitorCount": 0,      "conversionCount": 0,      "conversionRate": 0,      "dropOffRate": 0,      "overallConversionRate": 0,      "avgTimeToNextStep": 0,      "sessionIds": [        "string"      ],      "dropOffSessionIds": [        "string"      ]    }  ],  "totalVisitors": 0,  "overallConversionRate": 0,  "overallAvgTimeToConversion": 0,  "warning": "Ignored 1 unusable step condition."}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}
{  "error": "string",  "details": "string"}

How is this guide?