# geni crm campaigns (/cli/crm/campaigns)



Campaigns group people under one outbound purpose; sequence drafts are written into a campaign for its members. With no verb, `geni crm campaigns` lists them; the verb subcommands get one, create, update, delete, and manage members. Syncing a campaign to a sequencer (Instantly, Smartlead, CSV) happens in the dashboard, never from the CLI.

## list (default) [#list-default]

```sh
geni crm campaigns "fintech"
```

List the workspace's campaigns with member and sequence rollups, or a person's campaigns with `--person`.

| Arg / Flag      | Notes                                 |
| --------------- | ------------------------------------- |
| `[query]`       | Match campaign name or purpose.       |
| `--person <id>` | List this person's campaigns instead. |
| `--json`        | Machine-readable output.              |

## get [#get]

```sh
geni crm campaigns get cam_01HX --field purpose
```

Print one campaign with its rollups.

| Arg / Flag       | Notes                        |
| ---------------- | ---------------------------- |
| `<id>`           | Campaign id.                 |
| `--field <path>` | Print one dotted-path value. |

## create [#create]

```sh
geni crm campaigns create --json '{"name":"Q3 fintech CFOs","purpose":"Book intro calls about closing automation"}'
```

Create a campaign. `--json` is `{ name, purpose? }`. Names are unique per workspace; the purpose is the messaging angle every sequence drafted into the campaign should serve.

| Flag            | Notes                               |
| --------------- | ----------------------------------- |
| `--json <body>` | Required. JSON campaign definition. |

## update [#update]

```sh
geni crm campaigns update cam_01HX --json '{"name":"Q3 fintech CFOs","purpose":"Lead with the October deadline"}'
```

Rename a campaign or change its purpose. `--json` is `{ name, purpose? }`.

| Arg / Flag      | Notes                               |
| --------------- | ----------------------------------- |
| `<id>`          | Campaign id.                        |
| `--json <body>` | Required. JSON campaign definition. |

## delete [#delete]

```sh
geni crm campaigns delete cam_01HX
```

Delete a campaign. Its sequence drafts are removed with it.

| Arg    | Notes        |
| ------ | ------------ |
| `<id>` | Campaign id. |

## members [#members]

```sh
geni crm campaigns members cam_01HX "acme"
```

List the campaign's people with their draft state: step count, recipient, and where each draft has been exported.

| Arg / Flag | Notes                         |
| ---------- | ----------------------------- |
| `<id>`     | Campaign id.                  |
| `[query]`  | Match member name or company. |
| `--json`   | Machine-readable output.      |

## add [#add]

```sh
geni crm campaigns add cam_01HX per_01HX per_01HY
```

Add people to a campaign as members. Members can exist before any draft; sequences are drafted for them afterwards.

| Arg              | Notes              |
| ---------------- | ------------------ |
| `<campaignId>`   | Campaign id.       |
| `<personIds...>` | Person ids to add. |

## remove [#remove]

```sh
geni crm campaigns remove cam_01HX per_01HX
```

Remove members from a campaign along with their drafts in it. Leads already synced to a linked sequencer are deleted there too, so removal is how "stop emailing them" propagates.

| Arg              | Notes                 |
| ---------------- | --------------------- |
| `<campaignId>`   | Campaign id.          |
| `<personIds...>` | Person ids to remove. |
