> ## Documentation Index
> Fetch the complete documentation index at: https://docs.serval.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Campaign

> Walk through the campaign wizard to build, target, schedule, and send a campaign

The campaign wizard guides you through creating a campaign in five steps: basics, recipients, schedule, message (including optional response workflow), and review. You can save your progress at any step and return later. The wizard preserves your draft in the browser session.

<Info>
  You need the Builder role or higher to create campaigns. Your team must also have the Campaigns capability enabled and a delivery channel configured — a [Slack](/sections/integrations/slack) DM, a [Microsoft Teams](/sections/integrations/microsoft-teams) DM, or [email](/sections/documentation/helpdesk/email).
</Info>

***

## Creating a New Campaign

<Steps>
  <Step title="Open the wizard">
    Navigate to **Campaigns** in the sidebar and click **New Campaign**. The wizard opens on the Basics step.
  </Step>

  <Step title="Set the basics">
    Enter a **Name** and optional **Description** for your campaign.
  </Step>

  <Step title="Choose your recipients and delivery channel">
    Select how you want to target recipients:

    * **Users & Groups** — Pick individual users and/or existing Serval user groups. All members of the selected groups receive the campaign message.
    * **CSV** — Upload a CSV file containing recipient email addresses. The CSV must include an `email` column. You can also include `timezone` and any custom columns that become template variables in your message.

    The wizard validates your selection and shows a preview of resolved recipients before you continue.

    <Note>
      For CSV uploads, the wizard checks for formatting issues and displays any row-level errors so you can fix them before proceeding. See [Recipients](/sections/documentation/campaigns/recipients) for detailed CSV formatting requirements.
    </Note>

    This step is also where you pick the **delivery channel** — how Serval sends your campaign:

    * **Slack DM** — Direct message via your connected [Slack integration](/sections/integrations/slack).
    * **Teams DM** — Direct message via your connected [Microsoft Teams integration](/sections/integrations/microsoft-teams).
    * **Email** — Sent via your team's [intake address](/sections/documentation/helpdesk/email).

    All three channels show up by default. The wizard pre-selects whichever channel is fully connected and flags any that aren't ready — for example, if Microsoft Teams is connected but the Serval bot isn't installed, or if no email intake address has been configured. Each campaign uses a single delivery channel.
  </Step>

  <Step title="Set the schedule">
    First choose how the campaign sends:

    * **One-time** — Send once. Pick immediate, a specific scheduled time, or local time per recipient.
    * **Recurring** — Send on a repeating schedule. Configure the frequency (e.g., every Monday, the 1st of each month) and delivery mode.
    * **Triggered** — Send on demand when a workflow fires it (e.g., on a webhook or a Serval event), rather than on a schedule.

    See [Scheduling](/sections/documentation/campaigns/scheduling) for all three modes, including [triggered](/sections/documentation/campaigns/scheduling#triggered) (workflow-fired) sends.
  </Step>

  <Step title="Write your message and attach a workflow">
    Compose your campaign message using the rich text editor. You can format text with bold, italic, lists, and links.

    Use **template variables** to personalize the message for each recipient. Standard variables include:

    | Variable                  | Description               |
    | ------------------------- | ------------------------- |
    | `{{Recipient.FirstName}}` | Recipient's first name    |
    | `{{Recipient.LastName}}`  | Recipient's last name     |
    | `{{Recipient.FullName}}`  | Recipient's full name     |
    | `{{Recipient.Email}}`     | Recipient's email address |

    If you uploaded a CSV with additional columns, those column headers are also available as template variables with a `CSV.` prefix. For example, a CSV column named `department` becomes `{{CSV.department}}` in the message editor.

    **Response workflow (optional):** To collect structured feedback, select a deployed workflow that uses [form confirmation](/sections/documentation/workflows/Configure/inputs#form-confirmation). When recipients receive your campaign message, they see a **Respond** button. Tapping it opens the workflow's form directly in the conversation.

    **Allow recipients to dismiss:** When a response workflow is attached, recipients also see a **Dismiss** button by default, letting them decline the form. Turn off **Allow recipients to dismiss** to remove that button — recipients then only see **Respond**. This prevents accidental dismissals (which can't be undone) and keeps your response analytics focused on real responses. The setting applies across every channel (Slack, Teams, and email).

    The form can include any [workflow input types](/sections/documentation/workflows/Configure/inputs): multiple choice, scales, short text, dates, checkboxes, and file uploads. The review step lets you preview the form as recipients will see it.

    Because each response is a real workflow run, you can wire branching and actions into the workflow itself. If you don't need to collect responses, leave this unset.
  </Step>

  <Step title="Review and save">
    The review step summarizes your campaign configuration: name, recipient count and resolution mode, schedule, message preview, and response workflow (if any).

    Review the details and click **Save** to create the campaign as a draft. It won't send until you explicitly run or activate it.
  </Step>
</Steps>

***

## Editing a Draft Campaign

You can edit any campaign that hasn't been run or activated yet. Open the campaign from the list and click **Edit**. The wizard reopens with your saved values so you can update any step.

<Note>
  Once a campaign has been run or activated, you can no longer edit its configuration. If you need to make changes, stop the campaign and duplicate it with the corrected settings.
</Note>
