How to mail merge in Google Docs (2026 guide)
Mail merge has been a Microsoft Word + Outlook ritual for 30 years. If you're already in the Google ecosystem, doing the same workflow there is faster, cheaper, and easier to share with teammates. Here's the modern guide.
What is mail merge?
Mail merge takes a template (a document with placeholders like {{Name}}) and a data source (a list of values per recipient), and produces one personalized document per row. Common use cases:
- Invoices (one per client)
- Course certificates (one per student)
- Contract addendums (one per employee)
- Personalized letters (one per customer)
Why Google Docs instead of Word?
- Already where your team works — no app switching
- Templates are shareable with view/comment access
- No installation — runs in the browser
- Modern syntax — Liquid-style logic, not
{ MERGEFIELD } - Free — no Microsoft 365 subscription needed
Step 1: Install Sheet to PDF
Google Docs doesn't have a built-in mail merge feature (still, in 2026). You need an add-on. Sheet to PDF is free, installs in 10 seconds, and gives you 10 PDFs/month without a credit card. Install walkthrough.
Step 2: Build your template
Create a new Google Doc. Write your content with {{PlaceholderName}} wherever you want a value from your spreadsheet to appear:
Dear {{ClientName}},
This is your invoice #{{InvoiceNumber}} for {{Amount}} {{Currency}}, due {{DueDate}}.
Thank you,
Your team
Style it however you want — Sheet to PDF preserves all formatting (fonts, colors, images, tables, headers/footers).
Step 3: Prepare your sheet
Open a Google Sheet. Row 1 = headers matching your placeholders. Each row below = one document.
| ClientName | InvoiceNumber | Amount | Currency | DueDate | | Acme | 1001 | 1250 | EUR | 2026-06-30 | | Globex | 1002 | 890 | EUR | 2026-06-30 |
Headers are case-sensitive — {{ClientName}} won't match a header named client_name.
Step 4: Generate
In your Sheet: Extensions → Sheet to PDF → Open sidebar. Pick your template, click Generate. You get one PDF per row in seconds.
Free plan: PDFs download to your computer. Paid plans: PDFs save to a Drive folder you choose, with a "PDF link" column auto-added to your sheet.
Advanced: conditional logic
What if some rows need a discount line and others don't? Use a smart template (Starter+):
Subtotal: {{Subtotal}}
{% if Discount > 0 %}Discount: -{{Discount}}{% endif %}
Total: {{Total}}
If Discount = 0, the line disappears. One template handles all variations. See the smart templates guide.
Advanced: bulk email
Want each PDF emailed to the recipient automatically? Add an Email column to your sheet. In the sidebar (Pro plan and up), toggle "Email each PDF" and pick the column. Each PDF gets sent to the matching email address as an attachment. Setup guide.
How much does this cost?
- Free: 10 PDFs/month (50 with bonuses)
- Starter €5/mo: 300 PDFs + smart templates + Drive auto-save
- Pro €15/mo: 3,000 + bulk email + team members
- Pro+ €60/mo: 15,000 + hosted share links + loops/math
- Premium €180/mo: 60,000 + priority support
Frequently asked
Can I use this with Excel instead of Google Sheets?
Not directly — Sheet to PDF reads from Google Sheets. You can paste your Excel data into a Google Sheet first, or use Google Sheets' Excel import feature.
Does it work offline?
No. Google's add-ons require a connection to Google services.
What's the difference between Sheet to PDF and Autocrat?
See our Sheet to PDF vs Autocrat comparison.
Can it handle 10,000 rows?
Yes, on the Pro+ plan or higher. The Apps Script time limit means each click processes up to 100 rows — for larger batches you click multiple times. We're working on background queuing for Premium.