CSV bulk import
Upload a recipient list from spreadsheet.
Updated August 5, 2026
For an order with more than a handful of recipients, type-by-type entry is slow. The Quick Send and Advanced Mode forms both let you upload a CSV (or XLSX) of recipients instead. This page covers exactly which columns are expected, the two supported formats, and what to do when validation rejects your file.
If you only need to send to one or two people, use the manual entry described in Placing an order instead.
Where to find it
In the Quick Send form, click Add Manually, then look for the Template and Upload CSV buttons in the Additional Manual Recipients header.

The same panel is available in Advanced Mode at the Recipients step.
The two supported formats
The drop zone helper line tells you both at once. The uploader auto-detects which format your file uses based on the header row.
| Format | Columns expected | When to use it |
|---|---|---|
| Recipient template | firstName, lastName, email, currency, message | A fresh list you are creating just for this order. |
| Gift Cards sheet | Name, Email, Code, Amount, Currency, Region | An export from another system that already lists gift card values per person. |
You only need the minimum required columns. Anything extra is either used (if it matches a known column) or ignored. The bare minimum is firstName and email for the recipient template, or Name and Email for the gift cards sheet.
Get the template
Click Template next to the Upload CSV button. A file named recipients-template.csv downloads. Open it in any spreadsheet tool. The contents are:
firstName,lastName,email,currency,message
John,Doe,john@example.com,CAD,Happy Birthday!
Jane,Smith,jane@example.com,USD,Congratulations!
The two example rows are placeholders. Replace them with your recipients and remove or keep the header row exactly as written.
Column reference: recipient template
| Column | Required | Notes |
|---|---|---|
firstName | Yes | Recipient's given name. Used in the gift email greeting. |
lastName | No | Optional. Falls back to blank if missing. |
email | Yes | Validated as an email address before import. |
currency | No | ISO 4217 code (e.g., USD, AED, CAD). Defaults to the order's selected currency if missing. |
message | No | A short personal note shown on the gift card email. If set, this overrides the order-level message for that recipient. |
Column reference: Gift Cards sheet
This format is for cases where another system already produced a list of gift cards with per-person values. The uploader maps it onto the recipient list and pulls the per-recipient amount from the Amount column.
| Column | Required | Notes |
|---|---|---|
Name | Yes | Full name. Split into first and last on import. |
Email | Yes | Validated as an email address. |
Code | No | An external reference for your records. Not surfaced to the recipient. |
Amount | No | Per-recipient amount in the currency below. If supplied, it overrides the order's tier selection for that recipient. Use this format when you need different amounts per person without typing them in by hand. |
Currency | No | ISO 4217 code. Falls back to the order currency. |
Region | No | Free-text region tag, used for reporting. Not surfaced to the recipient. |
Validation rules
The uploader runs every row through validation before adding anyone to the order:
- File size must be 5 MB or less.
- File type must be CSV, XLS, or XLSX.
- Email must parse as a valid address. Invalid emails are flagged in a preview screen with a "did you mean…?" suggestion when the typo is obvious.
- Currency must be a recognised ISO code. Unrecognised currencies fall back to the order's selected currency.
- Duplicates within the same upload are de-duplicated by email; duplicates against existing recipients in the form are rejected with a row-level error.
Rows that fail validation are listed in a preview modal. You can fix them in the spreadsheet and re-upload, or accept the partial import and skip the bad rows.
After upload
Once the file passes validation, every recipient in the file appears in the Additional Manual Recipients list, on top of any rows you typed manually. Each row is editable in place if you need to fix a typo or change a per-recipient amount.
The order total at the bottom of the page updates immediately. The same review and submit flow described in Placing an order applies from here.
What's next
- Placing an order covers the rest of the order flow once your recipients are loaded.
- Managing employees is the alternative to recipient CSVs: save your team to the directory once, then pick from From Employees instead of uploading a CSV every time.