Source: https://datafa.st/docs/api/account/funnels/update
Markdown source: https://datafa.st/docs/api/account/funnels/update.md
Description: Update a funnel name, steps, or active state.

# Update funnel

`PUT https://datafa.st/api/v1/admin/websites/{websiteId}/funnels/{funnelId}`

Update a funnel name, steps, or active state.

## Request

### Authentication

- `dft_` account token with `funnels:write`.


### Path parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `websiteId` | string | Website ObjectId used by account tokens to choose which website to query or manage. Website ObjectId. The caller token must have access to this website. |
| `funnelId` | string | Funnel ObjectId. |

### Body parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | No | Human-readable name for the resource or event. The exact meaning depends on the endpoint. |
| `steps` | object[] | No | Replacement step list. Same shape as create funnel. |
| `isActive` | boolean | No | Set false to hide/soft-delete the funnel, true to reactivate. |

## Response

Returns a JSON object with `status` and endpoint-specific fields.

### Response fields

| Field | Type | Description |
| --- | --- | --- |
| `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[].steps[].id` | string | Step ID. |
| `data[].steps[].name` | string | Human-readable name for the resource or event. The exact meaning depends on the endpoint. |
| `data[].steps[].type` | string | `pageview` or `goal`. |
| `data[].steps[].url` | string | Page URL/path for pageview steps. |
| `data[].steps[].goalName` | string | Goal name for goal steps. |
| `data[].isActive` | boolean | Whether the funnel is active. |

### Errors

Common errors include `400` for invalid input, `401` for missing or invalid tokens, `403` for missing permissions or website access, `404` for missing resources, and `500` for server errors.

## Code examples

### Example request

```bash
curl -X PUT "https://datafa.st/api/v1/admin/websites/{websiteId}/funnels/{funnelId}" \
  -H "Authorization: Bearer dft_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"Updated funnel","isActive":true}'
```

### Success response

```json
{
  "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"
  }]
}
```
