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
| Column | Description |
|---|
email | Recipient’s email address (must match a Serval user) |
Optional columns
| Column | Description |
|---|
timezone | Recipient’s IANA timezone (e.g., America/New_York). Required for local-time scheduling. |
| Any other column | Becomes a custom template variable in the message editor |
How it works
- Upload your CSV file in the recipients step of the campaign wizard.
- Serval validates the file and displays a preview with any row-level errors (missing emails, invalid timezones, unrecognized formats).
- Fix any errors and re-upload, or proceed if validation passes.
- 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}}).