Skip to main content
Every campaign needs a defined set of recipients. When you create a campaign, you choose a resolution mode that determines how Serval builds the recipient list.

Resolution Modes

Users & Groups

Pick individual users and/or existing Serval user groups. All members of the selected groups receive the campaign message.
  • You can combine individual users and groups in the same campaign. Serval deduplicates recipients who appear in more than one group or are also selected individually.
  • Recipients are resolved at the time you run the campaign, so any group membership changes between creation and execution are reflected.
  • Template variables like {{Recipient.FirstName}}, {{Recipient.LastName}}, and {{Recipient.Email}} are populated from each user’s Serval profile.

CSV Upload

Upload a CSV file to define a custom recipient list. Use this when your audience doesn’t map to existing users and groups, or when you need to include custom data fields in your message.

Required columns

ColumnDescription
emailRecipient’s email address (must match a Serval user)

Optional columns

ColumnDescription
timezoneRecipient’s IANA timezone (e.g., America/New_York). Required for local-time scheduling.
Any other columnBecomes a custom template variable in the message editor

How it works

  1. Upload your CSV file in the recipients step of the campaign wizard.
  2. Serval validates the file and displays a preview with any row-level errors (missing emails, invalid timezones, unrecognized formats).
  3. Fix any errors and re-upload, or proceed if validation passes.
  4. Recipients are stored when you save the campaign. They don’t change if you update the CSV file externally.

Custom template variables

All columns become template variables with a CSV. prefix. For example, a CSV with columns email, timezone, department, and office_location makes {{CSV.department}} and {{CSV.office_location}} available for personalization in the message editor.
Custom variable names are derived from your CSV column headers exactly as written. Use clear, descriptive headers like department or start_date so they’re easy to identify in the message editor.

Example CSV

email,timezone,department,manager_name
alice@company.com,America/New_York,Engineering,Jordan Lee
bob@company.com,America/Los_Angeles,Design,Sam Park
carol@company.com,Europe/London,Engineering,Jordan Lee
This CSV makes the following template variables available: {{CSV.department}} and {{CSV.manager_name}}, in addition to the standard variables ({{Recipient.FirstName}}, {{Recipient.LastName}}, {{Recipient.FullName}}, {{Recipient.Email}}).