# Send Paige documents to SharePoint with Power Automate

Build the Power Automate flow that watches Paige's SFTP export folder, reads each document's field values, creates the PDF in a SharePoint library with a meaningful name, and fills the library's metadata columns — vendor, invoice number, date, amount — from what Paige extracted.

Product: paige · Audience: system-administrator · Time: 1 hour · Last verified: 2026-09-05

Canonical: https://help.ademero.com/paige/integrations/send-paige-documents-to-sharepoint-with-power-automate

**At the end of this guide, every document Paige finishes appears in your SharePoint library within a few minutes, named from its own contents (`INV-20441 – Acme Office Supply.pdf` instead of a scanner's serial number), with the library's columns filled from Paige's field values — ready for views, filters, and search.**

The flow is six steps: *SFTP trigger → keep only the data file → Parse JSON → get the PDF → SharePoint Create file → Update file properties.* Paige uploads the PDF before the data file, so the PDF is always there when the flow fires.

## Step 1 — Point Paige at your SFTP server

1. In Paige, open **Settings** (the gear at the bottom of the left menu — administrators only), pick the scan job, and choose **Export**.
2. Click the **FTP** card. Enter the **FTP Address**, **Port** `22`, **Username**, **Password**, and in **FTP Folder Path** a folder for this scan job, such as `/paige/invoices`.
3. Click **Test Connection**. **What you should see:** `FTP connection successful!` Connect — `Connected to FTP Server!` and a green **Connected** label on the card.
4. Turn on **Enable Auto Export**. Under **Auto Export Settings**, switch on **Only documents having a document type**, set **Auto Field Entry Complete** to **Yes**, and set **Human Reviewed** to **Reviewed** if a person checks documents in Paige before they go out. Click **Save**.

Open port 22 on your firewall to Paige's address ranges — [Outbound IP ranges for firewall allow-lists](/paige/document-processing/outbound-ip-ranges-for-firewall-allow-lists).

## Step 2 — Prepare the library

In the SharePoint library, add a column for each Paige field you want to keep: **Settings** (gear) > **Library settings** > **Create column**, or **+ Add column** in the library view. Match types sensibly — *Single line of text* for names and numbers-as-text, *Date and time* for dates, *Currency* or *Number* for amounts. Note each column's exact name; the flow refers to them.

> **NOTE:** Paige exports every value as text exactly as it appears on the page. A *Date and time* or *Currency* column will reject `08/28/2026` or `1,284.50` as-is, so the flow converts those with expressions (below). If you'd rather keep it simple, make every column *Single line of text* — search and filtering still work.

## Step 3 — Build the flow

In Power Automate, create an **Automated cloud flow**.

1. **Trigger — SFTP - SSH: When a file is added or modified.** Create the connection with **Host server address**, **User name**, **Password**, and **Port number** `22`. In **Folder**, pick the scan job's folder. Leave **Include file content** on.

2. **Condition:** *File name* **ends with** `.json`. Put steps 3–6 in the **If yes** branch. Without this the flow runs four times per document.

3. **Parse JSON.** Content: the trigger's *File content*. Schema: **Use sample payload to generate schema** and paste a real `.json` from the folder. Each Paige field becomes a token under `fields`.

4. **SFTP - SSH: Get file content using path.** File path: the folder plus the parsed `pdf_file`, for example `/paige/invoices/@{body('Parse_JSON')?['metadata']?['pdf_file']}`.

5. **SharePoint: Create file.**
   - **Site Address:** the site (for a Teams channel, the team's site).
   - **Folder Path:** the library, and a subfolder if you want one (for example `/Shared Documents/Invoices`).
   - **File Name:** build it from Paige fields, ending in `.pdf`. A good default is invoice number and vendor:
   
     ```
     @{body('Parse_JSON')?['fields']?['Invoice Number']} - @{body('Parse_JSON')?['fields']?['Vendor Name']}.pdf
     ```
   
     SharePoint rejects `" * : < > ? / \ |` in names; wrap the expression in `replace()` calls for any character your data might contain. Two documents with the same name would collide — add the export timestamp from `metadata.export_timestamp` if that's possible.
   - **File Content:** the output of step 4.

6. **SharePoint: Update file properties.**
   - **Site Address:** the same site. **Library Name:** the library.
   - **Id:** the *ItemId* output of the Create file step.
   - Then one input per column, mapped from the Parse JSON tokens. For typed columns, convert:
   
     | Column type | Expression |
     |---|---|
     | Single line of text | the token as-is |
     | Date and time | `formatDateTime(body('Parse_JSON')?['fields']?['Invoice Date'], 'yyyy-MM-dd')` — works when Paige's date is in a form `formatDateTime` recognizes; otherwise use a *Single line of text* column |
     | Currency or Number | `float(replace(replace(body('Parse_JSON')?['fields']?['Total'], ',', ''), '$', ''))` |
     | Choice | the token as-is, when Paige's value matches a choice exactly (a **Document Type** column filled from `metadata.document_type` is the classic use) |

7. **Save.** **What you should see:** the flow checker reports no errors.

## Step 4 — Test it

1. Process one document through the scan job in Paige (review it if you required review) and wait for the export.
2. Open the flow's **28-day run history**. **What you should see:** one successful run, triggered by the `.json` file, within a few minutes of the export.
3. Open the library. **What you should see:** the PDF with the name you built, and the columns filled. Open the file — the text is selectable, which is Paige's searchable layer.

## When it doesn't work

| Symptom | Where to look |
| --- | --- |
| The flow never runs | Wrong folder in the trigger, or files landed in a subfolder (the trigger ignores subfolders). Files over 50 MB are skipped by this trigger — use the **(properties only)** trigger plus **Get file content** for very long documents. |
| Runs four times per document | The `.json` condition is missing or misplaced. |
| Create file fails with an invalid-name error | A field value contained a character SharePoint forbids. Add `replace()` calls to the File Name expression. |
| Update file properties fails on a column | The value doesn't fit the column type (text into a date or number column). Convert it, or change the column to text. |
| Columns stay empty but the file arrives | The Parse JSON schema was generated from a sample missing those fields. Regenerate it from a `.json` of the right document type, then re-map. |
| Nothing arrives from Paige | The auto-export criteria aren't met, or the document was processed before you enabled auto export. Export it once from the **Documents** page with the **Export** button and tick **FTP**. |

If the Paige side is the problem, contact Ademero support with the scan job name and the message from **Test Connection**.

## What's next

- [Connect Paige to SharePoint](https://help.ademero.com/paige/integrations/connect-paige-to-sharepoint)
- [Connect Paige to any app with Zapier, Make, or Power Automate](https://help.ademero.com/paige/integrations/connect-paige-to-any-app-with-zapier-make-or-power-automate)
