Skip to main content

Fill and Sign a PDF When a New SharePoint Item Is Created — Power Automate

22 min read
SEO and Content Writer

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.

The flow at a glance
1. When an item is created
Watches the New Customer Invoices list in SharePoint and starts the flow the moment a new row appears.
2. Get file content
Pulls sample_fill_form.pdf from /blog data/fill a pdf/ in Dropbox. Leave Infer Content Type on Yes so the binary survives.
3. Get file content 1
Grabs signature.png out of the same Dropbox folder, again with Infer Content Type set to Yes.
4. Compose
Assembles a single JSON payload out of the SharePoint row: customerName, email, phone, invoiceNumber, invoiceDate, address, amount.
5. Fill a PDF Form
PDF4me step. Feed the PDF binary to Template File Data, the Compose result to JSON Data, and set Keep PDF template Editable to No.
6. PDF - Sign
PDF4me step. Drops signature.png bottom-right on page 1 at 50 wide by 20 high, margin 15, full opacity 100.
7. Create file
Writes to Dropbox /blog data/fill a pdf/output with a File Name built by concat(Signed_, invoiceNumber, _, ticks(utcNow()), .pdf).
Short version

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​

Why SharePoint as the trigger?
Nearly every sales, ops, and finance team is already logging customer or invoice rows in a SharePoint list. Leaning on When an item is created lets people carry on exactly as they do today, they simply add a row.
Why Compose in the middle?
PDF4me wants a single JSON payload. Compose lets you paste a JSON skeleton and drop trigger fields into it as dynamic content, so you never have to thread JSON handling through every action downstream.
Why Fill a PDF Form and not Convert?
The template already carries named form fields. Fill a PDF Form writes into those fields by name and leaves your layout and design untouched, whereas Convert would flatten the file and rebuild it from scratch.
Why PDF - Sign in the same flow?
The alternative, a separate DocuSign or Adobe Sign step, still needs a person to click. For internal, low-risk invoices a stamped signature does the job and keeps the whole flow untouched by human hands.

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.
Sample signed PDF output
Grab the actual signed invoice this flow generated for row INV-2026-207 (Mark Jagar).
↓ signed-invoice-sample.pdf

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.

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
The full designer view: trigger through Create file, seven actions in all.

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

SharePoint list called New Customer Invoices with eight rows. The Mark Jagar row is selected showing 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
The New Customer Invoices list. Row INV-2026-207 (Mark Jagar) is the one behind the sample above.

How do you start the flow when a new SharePoint row appears?​

Flow so far: trigger only.

  1. Create a new Automated cloud flow, search SharePoint, and choose When an item is created.
  2. Point Site Address at your SharePoint site (the screenshot uses PDF4me Support at https://ynoox1.sharepoint.com/sites/PDF4meSupport).
  3. Set List Name to New Customer Invoices.
  4. Leave Advanced parameters as they are. The trigger goes off the instant a row lands, with no polling interval to fiddle with.
Power Automate When an item is created trigger with Site Address set to PDF4me Support SharePoint site and List Name set to New Customer Invoices
Site plus list is the whole trigger setup — SharePoint takes care of change detection.

Tip. Where you can, rename the SharePoint columns to match the PDF field names (customerName, email, ...). It spares you from re-labelling keys in the Compose step down the line.


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.

  1. Add Dropbox - Get file content using path and set File to /blog data/fill a pdf/sample_fill_form.pdf.
  2. Open Advanced parameters and switch Infer Content Type to Yes, otherwise the PDF binary can get garbled in transit.
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 empty template that Fill a PDF Form is about to fill in.
  1. Drop in a second Dropbox - Get file content using path; Power Automate automatically renames it Get file content 1.
  2. Set File to /blog data/fill a pdf/signature.png.
  3. Flip the same Infer Content Type toggle to Yes.
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 that PDF - Sign will lay over page 1.

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.

  1. Add a Compose action.
  2. 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"
}
Compose action with Inputs field showing a JSON object whose seven values are SharePoint trigger dynamic-content pills placed between the quotes of each key
Compose returns a single JSON object. Keep each pill inside its quotes so numbers and dates come through as strings, and make sure the keys match the PDF field names to the letter.

Payload reference:

