Documents · Tool

Template Merging Tool

Combine CSV data with a template to generate personalised output files — text, documents and emails, entirely in your browser.

Data (CSV)

4 rows

One record per line, columns separated by commas. Optionally add a header row like name,mobile,email.

Template

3 placeholders

Wrap column names in double braces, e.g. {{name}} — each row becomes one output file.

Generated Output Files

No files yetFill in your data and template, then click Generate Files.

What mail merge solves?

If you've ever needed to send the "same" email to 50 people with each one's name, company, or order number swapped in, you've hit the problem mail merge solves. Instead of copy-pasting and manually editing each message (slow, and one typo away from embarrassing), you write one template with placeholders, upload a CSV of your data, and get back a personalized version for every row.

How to structure your template

Use double curly braces for placeholders that match your CSV column headers exactly, for example:
Hi {{first_name}},
Thanks for your order #{{order_id}} — it shipped on {{ship_date}}.
If your CSV has columns `first_name`, `order_id`, and `ship_date`, the tool will substitute each row's values automatically.

Best practices for your CSV

Keep headers simple — lowercase, no spaces (use `first_name` not `First Name`) to avoid mismatches.
Check for blank cells — a blank value will just leave the placeholder empty, so review a few rows before running the full merge.
Watch for encoding issues — if names with accents or special characters look garbled, re-save your CSV as UTF-8 from Excel or Google Sheets.

Common use cases

Personalized outreach or follow-up emails
Event invitations with individual RSVP links
Customer order or shipping updates
Simple certificate or letter generation when combined with a document tool

FAQ

Does this send the emails for me?
No — it generates the personalized text/documents; you copy or export them into your own email client or mail tool. This keeps your data private and avoids sending limits or spam-filter issues tied to third-party senders.
What if a placeholder doesn't match any column?
It will be left as literal text (e.g., `{{typo_field}}`) so you can spot mismatches immediately rather than getting silently blank output.