Skip to main content

SharePoint List to Filled and Signed PDF in Power Automate !!

· 21 min read
SEO and Content Writer

Fill a PDF Form is a Power Automate action that takes a fillable PDF template plus a JSON payload and returns the same PDF with every field pre-populated. Add PDF - Sign and a SharePoint When an item is created trigger and the whole invoice-generation flow becomes hands-free: a colleague adds a row, Power Automate builds the signed PDF, and Dropbox stores it under a timestamped filename.

The painful part of invoice-style workflows is not the PDF, it is the manual step in the middle. Someone opens the template, retypes eight fields from a spreadsheet row, prints, signs, scans back, uploads. Every field is a chance to typo the customer name or drop a zero from the amount. This walkthrough replaces that ritual with seven Power Automate actions: SharePoint fires the trigger, Dropbox supplies the template plus the signature image, PDF4me fills the form and stamps the signature, Dropbox stores the finished file. Real screenshots, exact Compose expression, the SharePoint schema, and the sample signed invoice all downloadable.

The flow at a glance
1. When an item is created
SharePoint trigger on New Customer Invoices list. Fires the flow every time a row is added.
2. Get file content
Dropbox reads sample_fill_form.pdf from /blog data/fill a pdf/. Infer Content Type Yes to keep the binary intact.
3. Get file content 1
Dropbox reads signature.png from the same folder. Same Infer Content Type Yes toggle.
4. Compose
Builds one JSON payload from the SharePoint row: customerName, email, phone, invoiceNumber, invoiceDate, address, amount.
5. Fill a PDF Form
PDF4me action. Template File Data the PDF binary, JSON Data the Compose output, Keep PDF template Editable No.
6. PDF - Sign
PDF4me action. Stamps signature.png right-bottom on page 1, 50 wide by 20 high, margin 15, opacity 100.
7. Create file
Dropbox /blog data/fill a pdf/output. File Name concat(Signed_, invoiceNumber, _, ticks(utcNow()), .pdf).
Short version

SharePoint list trigger fires on every new invoice row. Dropbox supplies the fillable PDF template plus a PNG signature. Compose builds a JSON payload from the row. PDF4me Fill a PDF Form merges data into the template. PDF4me PDF - Sign stamps the signature. Dropbox saves the signed file with a timestamped, invoice-numbered filename.

Why every part of this flow is deliberate

Why SharePoint as the trigger?
Every sales, ops, and finance team already tracks customer or invoice rows in a SharePoint list. Using When an item is created means users keep working exactly how they work today, they just add a row.
Why Compose in the middle?
PDF4me expects one JSON payload. Compose lets you paste a JSON skeleton and drop trigger fields straight into it as dynamic content, without dragging JSON handling into every downstream action.
Why Fill a PDF Form and not Convert?
The template already has form fields with named placeholders. Fill a PDF Form populates those fields by name, keeping the design and layout intact. Convert would flatten and rebuild the file.
Why PDF - Sign in the same flow?
The alternative is a separate DocuSign / Adobe Sign step, which asks a human to click. A signature stamp is enough for internal, low-risk invoices and keeps the flow fully hands-free.

What you will get

One Power Automate flow that watches a SharePoint list, and for every new row produces a filled, signed PDF invoice named Signed_INV-YYYY-NNN_<ticks>.pdf in your Dropbox output folder. The signature stamp lands in the bottom-right corner of page 1. The rest of the template is preserved exactly as your designer built it.


What you need

  • SharePoint site with a list called New Customer Invoices (or renamed to match yours) carrying 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)
  • PDF template with named form fields matching the JSON keys (customerName, email, phone, invoiceNumber, invoiceDate, address, amount).
  • A PNG signature with a transparent background.
  • PDF4me connection in Power Automate. Get your API key if this is your first flow.
  • Dropbox connection in Power Automate (SharePoint / OneDrive / any other storage substitutes cleanly).
Sample signed PDF output
Download the exact signed invoice this flow produced for row INV-2026-207 (Mark Jagar).
↓ signed-invoice-sample.pdf

The flow at a glance

Seven Power Automate actions, sequential. No parallel branches, no Apply to each, no variables. Every step's output feeds directly into the next.

