gg
Home › Business & Trades › Document Mail Merge
Business & Trades

Document Mail Merge

Paste a template with {{field}} placeholders and a data table whose first row names the fields, and get one finished document per row — letters, notices, invoices, statements. Conditional sections ({{#if field}} … {{else}} … {{/if}}) let one template cover several situations, and {{#each field}} repeats a block over a list inside a single cell, for exhibit and schedule lists. A placeholder with no value never becomes a blank: it becomes a loud [NEEDS YOU: field] marker, is named in that document's footer and is counted in the summary, so nothing goes out with a silently missing name. It works on plain text and Markdown, not .docx or .pdf — paste the finished text into Word or your PDF writer. Everything runs on your device; no client data leaves the machine.

Try it now

Worked example

MAIL MERGE — 2 documents from 2 data rows. Complete: 1 Needing you: 1 Fields used by the template: firm_name, today, client_name, matter, file_no, opposing, exhibits, signer Fields still needing you: file_no (1) Nothing was invented, defaulted or guessed. Every gap below is marked [NEEDS YOU: field]. ============================================================ DOCUMENT 1 of 2 — data row 1 — client_name: Ada Lovelace ============================================================ Hollerith LLP 12 March 2026 Dear Ada Lovelace, Re: Boundary dispute — our file 2026-114 We have now heard from Babbage & Co, Solicitors and will reply within seven days. We enclose the following exhibits: 1. Survey plan 2. Deed of 1998 3. Photographs Yours faithfully, R. Hollerith ------------------------------------------------------------ complete — every placeholder was filled. ============================================================ DOCUMENT 2 of 2 — data row 2 — client_name: Grace Hopper ============================================================ Hollerith LLP 12 March 2026 Dear Grace Hopper, Re: Employment claim — our file [NEEDS YOU: file_no] No opposing party has yet entered an appearance. We enclose the following exhibits: 1. Contract of employment 2. Grievance letter Yours faithfully, R. Hollerith ------------------------------------------------------------ NEEDS YOU (1): file_no

Learn the method

Inputs

Frequently asked

Can it read my Word or PDF template?

No, and it says so rather than pretending. .docx and .pdf are container formats that need a parser and a writer this offline tool does not have. Paste the text of your template instead — the merge, which is the part that costs the hours, is identical, and you paste the finished document back into Word or a PDF writer.

What happens when a row is missing a value?

The placeholder becomes a visible [NEEDS YOU: field] marker, that field is named in the document's own footer, and it is counted in the summary at the top. Nothing is ever defaulted, blanked or inferred from another column — a letter reading 'Dear ,' is far more dangerous than one reading 'Dear [NEEDS YOU: client_name]'.

What if I misspell a placeholder?

It is preserved exactly as {{name}} in the document and reported at the top as not being a column in your data. A placeholder that silently disappeared would leave a document that looks finished and is wrong.

How do I put a literal {{ in the template?

Double it: {{{{ renders as {{ and }}}} renders as }}. So {{{{name}}}} comes out as the literal text {{name}} instead of being filled in.

Does a false {{#if}} section leave a blank line?

No. A line containing nothing but a block tag is removed whole, including its line break, so a section that does not apply leaves no trace. A stray blank line in a legal letter is noticed.

Related Business & Trades tools