> For the complete documentation index, see [llms.txt](https://docs.slatecx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.slatecx.com/concepts/campaigns.md).

# Campaigns

A campaign is a tenant-scoped container that decides what the agent knows, how it behaves, and which cards it can push.

## What a campaign holds

| Part           | Stored as                    | Purpose                                           |
| -------------- | ---------------------------- | ------------------------------------------------- |
| Metadata       | `campaign`                   | Name and description                              |
| Knowledge      | `campaign_source`            | Which sources the agent may retrieve from         |
| Pushable cards | `campaign_card`              | Derived from the active cards of included sources |
| Agent settings | `campaign_chatbot_settings`  | Provider, model, response length, nudges, voice   |
| Goals          | `campaign_chatbot_goal`      | Outcomes worth recording                          |
| Questions      | `campaign_chatbot_question`  | Information to collect                            |
| Skills         | `campaign_agent_skill`       | Ordered instruction assignments                   |
| Prompt pills   | `campaign_prompt_suggestion` | Reusable prompt text                              |
| Entry points   | `campaign_entry_point`       | Published ways in                                 |

Campaign rows do not store LLM configuration. That lives in `campaign_chatbot_settings`.

## Status

| Status     | Meaning                                                           |
| ---------- | ----------------------------------------------------------------- |
| `ACTIVE`   | Unarchived and ready to use                                       |
| `ARCHIVED` | No longer active, read-only                                       |
| `DRAFT`    | A rolling-compatibility state; new unarchived writes use `ACTIVE` |

## Naming

Campaign names are unique per tenant, case-insensitively.

## Sources and derived cards

Selecting a source for a campaign does two things: it makes the source retrievable by the agent, and it derives the campaign's pushable cards from that source's active cards.

Source selection is preview-then-commit:

```
POST /tenants/:tenantId/campaigns/:campaignId/sources/preview
PUT  /tenants/:tenantId/campaigns/:campaignId/sources
```

Campaigns always use the latest source material at runtime. There is no movement or promotion step when a source changes.

Campaign membership is independent of cards — a selected source with no cards still counts as campaign knowledge.

## Cloning

`POST /tenants/:tenantId/campaigns/:campaignId/clone` copies the campaign, including its chatbot settings and skill configuration.

## Archiving and deleting

Archive and unarchive are reversible:

```
POST /tenants/:tenantId/campaigns/:campaignId/archive
POST /tenants/:tenantId/campaigns/:campaignId/unarchive
```

Deleting is preview-first and requires an exact-phrase confirmation, because it cascades.

## Relationship to Slates

Each Slate belongs to one campaign. The campaign is what the Slate's agent knows.

```
Campaign
  ├── sources        -> what the agent retrieves
  ├── cards          -> what the agent can push
  ├── entry points   -> how prospects arrive
  └── slates         -> one per prospect arrival
```

## See also

* [Sources and cards](/concepts/sources-and-cards.md)
* [Entry points](/concepts/entry-points.md)
* [First campaign](/getting-started/first-campaign.md)
