How to Upload Bulk Recipients
How to add recipient lists for bulk postcard campaigns, including CSV upload, required columns, and review tips.

If you are sending handwritten postcards to a customer list, event segment, or partner batch, the fastest workflow is usually a CSV upload. Handwrite also supports manual entry for smaller runs, so you can choose the path that matches the size of the campaign.
Two ways to add recipients
In the Recipients step of the order flow, you can add people in two ways.
1. Manual entry
Manual entry is best for small batches or when you want to review every card one by one. Click Add Recipient and fill in:
- Name β required for the handwritten address
- Address Line 1 β required
- Address Line 2 β optional
- City β required
- Postal Code β required
- Country β required
- First Name / Last Name / Email / Gender β optional, but useful for personalization and review
2. CSV upload
CSV upload is the better option once you are working with a real list.
- Open the
Recipientsstep. - Click
Download template. - Fill the file in Excel, Google Sheets, or another spreadsheet tool.
- Click
Upload CSV file. - After import, Handwrite switches to
Table Viewso you can scan and correct rows before checkout.
Each row becomes one postcard.
Required CSV columns
These column names are accepted directly by the import flow:
| Column | Required? | Notes |
|---|---|---|
name | Yes | Full recipient name for the address |
address line 1 | Yes | Street and house number |
city | Yes | City or town |
postalcode | Yes | ZIP / postal code |
country | Yes | Must be one of our supported recipient countries |
Optional CSV columns
| Column | Required? | Notes |
|---|---|---|
firstname | No | Useful for {firstName} in the message |
lastname | No | Useful for {lastName} and formal greetings |
email | No | For your own reference and review |
gender | No | Helps us generate the right German {greeting} |
address line 2 | No | Apartment, suite, c/o, floor, etc. |
Personalization note
If your message uses placeholders such as {firstName}, {lastName}, or {greeting}, make sure the matching columns are present in the CSV. The upload itself succeeds without them, but the message cannot personalize fields that were never provided.
Supported countries
Recipient delivery is currently supported for:
- Germany
- Austria
- Switzerland
- United Kingdom
- Netherlands
- Belgium
- Luxembourg
- France
- Italy
- Spain
- Ireland
- Poland
- Czech Republic
- Slovakia
- Slovenia
- Hungary
Transit times are measured after production is complete. Germany is usually fastest; most other supported destinations are typically 2-5 business days, with Switzerland and the UK sometimes taking longer.
Best practices
- Verify addresses β Invalid addresses cause delivery failures
- Keep one row per recipient β Do not stack multiple names in one cell
- Use standard postal formatting β Especially for postal codes and country names
- Populate
firstnameandlastnamewhen you want message personalization - Use
genderif you rely on{greeting}in German - Remove duplicates β Avoid sending multiple cards to the same person
Before you submit
- Review the recipient count shown in the order summary
- Confirm that import errors are resolved in
Table View - Preview a sample card to see how names and greetings render
- Check whether your quantity has crossed a discount threshold
Volume discounts reminder
Larger orders unlock automatic per-card savings:
- 100+ cards: ~9% off (β¬2.69 net / β¬3.20 incl. VAT)
- 200+ cards: ~16% off (β¬2.49 net / β¬2.96 incl. VAT)
- 500+ cards: ~22% off (β¬2.29 net / β¬2.73 incl. VAT)
See the pricing guide for the full breakdown.
Need help?
If a larger list needs cleanup before import, contact our support team. We can help you sanity-check the format before you place the order.