Skip to main content

Generate PDF from Word Template in Make

What this guide covers

This guide walks you through building a Make scenario that generates a PDF document from a Word template and a JSON data file using PDF4me Generate Document. The four-module flow downloads your .docx template and data file from Dropbox, merges them together, and uploads the finished PDF back to cloud storage — fully automated, no code required. The same pattern works for invoices, certificates, contracts, reports, and any other document you currently fill in manually.

Before You Start

A Word template with merge tags
Your .docx file with <<fieldName>> placeholders where dynamic content should appear. Download the sample template to see the expected format before building your own.
A JSON data file matching the template fields
A .json file with key-value pairs where each key matches a <<fieldName>> tag in your template. Download the sample data to verify the structure before using your own payload.
A PDF4me API key and a Make account
You need a PDF4me API key to authenticate the Generate Document module in Make. Get one free from the PDF4me dashboard — the same key works across all PDF4me modules in all your scenarios.

The Scenario at a Glance

The complete Make scenario for Word template document generation looks like this:

Make scenario named Generate_invoice showing four connected modules: Dropbox 1 Download a File with a schedule trigger clock icon, Dropbox 2 Download a File, PDF4me 3 Generate Document, and Dropbox 4 Upload a File

The complete flow: Download templateDownload dataPDF4me Generate DocumentUpload output PDF

Four modules, in order:

StepModulePurpose
1Dropbox – Download a FileFetches the .docx Word template file
2Dropbox – Download a FileFetches the .json data file
3PDF4me – Generate DocumentMerges data into template, outputs PDF
4Dropbox – Upload a FileSaves the finished PDF to your output folder

Step 1 – Create Your Word Template

Use the PDF4me LINQ Reporting Engine tag syntax inside your Word document:

<<fieldName>>              → simple text substitution
<<foreach [item in items]>>
<<[item.name]>> → loop over array items
<</foreach>>
<<if [condition]>>
content → conditional section
<</if>>

Example — invoice template excerpt:

Invoice No: <<[invoiceNumber]>>
Date: <<[invoiceDate]:"MMMM dd, yyyy">>
Customer: <<[customerName]>>

<<foreach [line in lineItems]>>
<<[line.description]>> Qty: <<[line.qty]>> $<<[line.price]:"F2">>
<</foreach>>

Total: $<<[total]:"F2">>

Save the file as .docx and upload it to your Dropbox (or Google Drive / OneDrive) in a folder Make can access — for example /pdf4metest/GenerateDocumentFromWord/invoice_template.docx.

Matching JSON data:

{
"invoiceNumber": "INV-2026-00123",
"invoiceDate": "2026-05-10",
"customerName": "Acme Corporation",
"lineItems": [
{ "description": "PDF Automation Setup", "qty": 1, "price": 1200.00 },
{ "description": "API Integration", "qty": 3, "price": 450.00 }
],
"total": 2550.00
}

For the full template tag reference, see the Word Template Syntax guide.

Step 2 – Set Up the Two Download Steps in Make

Add two Dropbox – Download a File steps to your scenario before the PDF4me module.

Dropbox Download a File module showing Connection YnooxTestone, Way of selecting files set to Select a file, and File path set to pdf4metest / GenerateDocumentFromWord / invoice_template.docx

Step 1 (template): Connect to Dropbox and select the .docx template file. Step 2 (data): Do the same for the .json data file in its folder.

For each Dropbox download step:

  1. Click Connection → select or add your Dropbox connection.
  2. Set Way of selecting filesSelect a file.
  3. Browse to your file (e.g. /pdf4metest/GenerateDocumentFromWord/invoice_template.docx for step 1, and the .json path for step 2).
  4. Click OK to confirm the selection.

The Data output of each step is the binary file content you'll wire into the PDF4me module.

Step 3 – Configure PDF4me Generate Document

Add PDF4me – Generate Document after the two download steps.

PDF4me Generate Document module showing Connection TestUser01 Prod, Template File Type dropdown set to Word with hint Select Template file type, Output Type dropdown set to Pdf, File section with radio buttons Dropbox Download a File selected twice and Map option, Document DataType dropdown set to Json with hint Choose Document Data Type

Set Template File Type to Word and Output Type to Pdf. Wire the two Dropbox steps to the template and data file inputs under File.

Configuration:

FieldValueNotes
ConnectionYour PDF4me connectionClick Add → paste API key if first time
Template File TypeWordMatches your .docx template
Output TypePdfOr Word / Excel if needed
FileDropbox – Download a File (×2)First entry = template, second = data file
Document DataTypeJsonOr Xml if your data file is XML
Document Data Text(leave empty if using file)Alternatively paste JSON directly here
Meta Data Json(optional)For date formatting, checkboxes, HTML fields

