Fill a PDF Form in n8n
What this node does
PDF4me: Fill a PDF Form takes a fillable PDF (AcroForm) and populates its fields with your data in one n8n step. Provide the template as Binary Data, Base64, or URL and field values as a JSON object (JSON String, Binary, or Base64) or as Field Name / Field Value rows. Returns a completed PDF, either flattened (default) or with editable fields preserved. Ideal for filling applications, contracts, intake forms, or any AcroForm template from CRM, webhook, or spreadsheet data.
Authenticating Your API Request
Every PDF4me node in n8n requires a valid Credential to connect with. Create or select one that holds your PDF4me API key so the workflow can authenticate form-fill requests securely.
Important Facts You Should Not Miss
firstname instead of First Name). Run Extract Form Data From PDF on the template first or inspect with Adobe Acrobat Prepare Form to get the exact list.{"firstname":"John","lastname":"Doe"}). An array with one object is unwrapped; multiple objects are rejected. To fill many PDFs in one run, wrap this node in a Loop Over Items.
Full node panel: PDF template via Binary Data + Input Form Data field rows
Parameters
Required in the n8n UI: Credential to connect with, PDF Input Data Type, Select Input Type, and (depending on Select Input Type) either Form Data Input Type with its matching content field, or at least one Form Fields row with Field Name and Field Value. Output File Name (default filled_form_output.pdf), Keep PDF Editable (off), and Binary Data Output Name (default data) are optional. Conditional template fields (PDF Binary Field, PDF Base64 Content, PDF URL) appear only when their input type is chosen.
| Parameter | Required | What it does | Example |
|---|---|---|---|
| PDF Input Data Type | Yes | How the PDF template enters the node. Binary Data reads from a previous node (default, most common). Base64 String accepts an encoded PDF. URL downloads the PDF from a public link. | Binary Data |
| PDF Binary Field | Conditional | Name of the binary property on the incoming n8n item that holds the PDF. Required when PDF Input Data Type is Binary Data. Defaults to data. | data |
| PDF Base64 Content | Conditional | Base64-encoded PDF content. Required when PDF Input Data Type is Base64 String. Data-URL prefixes (data:application/pdf;base64,) are stripped automatically. | JVBERi0xLjQK... |
| PDF URL | Conditional | Publicly reachable HTTPS URL to the PDF template. Required when PDF Input Data Type is URL. Must be a valid full URL format. | https://example.com/application-form.pdf |
| Select Input Type | Yes | How the field values are supplied. JSON sends a stringified JSON object via dataArray. Input Form Data adds one UI row per field with Field Name and Field Value. | JSON |
| Form Data Input Type | Conditional | How the JSON object is supplied. Required when Select Input Type is JSON. JSON String pastes the object directly (default). Binary Data reads a JSON file from a previous node. Base64 String accepts an encoded JSON object. | JSON String |
| Form Data (JSON) | Conditional | Raw JSON object whose keys are PDF field names and values are what to fill. Required when Form Data Input Type is JSON String. Must be a single object, not a list. | {"firstname":"John","lastname":"Doe","email":"[email protected]"} |
| Form Data Binary Field | Conditional | Name of the binary property on the incoming n8n item that holds the JSON data file. Required when Form Data Input Type is Binary Data. Defaults to data. | data |
| Form Data Base64 Content | Conditional | Base64-encoded UTF-8 JSON object. Required when Form Data Input Type is Base64 String. Decoded then stringified into dataArray. | eyJmaXJzdG5hbWUiOiJKb2huIn0= |
| Form Fields | Conditional | Collection of field rows. Required when Select Input Type is Input Form Data. Add at least one row via Add Form Field. The node errors if the list is empty. | [{Field Name: firstname, Field Value: John}] |
| Field Name (per row) | Conditional | Exact AcroForm field name to fill. Required for every row added to Form Fields. | firstname |
| Field Value (per row) | Conditional | Value to fill into the matching AcroForm field. Required for every row added to Form Fields. | John |
| Output File Name | No | Filename of the filled PDF returned by the node. Default is filled_form_output.pdf. Include the .pdf extension. | filled_form_output.pdf |
| Keep PDF Editable | No | Toggle to keep AcroForm fields editable on the filled PDF. Off (default) flattens the form into static text. On preserves field definitions so the recipient can re-edit. | Off |
| Binary Data Output Name | No | Name of the binary property the output item exposes. Default is data. Use a different name when a downstream node expects it. | data |
PDF Input Data Type Options
Pick how the PDF template enters the node. The follow-up fields change with this choice.

PDF Input Data Type: Binary Data, Base64 String, or URL
Binary DataDefault: PDF from previous nodePDF Binary Field to the binary field name (default data).Base64 StringPDF as a base64 stringPDF Base64 Content. Data-URL style prefixes (data:application/pdf;base64,) are stripped automatically.URLDownload from a public linkPDF URL. PDF4me fetches the template directly. The URL must be valid and reachable without authentication.Select Input Type Options
Pick how the field values are supplied. The follow-up fields change with this choice.

Select Input Type: JSON (for dataArray) or Input Form Data (UI rows)
JSONBest for many fields and dynamic datadataArray field. Keys are PDF field names, values are what to fill. Add a follow-up Form Data Input Type choice (JSON String, Binary Data, or Base64 String) to supply the object.Input Form DataBest for small fixed sets configured in the UIField Name (exact AcroForm name) and Field Value. The node errors if the list is empty.Form Data Input Type Options (when Select Input Type is JSON)

