# CLI reference

Install: `npm install -g funnelkeeper` (or `npx funnelkeeper …`). The binary is `fk`.
Credentials live in `~/.config/funnelkeeper/config.json` (created `0600` by `fk login`).

## fk signup

create a funnelkeeper account (sends a verification email).

```
fk signup
```

```
fk signup
```

## fk login

sign in and store an api key in ~/.config/funnelkeeper (0600).

```
fk login [flags]
```

| Flag | Type | Required | Description |
|---|---|---|---|
| `--key` | boolean | no | paste an existing api key instead of using a password |
| `--api-url` | string | no | api base url (default `https://funnelkeeper.fly.dev`) |

```
fk login
```
```
fk login --key
```
```
fk login --api-url http://localhost:3100
```

## fk logout

delete the stored api key.

```
fk logout
```

```
fk logout
```

## fk account

show the signed-in account.

```
fk account
```

```
fk account
```

## fk product create

create a product in your account.

```
fk product create [flags]
```

| Flag | Type | Required | Description |
|---|---|---|---|
| `--name` | string | yes | display name |
| `--slug` | string | yes | url-safe id (lowercase, hyphens) |
| `--currency` | string | no | iso currency code (default `USD`) |
| `--domain` | string | no | product domain |

```
fk product create --name "Demo" --slug demo --currency AUD
```

## fk connect

connect ga4 | gtm | google-ads (browser auth) or semrush (api key).

```
fk connect <source> [flags]
```

| Flag | Type | Required | Description |
|---|---|---|---|
| `--product` | string | yes | product slug |

```
fk connect ga4 --product demo
```
```
fk connect semrush --product demo
```

## fk connect test

verify a connected source can actually deliver data.

```
fk connect test <source> [flags]
```

| Flag | Type | Required | Description |
|---|---|---|---|
| `--product` | string | yes | product slug |

```
fk connect test ga4 --product demo
```

## fk status

pipeline health: jobs, sources, queue backlog.

```
fk status
```

```
fk status
```

## fk portfolio

one row per product: spend, revenue, cac, ltv:cac.

```
fk portfolio
```

```
fk portfolio
```

## fk queue list

pending keeper cards.

```
fk queue list
```

```
fk queue list
```

## fk queue approve

approve a card (asks for typed confirmation — this can move money).

```
fk queue approve <id>
```

```
fk queue approve 3f1c…
```

## fk queue reject

dismiss a card.

```
fk queue reject <id>
```

```
fk queue reject 3f1c…
```

## fk queue snooze

snooze a card.

```
fk queue snooze <id> [flags]
```

| Flag | Type | Required | Description |
|---|---|---|---|
| `--hours` | number | no | snooze duration (default `24`) |

```
fk queue snooze 3f1c… --hours 48
```

