Bulk Recipient Uploads for Handwritten Mail: CSV Format and Best Practices
Learn how to upload bulk recipient lists for handwritten mail, including CSV format, required columns, and campaign prep best practices.

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.
CSV uploads are especially useful for event follow-up, customer thank-you batches, renewal outreach, and holiday campaigns where the recipient list already lives in your CRM or spreadsheet.
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
Self-serve recipient delivery is currently supported for:
- Germany
EU or international recipient lists are handled by manual quote so we can confirm VAT, shipping, and timing before production.
Transit times are measured after production is complete. Germany self-serve transit is usually 1-2 business days.
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
Common list types that work well
- Recent customers — post-purchase thank-you campaigns and first-order follow-up.
- Renewal or retention lists — account-based outreach for SaaS and service businesses.
- Event and conference leads — highly relevant after in-person meetings.
- Holiday and seasonal segments — year-end client appreciation and partner outreach.
Volume discounts reminder
Larger orders unlock automatic per-card savings:
- 100+ cards: ~4% off (€4.75 net / €5.65 incl. VAT)
- 200+ cards: ~9% off (€4.50 net / €5.36 incl. VAT)
- 500+ cards: ~14% off (€4.25 net / €5.06 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.