How to Do a Mail Merge with Attachments in Outlook or Gmail
October 19, 2026 · 5 min read
Every month the same job comes around: forty client statements, sixty donor receipts, a stack of certificates. Each one needs to go to a different person, with a personal note and their own file attached.
Word's mail merge looks like the answer, and it gets you most of the way. Then you find the catch: it can't attach anything. This guide explains why, what your options are, and how to set up a merge with attachments so it goes right the first time.
Why Word and Outlook can't do it
Word's Mailings → Finish & Merge → Send Email Messages sends a personalized email to every row of your Excel list through Outlook. It fills in names, amounts and dates nicely. But it only sends the message body: there's no setting for attachments at all, let alone a different one per person.
Outlook on its own doesn't have a mail merge, and Gmail doesn't either. So you need something extra.
Your options
1. A free Word add-in. The best known is a free add-in by Doug Robbins, shared on Microsoft's community forums for years (people search for it by his name). It adds attachments to Word's mail merge. It's worth a look if you're comfortable installing Word add-ins and your IT policies allow it.
2. Power Automate. If your organization has Microsoft 365 with Power Automate, you can build a flow that reads an Excel table and sends an email with a file from OneDrive or SharePoint for each row. It's powerful, but it takes some setting up, and your files usually need to be in OneDrive or SharePoint.
3. Gmail add-ons. For Gmail and Google Workspace there are mail merge add-ons that work from a Google Sheet. Most of them are subscriptions, and per-person attachments are usually a paid feature.
4. A dedicated tool. Programs built for this job read your Excel list, find each person's file, and send through your own Outlook or Gmail. That's what our Mail Merge does (more below).
Whichever you choose, the setup below is the same, and it's what keeps a merge from going wrong.
Step 1: Set up the list
One row per person, with a header row. You need:
- An email column. One address per cell is easiest. If someone needs it at two addresses, most tools accept them separated by a semicolon.
- The columns your message uses: first name, company, amount, due date, account number.
- Something that identifies each person's file, like an account number or invoice number. This is the key to step 2.
Format the cells in Excel the way they should read in the email. If the balance column shows $1,240.00 in Excel, that's how it should appear in the message.
A Send column (Yes or No) is handy too. It lets you leave someone out this month without deleting their row.
Step 2: Name the files so they match the list
This is the step that matters most. Each file's name should contain something from that person's row, so the right file can be found without anyone matching them up by hand:
| Account | File |
|---|---|
| ACC-1001 | ACC-1001 October statement.pdf |
| ACC-1002 | ACC-1002 October statement.pdf |
Put all the files for one batch in one folder. Many accounting and donor programs can export statements or receipts as separate PDFs; check whether yours can include the account or donor number in the file name, because it saves a lot of renaming.
If your files can't be named that way, add an Attachment column to the list with each person's exact file name instead.
Step 3: Write the message
Keep it short and personal. Say what's attached and what you want them to do:
Hi Jordan, Your October statement for Smith Plumbing is attached. The balance due is $1,240.00, payable by November 15. You can pay online at our website or reply with any questions.
Put the person's name or company in the subject as well ("Smith Plumbing: your October statement"). It gets opened more, and it's less likely to look like spam.
Step 4: Check before you send
A mail merge sends a lot of email very quickly, so mistakes multiply. Before sending, check:
- Every address looks valid. One typo (
jordan.example.com) and that person gets nothing. - Every person has their file, and only their file. A missing statement should stop that email, not send it without one.
- No blank fields. "Hi ," looks careless. Use a fallback like "Hi there" where names might be missing.
- Attachments aren't too big. Most providers refuse emails over about 20 to 25 MB.
Then send a test to yourself with real data from a few rows, and open the attachments.
Step 5: Send, and keep a record
- Mind the daily limits. Email providers cap how many emails an account can send a day, and personal Gmail accounts have lower caps than business accounts. Large batches may need to go over two days.
- Leave a pause between emails. A second or two between sends looks less like spam to your provider than hundreds at once.
- Keep a record of who was sent what. If the run stops partway, through a lost connection or a daily limit, you need to know where to pick up without sending anyone a duplicate.
- Use it for people you work with. Statements, receipts and certificates are fine. For marketing to a mailing list, use a newsletter service with unsubscribe links instead.
The ready-made option for Windows
Mail Merge does all of the above from a simple menu on a Windows PC. It reads your Excel or CSV list, finds each person's file by a pattern like {{Account}}*.pdf or a column of file names, and sends through your own classic Outlook (or saves everything to Drafts first) or Gmail.
Before anything goes out, it checks every email and shows them all in your browser. Bad addresses, missing files and oversized attachments are held back and explained. Every email is recorded as it's sent, so if a run stops, running it again only sends the ones that didn't go out.
It runs on the PowerShell built into Windows 10 and 11, with nothing else to install, and it's a one-time purchase with no subscription.
See an example, or ask us whether it fits what you send.