Form Data Input Type: JSON String, Binary Data, or Base64 String
JSON StringDefault: paste or map JSON inlineForm Data (JSON) or map it from a previous node expression. The most common pick for CRM-driven or webhook-driven workflows.Binary DataJSON file from a previous nodeForm Data Binary Field to the binary field name (default data). Use this when the JSON arrives as a downloaded file. The file must contain a single object.Base64 StringBase64-encoded JSON objectForm Data Base64 Content. The node decodes and stringifies it into dataArray.Form Data (JSON) example
When Form Data Input Type is JSON String, paste a single object whose keys are exact AcroForm field names.

JSON String input: one object, keys match AcroForm field names exactly
{
"firstname": "John",
"lastname": "Doe",
}
Output Fields
A successful run returns one n8n item carrying JSON metadata and the filled PDF.
| Field | Type | What it contains |
|---|---|---|
success | Boolean | True when the PDF was filled successfully. Use to route error-handling branches. |
message | String | Human-readable status confirming success or describing an error. |
fileName | String | Filename of the filled PDF, set from Output File Name (default filled_form_output.pdf). |
mimeType | String | MIME type of the filled file, application/pdf. |
fileSize | Number | Size of the filled PDF in bytes. |
inputMode | String | Which input mode was used: json or inputFormData. |
fieldCount | Number | How many form fields were sent in this request. |
Binary (data) | Binary | The filled PDF under Binary Data Output Name (default data). Pass into Write Binary File, Email, or any cloud-storage upload. |
Quick Setup
- Add PDF4me to your n8n workflow. Set Resource to Forms and Forms Operations to Fill a PDF Form.
- In Credential to connect with, select your PDF4me credential or click Create New Credential and paste your API key.
- Set PDF Input Data Type to Binary Data (default), Base64 String, or URL and fill the matching field (
PDF Binary Field,PDF Base64 Content, orPDF URL). - Set Select Input Type to JSON (then choose Form Data Input Type = JSON String / Binary Data / Base64 String and supply the object) or Input Form Data (click Add Form Field and add one row per field with Field Name and Field Value).
- Make sure every Field Name matches an AcroForm field name in the template exactly (case-sensitive). Use Extract Form Data From PDF first if you are unsure.
- Optionally change Output File Name from the default
filled_form_output.pdf. - Toggle Keep PDF Editable on only if the recipient should be able to re-edit the filled fields. Default off flattens the form.
- Leave Binary Data Output Name as
dataunless a downstream node needs a different property name. Execute the node and route the filled PDF into Write Binary File, Email, or cloud storage.
Typical Setups
Workflow ExamplesCommon n8n workflow patterns using Fill a PDF Form.
- A Google Drive Download node pulls the application form PDF template (Binary Data, property
data). - PDF4me Fill a PDF Form runs with PDF Input Data Type Binary Data, Select Input Type JSON, Form Data Input Type JSON String.
Form Data (JSON)is a single inline object. - A Write Binary File node saves the filled PDF to a network folder using
$json.fileName.
- A webhook receives a form-submission payload from a website.
- PDF4me Fill a PDF Form is configured with Select Input Type JSON, Form Data Input Type JSON String.
Form Data (JSON)is an n8n expression that maps the webhook payload directly into the AcroForm field shape ({{ { firstname: $json.first, lastname: $json.last } }). - A Gmail node emails the filled PDF back to the submitter as an attachment.
- An intake form has only three AcroForm fields:
firstname,lastname,email. - PDF4me Fill a PDF Form is set with Select Input Type Input Form Data. Three rows are added via Add Form Field with the exact field names and the values typed or expression-mapped.
- Keep PDF Editable is off so the filled form is flattened.
- The PDF is uploaded to a SharePoint document library.
- One node downloads the PDF template; another node downloads the JSON data file. A Merge node combines them onto one item.
- PDF4me Fill a PDF Form is configured with PDF Input Data Type Binary Data (
PDF Binary Fieldset to the PDF field name) and Select Input Type JSON, Form Data Input Type Binary Data (Form Data Binary Fieldset to the JSON field name). - The filled PDF is saved with the order ID as filename.
- A CRM update fires the workflow when a new customer is created.
- PDF4me Fill a PDF Form pre-fills the customer-known fields on an onboarding form (
name,email,account_id) using Select Input Type JSON. - Keep PDF Editable is turned on so the customer can complete the remaining optional fields.
- An Outlook node emails the pre-filled editable PDF with a deadline reminder.
Practical Tips
Cheat Sheet
| Field | Value |
|---|---|
| Resource | Forms |
| Operation | Fill a PDF Form |
| PDF Input Data Type | Binary Data |
| PDF Binary Field | data |
| Select Input Type | JSON |
| Form Data Input Type | JSON String |
| Form Data (JSON) | {"firstname":"John","lastname":"Doe","email":"[email protected]"} |
| Output File Name | filled_form_output.pdf |
| Keep PDF Editable | Off |
| Binary Data Output Name | data |
| Credentials | PDF4me API credential |
Frequently Asked Questions
Related Actions
Same Task on Other Platforms
POST /api/v2/FillPdfForm endpoint, for custom backend code or Postman testing.