"Best analytics tool I've used in 14 years"

Create funnel

POST https://datafa.st/api/v1/admin/websites/{websiteId}/funnels

Create a conversion funnel with 2 to 8 ordered steps. Each step matches either a pageview (by URL) or a custom goal (by name).

Duplicate funnel names return 409.

Request

Path parameters

websiteId
string
Website ObjectId. From List websites (_id field). Example: 665f0b3c4d2e1a0012345678.

Body parameters

name
string
required
Funnel display name. Example: "Signup funnel".
steps
object[]
required
Ordered array of 2–8 steps. Each step needs name, type, and either url (pageview) or goalName (goal).

Example request body

{
  "name": "Signup funnel",
  "steps": [
    { "name": "Landing", "type": "pageview", "url": "/" },
    { "name": "Pricing", "type": "pageview", "url": "/pricing" },
    { "name": "Signup", "type": "goal", "goalName": "signup" }
  ]
}

Response

Returns a JSON object with status: "success" and endpoint-specific fields in data.

Response fields

data[]._id
string
Funnel ObjectId.
data[].websiteId
string
Website ObjectId used by account tokens to choose which website to query or manage.
data[].name
string
Human-readable name for the resource or event. The exact meaning depends on the endpoint.
data[].slug
string
Generated slug.
data[].steps
object[]
Ordered funnel steps.
data[].isActive
boolean
Whether the funnel is active.

Authentication

Use a dft_ account token with funnels:write.
A df_ website API key for the same website can also call this route when the path websiteId matches the key's website. Write access with a df_ key is capped at member level — owner-only actions such as team management require a dft_ token and owner role.

Errors

400 — Invalid steps (wrong count, missing url or goalName, invalid goal name format).

409 — Funnel with this name already exists.

See API errors for the standard error envelope, auth failures, validation errors, permission errors, and rate limits.

✍️ Something missing? Suggest features.

🤖 AI agent or LLM? Read this page as markdown

Example request
curl -X POST "https://datafa.st/api/v1/admin/websites/{websiteId}/funnels" \
  -H "Authorization: Bearer dft_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"Signup funnel","steps":[{"name":"Landing","type":"pageview","url":"/"},{"name":"Signup","type":"goal","goalName":"signup"}]}'
Success response
{
  "status": "success",
  "data": [{
    "_id": "665f0b3c4d2e1a0012345678",
    "websiteId": "665f0b3c4d2e1a0012345678",
    "name": "Signup funnel",
    "slug": "signup-funnel",
    "steps": [
      { "id": "landing", "name": "Landing", "type": "pageview", "url": "/" },
      { "id": "signup", "name": "Signup", "type": "goal", "goalName": "signup" }
    ],
    "isActive": true,
    "createdAt": "2026-05-21T00:00:00.000Z"
  }]
}