Fill a PDF Form is the Power Automate action that accepts a fillable PDF template and a JSON payload, then hands back that same PDF with every field already populated. Pair it with PDF - Sign and a SharePoint When an item is created trigger, and invoice generation runs on its own: someone adds a row, Power Automate assembles the signed PDF, and Dropbox files it away under a timestamped name.
The bottleneck in invoice-style workflows was never the PDF itself, it is the manual step wedged in the middle. Someone opens the template, re-keys eight values from a spreadsheet row, prints it, signs it, scans it back, and uploads the result. Each of those fields is one more chance to misspell a customer name or lose a digit off the total. This guide swaps that whole routine for seven Power Automate actions: SharePoint raises the trigger, Dropbox hands over the template plus the signature image, PDF4me populates the form and applies the signature, and Dropbox saves the finished file. Every screenshot is real, the Compose expression is spelled out, the SharePoint schema is listed, and the sample signed invoice is yours to download.
A SharePoint list trigger fires on each new invoice row. Dropbox provides the fillable PDF template and a PNG signature. Compose turns the row into a JSON payload. PDF4me Fill a PDF Form writes that data into the template, PDF4me PDF - Sign adds the signature, and Dropbox stores the result under a filename that carries both a timestamp and the invoice number.
Why each step is here, on purpose
What you will end up with
A single Power Automate flow that keeps an eye on a SharePoint list and, for every row that arrives, turns out a filled and signed PDF invoice named Signed_INV-YYYY-NNN_<ticks>.pdf in your Dropbox output folder. The signature sits in the bottom-right corner of page 1, and everything else in the template stays exactly as your designer laid it out.
What you will need first
- A SharePoint site holding a list named
New Customer Invoices(rename it to whatever suits you) with these columns:Title,CustomerName,Email,Phone(all Single line of text)InvoiceNumber(Single line of text, e.g.INV-2026-207)InvoiceDate(Date),Address(Single line of text),Amount(Number)
- A PDF template whose named form fields line up with the JSON keys (
customerName,email,phone,invoiceNumber,invoiceDate,address,amount). - A PNG signature on a transparent background.
- A PDF4me connection inside Power Automate. First flow? Grab an API key to set it up.
- A Dropbox connection in Power Automate — SharePoint, OneDrive, or any other store slots in just as cleanly.
The seven actions, end to end
Seven Power Automate actions in a straight line — no parallel branches, no Apply to each, no variables. What one step outputs feeds straight into the next.

The SharePoint list is the contract here. Each row that arrives turns into exactly one signed PDF.