The module outputs Doc Data (the finished PDF binary) and Name (the output filename) — both available to map in the next step.

Step 4 – Save the Output PDF

Add a Dropbox – Upload a File step as the final module.

Dropbox Upload a File module with destination folder and file name configuration

Map Doc Data from PDF4me as the file content and set the destination folder and filename.

Configuration:

  • Folder Path → your output folder, e.g. /pdf4metest/GeneratedInvoices/
  • File Name → map the Name output from PDF4me, or use a dynamic expression like Invoice_{{timestamp}}.pdf
  • File (or File Content) → map Doc Data from the PDF4me Generate Document step

Click Run once to test the full flow. Open the destination folder to confirm the PDF was generated and saved correctly.

Workflow Examples

Real-World Scenario VariationsCommon document types you can generate with this same four-step pattern.
Invoice generation on new order
  1. A webhook triggers when a new order is placed in Shopify or WooCommerce.
  2. The order payload (customer, line items, total) is assembled into JSON in a Make text module.
  3. Google Drive downloads the invoice Word template from the team drive.
  4. Generate Document merges the order JSON into the template and outputs a PDF.
  5. Gmail sends the invoice PDF to the customer and uploads a copy to a SharePoint "Invoices" library.
Training certificate on course completion
  1. A Typeform completion survey triggers the scenario with participant name, course, and date.
  2. Dropbox downloads the certificate Word template.
  3. Generate Document fills in the participant's name, course title, and completion date — Output Type Pdf.
  4. Gmail sends the certificate PDF to the participant.
  5. The certificate uploads to a SharePoint "Certifications" library for compliance records.
Weekly report with data from Google Sheets
  1. A scheduled scenario triggers every Monday and reads last week's KPIs from Google Sheets.
  2. A Make text module assembles the Sheets data into a JSON object matching the report template fields.
  3. Dropbox downloads the report Word template.
  4. Generate Document merges the JSON into the template — Output Type Word so the team can still edit the report before distribution.
  5. The generated Word document emails to the management team before the 9 AM standup.

Frequently Asked Questions

What merge tag syntax does the Word template use?+
PDF4me uses the LINQ Reporting Engine syntax. Wrap field names in double angle brackets: <<fieldName>> for simple substitution, <<foreach [item in items]>> ... <</foreach>> for repeating sections like invoice line items, and <<if [condition]>> ... <</if>> for conditional content. Apply .NET format strings for output formatting: <<[invoiceDate]:"MMMM dd, yyyy">> for dates, <<[total]:"F2">> for two decimal places. Download the sample template linked above to see working examples before building your own.
Can I use Google Drive or OneDrive instead of Dropbox?+
Yes — any cloud storage connector in Make works as the download source for both the template and data files. Replace the Dropbox steps with Google Drive – Download a File, OneDrive – Get file content, SharePoint – Get file content, or HTTP – Make a request steps. The PDF4me Generate Document module only requires the binary file content and filename — it does not care which connector provides them. The final upload step can similarly use any storage connector supported by Make.
Does the data have to be a file, or can I build the JSON inside Make?+
Both work. This guide downloads a pre-built JSON file for clarity, but you can also construct the JSON string inside Make. Use a Set Variable step, a Text Aggregator, or a Make native function to build a JSON string from prior module outputs — for example, from a webhook payload, a Google Sheets row, or an API response. Map the resulting string to the Document Data Text field in Generate Document instead of using Document Data File.
What output formats are supported?+
The Generate Document module supports three Output Type values: Pdf (most common, for final delivery and archiving), Word (returns a merged .docx for further editing before sending), and Excel (converts the merged content to a spreadsheet). The Template File Type must match the actual format of your template file — Word for .docx templates, html for HTML templates. You can combine any template type with any output type: an HTML template can still produce a PDF or Word output.
How do I handle dates, checkboxes, and HTML content in template fields?+
Use the Meta Data Json parameter in the Generate Document module. For date fields, set FieldType to 2 with a FieldFormat string matching your input date format (e.g. "yyyyMMdd"). For checkbox fields that should render as ticks or empty boxes, set FieldType to 0. For fields containing raw HTML that should be rendered as formatted content inside the document, set FieldType to 1. The full structure is: {"FieldsMetaData":[{"FieldName":"dueDate","FieldType":2,"FieldFormat":"yyyyMMdd"},{"FieldName":"approved","FieldType":0}]}.

Get Help