All articles
3 min readBy InOneShot Team

HR Mail Merge: Contracts, Meeting Invitations and Badges Without Losing a Week

HR teams produce the same documents in batches all year long. Here's how to turn an HRIS export into hundreds of personalized PDFs, with no copy-pasting and without sending employee data to the cloud.

In an HR department, document production never really stops. Contract amendments in January, annual review invitations in the spring, badges for new joiners all year round, various certificates on request. Every time, the same pattern: one identical layout for everyone, and a handful of details that change from one person to the next.

That is the textbook definition of a mail merge. Yet in many companies these documents are still produced one at a time, by copy-pasting from an HRIS export. Here is how to break out of that loop.

Three document families, one single mechanism

The most time-consuming HR documents are structurally identical: a fixed template, signed off by legal or management, and variable fields pulled from a list of employees.

  • Contracts and amendments: name, job title, effective date, salary, probation period.
  • Meeting invitations: employee name, date and time, room, manager's name.
  • Badges and access cards: name, department, photo or QR code pointing to the internal directory.

Once you see what they have in common, it becomes obvious that a single tool can cover all three. The template changes; the method does not.

The real cost of doing it by hand

Count two to three minutes per document on a good day: open the template, retype five or six values, proofread, export to PDF, rename the file so it can actually be filed. Across a campaign of 150 invitations, that adds up to nearly a full working day spent entirely on retyping.

Wasted time is not the only issue. There is also the risk of error: an interview date shifted by one row, an amount belonging to the previous employee, a misspelled name on a contract. On documents with contractual weight, those mistakes cost far more than the minutes saved.

Employee data should not leave the company

This is what sets HR mail merge apart from every other use case. A payroll file, or a list of employees with their compensation and home addresses, is sensitive personal data under GDPR. Uploading it to an online service to generate PDFs creates a data transfer that must be documented, justified, and possibly explained to a data protection officer.

A tool that works locally removes the question entirely: the spreadsheet and the resulting PDFs never leave the workstation. There is no processor to add to your records, no third-party server to audit, no payroll file left sitting on a platform.

Setting up a campaign, in practice

The principle comes down to three steps. First, export a spreadsheet from your HRIS with one row per employee and one column per variable field. Then open your approved PDF template and place the fields by drag and drop, linking each position to the matching column. Finally, run the generation: you get one PDF per row, named automatically, plus a ZIP archive ready to distribute.

The real payoff shows up on the second campaign. The template can be saved and reused, so next year's invitation run only needs a fresh HRIS export and one click. The setup work is paid for once.

A few checks before you hit generate

  • Clean up your spreadsheet headers: one column per field, explicit names, no merged title row on top.
  • Check your date formats before exporting — this is by far the most common source of errors.
  • Always generate a test batch of three or four rows and proofread it before launching the other 150.
  • Have legal review the template once and for all: it is the one thing that gets duplicated identically.

With those habits in place, producing a hundred contracts or a hundred badges takes the same time as producing one. That is time handed back to the HR team to do what a spreadsheet will never do for them.

Ready to automate your PDFs?

Try InOneShot for free and generate your documents in one click.

Discover InOneShot