Promvel
Privacy-first processing

Mail Merge PDF ZIP batches from one template

Use JSON, CSV, or TXT mapping input to generate named PDF files and download as ZIP.

Template variables and naming keys must match exactly. To rename fields in the template, update the document in Edit first, then return to Mail Merge.

Workflow

  1. 1Select PDF template
  2. 2Choose naming mode and input format
  3. 3Select mapping rows
  4. 4Generate output

Template preview

  • branch_nameWestlake Branch
  • periodQ2-2026
  • ack_required☑ checkbox
  • delivery_channel◉ email ○ sms ○ print

Mapping fields

Field name Type Required
branch_name text Yes
period text Yes
ack_required boolean No
delivery_channel radio No
Example input - csv
branch_name,period,ack_required,delivery_channel
Westlake Branch,Q2-2026,true,email
Northgate Branch,Q2-2026,false,print
Sheet: Sheet1 (first worksheet is used)
branch_name | period | ack_required | delivery_channel
Westlake Branch | Q2-2026 | true | email
Northgate Branch | Q2-2026 | false | print
branch_name,period,ack_required,delivery_channel
Westlake Branch,Q2-2026,true,email
Northgate Branch,Q2-2026,false,print
[
  {
    "branch_name": "Westlake Branch",
    "period": "Q2-2026",
    "ack_required": true,
    "delivery_channel": "email"
  },
  {
    "branch_name": "Northgate Branch",
    "period": "Q2-2026",
    "ack_required": false,
    "delivery_channel": "print"
  }
]

How matching works

  • Each mapping key or CSV header must match a template field or naming key.
  • Missing required keys return a validation error before generation.
  • Unknown keys are ignored unless strict validation is enabled.
  • TXT input must keep strict key=value lines with one key per line.

Need to change template fields?

/mail-merge-pdf only runs generation. To rename or add fields, update the template in /edit-pdf and run generation again with matching keys.

Filename output rules

Output ZIP naming must be deterministic for reliable downstream delivery.

  • Use output_file when file-based naming mode is selected.
  • Indexed mode ignores output_file and generates stable sequence names.
  • Normalize spaces and unsafe characters before file creation.

Common errors

  • missing_required_field: branch_name
  • invalid_json
  • missing_column: output_file
  • invalid_txt_line: line 2