Power Automate flow overview showing seven sequential actions: SharePoint When an item is created, Dropbox Get file content, Dropbox Get file content 1, Compose, PDF4me Fill a PDF Form, PDF4me PDF - Sign, and Dropbox Create file, each with a green check mark and run duration
End-to-end designer view. Trigger to Create file, seven actions.

The SharePoint list itself is the contract. Every row that lands here becomes one signed PDF.

SharePoint list called New Customer Invoices with eight rows including Smith Form, Mark Form, Marcus Lee Form, Priya Nair Form, Sarah Brown Form, Jhon Form, Susan Form. The Mark Jagar row is selected showing detailed fields CustomerName Mark Jagar, Email markjagar at email.com, Phone plus1 567 736 8923, InvoiceNumber INV-2026-207, InvoiceDate 28.08.2026, Address Park street, Amount 20458
New Customer Invoices list. Row INV-2026-207 for Mark Jagar is the one that produced the sample output above.

How do you trigger the flow when a SharePoint row is added?

Flow so far: trigger only.

  1. Add a new Automated cloud flow. Search SharePoint and pick When an item is created.
  2. Set Site Address to your SharePoint site (in the screenshot: PDF4me Support at https://ynoox1.sharepoint.com/sites/PDF4meSupport).
  3. Set List Name to New Customer Invoices.
  4. Leave Advanced parameters at their defaults. The trigger fires the moment a row is added, no polling schedule to tune.
Power Automate When an item is created trigger with Site Address set to PDF4me Support SharePoint site URL and List Name set to New Customer Invoices
Site + list, that is the entire trigger config. SharePoint handles the change detection for you.

Tip. Rename the list columns in SharePoint to match the PDF field names (customerName, email, ...) if you can. That saves you from renaming keys in the Compose action later.


How do you pass the PDF template and signature into the flow?

Flow so far: trigger → Get file contentGet file content 1.

Two Dropbox reads, one for the PDF template, one for the signature PNG. Both live in the same folder so the flow author does not hunt for them later.

  1. Add Dropbox - Get file content using path. File: /blog data/fill a pdf/sample_fill_form.pdf.
  2. Under Advanced parameters, set Infer Content Type to Yes. Without this the PDF binary can be mangled during transport.
Dropbox Get file content using path action with File set to /blog data/fill a pdf/sample_fill_form.pdf and Infer Content Type set to Yes
Step 2. The blank template that Fill a PDF Form will populate.
  1. Add a second Dropbox - Get file content using path. This is where Power Automate auto-renames it to Get file content 1.
  2. File: /blog data/fill a pdf/signature.png.
  3. Same Infer Content Type Yes toggle.
Second Dropbox Get file content 1 action with File set to /blog data/fill a pdf/signature.png and Infer Content Type set to Yes
Step 3. The signature stamp PDF - Sign will overlay on page 1.

How do you build the JSON payload from the SharePoint row?

Flow so far: trigger → Get template → Get signature → Compose.

Compose is the "assemble JSON" step. It takes trigger fields (dynamic content) and drops them into one JSON object that PDF4me Fill a PDF Form understands.

  1. Add Compose.
  2. Click Inputs, paste the JSON skeleton below, then replace each right-side value with the matching SharePoint column from the dynamic content picker (so each pill sits between the quotes):
{
"customerName": "CustomerName",
"email": "Email",
"phone": "Phone",
"invoiceNumber": "InvoiceNumber",
"invoiceDate": "InvoiceDate",
"address": "Address",
"amount": "Amount"
}
Compose action with Inputs field showing a JSON object whose seven values are SharePoint trigger dynamic-content pills: CustomerName, Email, Phone, InvoiceNumber, InvoiceDate, Address, and Amount, each placed between the quotes of its JSON key
Compose emits one JSON object. Keep every dynamic-content pill inside the surrounding quotes so numbers and dates arrive as strings. The keys ("customerName", "email", ...) must match the PDF field names exactly.

Reference table for the payload:

JSON keySource (SharePoint column)TypeNotes
customerNameCustomerNameTextMapped directly.
emailEmailTextAny string, no format check at this step.
phonePhoneTextKept as text. Do not coerce to Number, phone extensions and hyphens matter.
invoiceNumberInvoiceNumberTextAlso reused in the output filename.
invoiceDateInvoiceDateDatePill sits inside quotes, so Compose emits it as text, not an ISO Date object.
addressAddressTextSingle-line.
amountAmountNumberPill sits inside quotes, so JSON receives a quoted value.

Tip. Always drop the dynamic-content pill between the two quotes of each JSON value. A pill placed outside the quotes emits a raw number or date, and an unquoted number followed by a , mid-string breaks the payload silently.


How do you fill the PDF form with the JSON data?

Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form.

This is the first PDF4me action. It takes the template PDF and the JSON payload and writes each JSON value into the matching form field by name.

  1. Add PDF4me PDF connector, action Fill a PDF Form.
  2. Template File Data: dynamic content, Get file contentFile Content (the template PDF binary).
  3. Template File Name: sample_fill_form.pdf (or whatever the file is called).
  4. JSON Data: dynamic content, Outputs from the Compose step.
  5. Keep PDF template Editable: No (this flattens the form after filling, so the recipient cannot un-fill the fields).
PDF4me Fill a PDF Form action with Template File Data mapped from Dropbox Body, Template File Name sample_fill_form.pdf, JSON Data mapped from Compose Outputs, and Keep PDF Template Editable set to No
Fill a PDF Form config. Keep PDF template Editable No flattens the fields into static text.

Tip. If you want the recipient to be able to edit specific fields later (e.g. add a memo), flip Keep PDF template Editable to Yes. The filled values are still there. Only the field lock changes.


How do you add the signature stamp with PDF - Sign?

Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form → PDF - Sign.

PDF - Sign overlays your signature PNG on the filled PDF, at a fixed position, at whatever opacity you choose.

  1. Add PDF4me PDF connector, action PDF - Sign.
  2. PDF File content: dynamic content, Fill a PDF FormBody (the filled PDF binary).
  3. PDF File Name: expression concat(triggerBody()?['InvoiceNumber'], '.pdf'), which names the file INV-2026-207.pdf so downstream logs show the invoice number.
  4. Sign File Content: dynamic content, Get file content 1Body (the signature PNG).
  5. Sign Image File Name: signature.png.
  6. Align Horizontal: right. Align Vertical: bottom.
  7. Pages: 1 (page 1 only, set to 1,3 for pages 1 and 3, or leave blank for every page).
  8. Height: 20. Width: 50. Margin Horizontal: 15. Margin Vertical: 15. Opacity: 100.
PDF4me PDF - Sign action with PDF File content mapped from Fill a PDF Form Body, PDF File Name concat expression building invoiceNumber plus dot pdf, Sign File Content mapped from Get file content 1 Body, Sign Image File Name signature.png, Align Horizontal right, Align Vertical bottom, Pages 1, Height 20, Width 50, Margin Horizontal 15, Margin Vertical 15, Opacity 100
Signature lands bottom-right of page 1, 50 wide by 20 high, 15 units of margin, fully opaque.

Position reference:

FieldWhat it controlsExample
Align HorizontalWhich side of the pageleft, center, right
Align VerticalTop / middle / bottom bandtop, center, bottom
PagesWhich page numbers get the stamp1 (first only), 1,3 (first and third), empty (every page)
Height / WidthSignature box size in PDF unitsMatch to your signature.png aspect ratio, else it stretches
Margin Horizontal / VerticalGap from the aligned edge15 = 15 units in from the right edge (given Align right)
Opacity0 to 100100 = fully opaque; 70 for a watermark-like feel

How do you save the signed PDF back to Dropbox?

Flow so far: trigger → Get template → Get signature → Compose → Fill a PDF Form → PDF - Sign → Create file.

Last step. The finished PDF goes to a dedicated output folder with a filename that guarantees no two runs collide.

  1. Add Dropbox - Create file.
  2. Folder Path: /blog data/fill a pdf/output.
  3. File Name: expression concat('Signed_', string(triggerBody()?['InvoiceNumber']), '_', string(ticks(utcNow())), '.pdf'), produces names like Signed_INV-2026-207_639235162128009339.pdf.
  4. File Content: dynamic content, PDF - SignBody (the signed PDF binary).
Dropbox Create file action with Folder Path /blog data/fill a pdf/output, File Name built from a concat expression combining the string Signed_, the InvoiceNumber trigger field, an underscore, the ticks of utcNow, and the .pdf extension, and File Content mapped from PDF - Sign Body
Timestamp via ticks(utcNow()) makes filenames unique even when two rows fire in the same second.

Tip. Swap Dropbox for SharePoint - Create file or OneDrive - Create file without touching any other step. The PDF binary is the same; only the storage adapter changes.

Run the flow and verify what you got

What did you actually build?
Add a row to New Customer Invoices (Title Mark - Form, CustomerName Mark Jagar, and so on). Within a few seconds Dropbox /blog data/fill a pdf/output gets Signed_INV-2026-207_639235162128009339.pdf. Open it: the eight fields are filled, and the signature sits bottom-right of page 1. That is the sample linked at the top of this post.

Common variations you can add without rebuilding

Email the signed PDF too
Add Outlook Send an email (V2) after Create file. Attach PDF - Sign Body as-is. The customer gets the invoice the same second Dropbox does.
Skip Dropbox, use SharePoint
Replace the three Dropbox actions with SharePoint Get file content and SharePoint Create file. The two PDF4me actions do not change at all.
Sign every page, not just page 1
Clear the Pages field in PDF - Sign or list them comma-separated (1,2,3). Same signature, applied to each page you list.
PDF4me vs Nutrient / Encodian / Plumsail
Those connectors handle Fill and Sign in separate flows or require per-user seats. PDF4me does both in the same premium connector, on one API key.

Common questions

How to fill PDF forms using Power Automate?

Add the PDF4me Fill a PDF Form action after a step that reads your PDF template (Dropbox / SharePoint / 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 must match the form field names in the template exactly.

Can Power Automate fill out a PDF form?

Yes, in one connector action once you install a PDF connector. Native Power Automate cannot write into a fillable PDF on its own, but the PDF4me Fill a PDF Form action does the whole fill-and-flatten in a single step, driven by a JSON payload you build with Compose or from a SharePoint / Excel row.

How to auto fill PDF form fields?

Trigger on the data source (SharePoint list, Excel row, form submission), build a JSON object whose keys match the PDF field names, then pass the JSON plus the template PDF to PDF4me Fill a PDF Form. The action returns the same PDF with every named field populated. Set Keep PDF template Editable to No to lock the values so recipients cannot un-fill them.

How to create a PDF using Power Automate from a SharePoint list item?

Use When an item is created as the trigger, then a Get file content step to load your PDF template, a Compose step to turn the row into JSON, and PDF4me Fill a PDF Form to merge them. The output is a filled PDF you can email, upload to SharePoint / OneDrive / Dropbox, or route to an approval flow. This blog builds exactly that pattern with a signature stamp on top.

How to auto sign PDF in Power Automate?

Add PDF4me PDF - Sign after any step that produces a PDF binary. Map PDF File content to the filled PDF, map Sign File Content to a PNG signature, and set the alignment (right / bottom), size (Height / Width), margins, and opacity. PDF - Sign stamps the image onto the pages you list. Leave Pages blank to sign every page.


Troubleshooting

Fill a PDF Form returns the template unchanged
The JSON keys do not match the PDF field names. Open the template in Adobe Acrobat, Prepare Form, and copy the exact field names. Keys are case-sensitive.
Signature comes out stretched or tiny
Height and Width are in PDF units, not pixels. Match the ratio to your signature.png so the image is not distorted. 50 wide x 20 high fits most horizontal signatures.
Compose emits invalid JSON
A dynamic-content pill was dropped outside the surrounding quotes, or a SharePoint value contains a raw double quote or newline. Keep every pill between its two quotes, and sanitise user-supplied text upstream in SharePoint.
Dropbox Create file overwrites earlier runs
File Name resolved to the same string twice. The ticks(utcNow()) suffix in the concat guarantees uniqueness, remove it and you will collide.

Next steps

The pattern above is the shortest hands-free path from a SharePoint row to a signed, stored PDF, and the two PDF4me actions in the middle are the only pieces you cannot buy from Microsoft directly.

References