# Funnel

URL: /business/nouns/funnel · Id: `noun:funnel`

> A Funnel is a designed path to an Offer: a landing Page, an opt-in that makes a Lead, a Sequence, then the Offer.

A Funnel is a designed path to an [Offer](/business/nouns/offer): a landing [Page](/business/nouns/page), an opt-in that makes a [Lead](/business/nouns/lead), a [Sequence](/business/nouns/sequence), then the Offer.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `steps` | `json` | Yes | The Pages, Forms, and Sequences in order. |

## Object
```json
{
  "$id": "https://api.sb/kilnbakery.com/funnels/funnel_1",
  "$type": "Funnel",
  "steps": {}
}
```

## Relationships
- <a id="rel-leads-to"></a>A Funnel **leads to** one [Offer](/business/nouns/offer): each Funnel’s path ends at one [Offer](/business/nouns/offer), after its landing [Page](/business/nouns/page), opt-in and [Sequence](/business/nouns/sequence). `leadsTo`, inverse [`funnels`](/business/nouns/offer#rel-funnels).
- <a id="rel-nurtures-with"></a>A Funnel **nurtures with** many [Sequences](/business/nouns/sequence): a Funnel follows up with each new [Lead](/business/nouns/lead) through [Sequences](/business/nouns/sequence) after the opt-in. `nurturesWith`, inverse [`nurtures`](/business/nouns/sequence#rel-nurtures).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="create"></a>[Funnel.create](/business/nouns/funnel/create) | Creates a Funnel. Inherited from [Noun](/business/nouns/noun). | None. | `Funnel.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Funnel.get](/business/nouns/funnel/get) | Returns one Funnel by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Funnel.list](/business/nouns/funnel/list) | Returns Funnels, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Funnel.update](/business/nouns/funnel/update) | Changes the given properties of a Funnel. Inherited from [Noun](/business/nouns/noun). | None. | `Funnel.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Funnel.delete](/business/nouns/funnel/delete) | Deletes a Funnel; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Funnel.deleted` | One-way: `send`, `do` |

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Funnel.create` | Yes | Yes | Yes | No |
| `Funnel.get` | Yes | Yes | Yes | Yes |
| `Funnel.list` | Yes | Yes | Yes | Yes |
| `Funnel.update` | Yes | Yes | Yes | No |
| `Funnel.delete` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Add a funnel to PetPantry.
```

**API**

```bash
curl -X POST https://api.sb/petpantry.shop/funnels \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"steps":{}}'
```

```json
{
  "api": "https://api.sb/petpantry.shop",
  "funnel": {
    "$id": "https://api.sb/petpantry.shop/funnels/funnel_1",
    "$type": "Funnel",
    "steps": {}
  },
  "action": {
    "$id": "https://api.sb/petpantry.shop/actions/action_1",
    "operation": "Funnel.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/petpantry.shop/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const funnel = await $.Funnel.create({ steps: {} })
```

**CLI**

```bash
npx startup-builder do Funnel.create --json '{"steps":{}}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Funnel.create({ steps: {} })"
  }
}
```

## Example
A directory of wedding photographers runs a Funnel. A landing [Page](/business/nouns/page) offers a free listing audit that captures a [Lead](/business/nouns/lead), four emails follow in a [Sequence](/business/nouns/sequence), and then comes the $15 Offer.