How do you start the flow when a new SharePoint row appears?
Flow so far: trigger only.
- Create a new Automated cloud flow, search SharePoint, and choose When an item is created.
- Point Site Address at your SharePoint site (the screenshot uses
PDF4me Supportathttps://ynoox1.sharepoint.com/sites/PDF4meSupport). - Set List Name to
New Customer Invoices. - Leave Advanced parameters as they are. The trigger goes off the instant a row lands, with no polling interval to fiddle with.

Tip. Where you can, rename the SharePoint columns to match the PDF field names (
customerName,
How do you feed the PDF template and signature into the flow?
Flow so far: trigger → Get file content → Get file content 1.
Two Dropbox reads: one for the PDF template, one for the signature PNG. Keeping both in the same folder means nobody has to go looking for them later.
- Add Dropbox - Get file content using path and set File to
/blog data/fill a pdf/sample_fill_form.pdf. - Open Advanced parameters and switch Infer Content Type to Yes, otherwise the PDF binary can get garbled in transit.

- Drop in a second Dropbox - Get file content using path; Power Automate automatically renames it
Get file content 1. - Set File to
/blog data/fill a pdf/signature.png. - Flip the same Infer Content Type toggle to Yes.

How do you turn the SharePoint row into a JSON payload?
Flow so far: trigger → Get template → Get signature → Compose.
Compose is the "build the JSON" step. It pulls in the trigger fields as dynamic content and lays them into a single JSON object that PDF4me Fill a PDF Form can read.
- Add a Compose action.
- Click Inputs, paste the JSON skeleton below, and swap each right-hand value for the matching SharePoint column from the dynamic-content picker, keeping every pill between the quotes:
{
"customerName": "CustomerName",
"email": "Email",
"phone": "Phone",
"invoiceNumber": "InvoiceNumber",
"invoiceDate": "InvoiceDate",
"address": "Address",
"amount": "Amount"
}

Payload reference:
| JSON key | Source (SharePoint column) | Type | Notes |
|---|---|---|---|
customerName | CustomerName | Text | Passed straight through. |
email | Email | Text | Any string; nothing validates the format here. |
phone | Phone | Text | Leave it as text — don't cast to Number, since extensions and hyphens matter. |
invoiceNumber | InvoiceNumber | Text | Reused later in the output filename too. |
invoiceDate | InvoiceDate | Date | With the pill inside quotes, Compose sends it as text rather than an ISO Date object. |
address | Address | Text | A single line. |
amount | Amount | Number | Inside quotes, so the JSON carries it as a quoted value. |
Tip. Always land the dynamic-content pill between the two quotes of each value. Placed outside them, a pill emits a bare number or date, and an unquoted number followed by a
,mid-string will break the payload with no warning.
How do you populate the PDF form from the JSON?
Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form.
Here is the first PDF4me action. It takes the template PDF plus the JSON payload and writes each value into the form field that shares its name.
- Add the PDF4me PDF connector and pick the Fill a PDF Form action.
- Template File Data: dynamic content, Get file content → File Content (the template PDF binary).
- Template File Name:
sample_fill_form.pdf(or whatever yours is named). - JSON Data: dynamic content, the Outputs of the Compose step.
- Keep PDF template Editable: No — this flattens the form once filled, so the recipient can't wipe the fields.

Tip. Want the recipient to still edit certain fields later (adding a memo, say)? Set Keep PDF template Editable to Yes. Your filled values remain; only the field lock changes.
How do you stamp on the signature with PDF - Sign?
Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form → PDF - Sign.
PDF - Sign lays your signature PNG over the filled PDF at a fixed spot and whatever opacity you set.
- Add the PDF4me PDF connector, action PDF - Sign.
- PDF File content: dynamic content, Fill a PDF Form → Body (the filled PDF binary).
- PDF File Name: the expression
concat(triggerBody()?['InvoiceNumber'], '.pdf'), which yieldsINV-2026-207.pdfso the invoice number shows up in later logs. - Sign File Content: dynamic content, Get file content 1 → Body (the signature PNG).
- Sign Image File Name:
signature.png. - Align Horizontal: right. Align Vertical: bottom.
- Pages:
1(just page 1 — use1,3for pages 1 and 3, or leave it empty to sign every page). - Height:
20. Width:50. Margin Horizontal:15. Margin Vertical:15. Opacity:100.

Positioning reference:
| Field | What it controls | Example |
|---|---|---|
| Align Horizontal | Which edge, left to right | left, center, right |
| Align Vertical | Top, middle, or bottom band | top, center, bottom |
| Pages | Which pages get stamped | 1 (first only), 1,3 (first and third), empty (every page) |
| Height / Width | Size of the signature box in PDF units | Match your signature.png ratio or it will stretch |
| Margin Horizontal / Vertical | Distance from the aligned edge | 15 = 15 units in from the right edge when Align is right |
| Opacity | 0 to 100 | 100 is fully opaque; drop to 70 for a watermark look |
How do you write the signed PDF back to Dropbox?
Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form → PDF - Sign → Create file.
The final step. The finished PDF drops into a dedicated output folder under a filename engineered so two runs can never clash.
- Add Dropbox - Create file.
- Folder Path:
/blog data/fill a pdf/output. - File Name: the expression
concat('Signed_', string(triggerBody()?['InvoiceNumber']), '_', string(ticks(utcNow())), '.pdf'), which produces names such asSigned_INV-2026-207_639235162128009339.pdf. - File Content: dynamic content, PDF - Sign → Body (the signed PDF binary).

Tip. Trade Dropbox for SharePoint - Create file or OneDrive - Create file and nothing else in the flow moves. The PDF binary is identical; only the storage adapter differs.
Run it and check the result
Signed_INV-2026-207_639235162128009339.pdf appears in Dropbox /blog data/fill a pdf/output. Open it and you'll see the eight fields filled and the signature in the bottom-right of page 1 — the very file linked at the top of this post.Variations you can bolt on without a rebuild
Common questions
How to fill PDF forms using Power Automate?
Drop the PDF4me Fill a PDF Form action after a step that reads your PDF template (a Dropbox, SharePoint, or OneDrive Get file content) and a Compose step that builds a JSON payload from your trigger fields. Map Template File Data to the PDF binary and JSON Data to the Compose output. The JSON keys have to match the template's form field names exactly.
Can Power Automate fill out a PDF form?
Yes — with one connector action, once a PDF connector is installed. Power Automate can't write into a fillable PDF on its own, but the PDF4me Fill a PDF Form action handles the whole fill-and-flatten in a single step, driven by a JSON payload you assemble with Compose or straight from a SharePoint or Excel row.
How to auto fill PDF form fields?
Trigger on your data source (a SharePoint list, an Excel row, a form submission), build a JSON object whose keys match the PDF field names, then hand that JSON and the template PDF to PDF4me Fill a PDF Form. It returns the same PDF with every named field filled. Set Keep PDF template Editable to No to lock the values so recipients can't clear them.
How to create a PDF using Power Automate from a SharePoint list item?
Use When an item is created as your trigger, add a Get file content step to load the PDF template, a Compose step to shape the row into JSON, and PDF4me Fill a PDF Form to merge them. You get a filled PDF you can email, push to SharePoint, OneDrive, or Dropbox, or send into an approval flow. This post builds exactly that, with a signature stamp on top.
How to auto sign PDF in Power Automate?
Add PDF4me PDF - Sign after any step that yields a PDF binary. Map PDF File content to the filled PDF, Sign File Content to a PNG signature, then set alignment (right / bottom), size (Height / Width), margins, and opacity. PDF - Sign stamps the image onto whichever pages you list; leave Pages blank to sign them all.
Troubleshooting
Next steps
This is the shortest hands-free route from a SharePoint row to a signed, stored PDF — and the two PDF4me actions in the middle are the only parts you can't get from Microsoft on their own.
References
- SharePoint When an item is created trigger reference on Microsoft Learn
- Power Automate Compose action and expression functions on Microsoft Learn
- PDF form field naming guide on Adobe Acrobat Help
- Dropbox Create file connector on Microsoft Learn