JSON keySource (SharePoint column)TypeNotes
customerNameCustomerNameTextPassed straight through.
emailEmailTextAny string; nothing validates the format here.
phonePhoneTextLeave it as text — don't cast to Number, since extensions and hyphens matter.
invoiceNumberInvoiceNumberTextReused later in the output filename too.
invoiceDateInvoiceDateDateWith the pill inside quotes, Compose sends it as text rather than an ISO Date object.
addressAddressTextA single line.
amountAmountNumberInside 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.

  1. Add the PDF4me PDF connector and pick the Fill a PDF Form action.
  2. Template File Data: dynamic content, Get file content → File Content (the template PDF binary).
  3. Template File Name: sample_fill_form.pdf (or whatever yours is named).
  4. JSON Data: dynamic content, the Outputs of the Compose step.
  5. Keep PDF template Editable: No — this flattens the form once filled, so the recipient can't wipe 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
The Fill a PDF Form setup. With Keep PDF template Editable on No, the fields flatten into static text.

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.

  1. Add the PDF4me PDF connector, action PDF - Sign.
  2. PDF File content: dynamic content, Fill a PDF Form → Body (the filled PDF binary).
  3. PDF File Name: the expression concat(triggerBody()?['InvoiceNumber'], '.pdf'), which yields INV-2026-207.pdf so the invoice number shows up in later logs.
  4. Sign File Content: dynamic content, Get file content 1 → Body (the signature PNG).
  5. Sign Image File Name: signature.png.
  6. Align Horizontal: right. Align Vertical: bottom.
  7. Pages: 1 (just page 1 — use 1,3 for pages 1 and 3, or leave it empty to sign every page).
  8. Height: 20. Width: 50. Margin Horizontal: 15. Margin Vertical: 15. Opacity: 100.
PDF4me PDF - Sign action with PDF File content from Fill a PDF Form Body, PDF File Name a concat expression, Sign File Content from Get file content 1 Body, Align Horizontal right, Align Vertical bottom, Pages 1, Height 20, Width 50, Margin 15, Opacity 100
The signature settles bottom-right of page 1: 50 wide, 20 high, 15 units of margin, fully opaque.

Positioning reference:

FieldWhat it controlsExample
Align HorizontalWhich edge, left to rightleft, center, right
Align VerticalTop, middle, or bottom bandtop, center, bottom
PagesWhich pages get stamped1 (first only), 1,3 (first and third), empty (every page)
Height / WidthSize of the signature box in PDF unitsMatch your signature.png ratio or it will stretch
Margin Horizontal / VerticalDistance from the aligned edge15 = 15 units in from the right edge when Align is right
Opacity0 to 100100 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.

  1. Add Dropbox - Create file.
  2. Folder Path: /blog data/fill a pdf/output.
  3. File Name: the expression concat('Signed_', string(triggerBody()?['InvoiceNumber']), '_', string(ticks(utcNow())), '.pdf'), which produces names such as Signed_INV-2026-207_639235162128009339.pdf.
  4. File Content: dynamic content, PDF - Sign → Body (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 Signed_, the InvoiceNumber trigger field, the ticks of utcNow, and .pdf, and File Content mapped from PDF - Sign Body
The ticks(utcNow()) timestamp keeps filenames unique even if two rows fire within the same second.

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​

So what did you just build?
Drop a row into New Customer Invoices (Title Mark - Form, CustomerName Mark Jagar, and so on). A few seconds later, 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​

Email the signed PDF too
Slot an Outlook Send an email (V2) after Create file and attach PDF - Sign Body as-is. The customer receives the invoice the same second Dropbox does.
Skip Dropbox, use SharePoint
Swap the three Dropbox actions for SharePoint Get file content and SharePoint Create file. Neither PDF4me action changes at all.
Sign every page, not just page 1
Empty the Pages field in PDF - Sign, or list them comma-separated (1,2,3). The same signature applies to each page you name.
PDF4me vs Nutrient / Encodian / Plumsail
Those connectors split Fill and Sign across separate flows or charge per-user seats. PDF4me does both from one premium connector on a single API key.

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​

Fill a PDF Form returns the template unchanged
The JSON keys aren't matching the PDF field names. Open the template in Adobe Acrobat, choose Prepare Form, and copy the field names exactly — they are case-sensitive.
Signature comes out stretched or tiny
Height and Width are PDF units, not pixels. Match the ratio to your signature.png so it does not distort; 50 wide by 20 high suits most horizontal signatures.
Compose emits invalid JSON
A dynamic-content pill landed outside its quotes, or a SharePoint value holds a stray double quote or newline. Keep every pill between its quotes and clean up user-entered 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 is what guarantees uniqueness — drop it and runs will collide.

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​