# Load Paige documents into Salesforce with Data Loader

Two Data Loader runs per batch: insert or upsert the records from Paige's one-row-per-document CSV, then insert the PDFs as ContentVersion files linked to those records — no subscription, no automation platform.

Product: paige · Audience: system-administrator · Time: 1 hour the first time, 15 minutes per batch after · Last verified: 2026-09-05

Canonical: https://help.ademero.com/paige/integrations/load-paige-documents-into-salesforce-with-data-loader

**At the end of this guide, a batch of documents that Paige read becomes a batch of Salesforce records with their fields filled, each with its PDF attached as a File — two Data Loader runs, nothing to subscribe to.**

The two runs exist because Salesforce stores files as their own object (`ContentVersion`) that links to a record. Run one loads the records and returns their IDs; run two loads the files with those IDs.

## Step 1 — Get the batch out of Paige

In Paige, open **Documents**, click **Export**, and in the **Export Documents** dialog choose the **Scope**, the **Filters** (**Reviewed** only, **Field Data** with fields, **Status** not yet exported), tick **Download** under **Destinations**, and confirm. Paige emails a link; the zip contains the PDFs and the data files, including the one-row-per-document CSV. Extract it to a folder, say `C:\PaigeBatch\`.

**What you should see** in the CSV: a header row with the PDF file name, the document type, and one column per Paige field, then one row per document.

## Step 2 — Load the records

1. Add an **external ID** column if you'll upsert (the Paige file-name column's unique part, or a document number Paige extracted), and make sure the Salesforce object has a matching External ID field.
2. Open Data Loader, click **Insert** (or **Upsert**), log in, choose the object, and select the CSV.
3. On the mapping step, map each Paige column to its Salesforce field (save the mapping as an `.sdl` file for next time). Match types: text to text, and format dates as `YYYY-MM-DD` before loading.
4. Finish. Data Loader writes a **success** CSV containing the new records' `ID` column — keep it.

## Step 3 — Load the PDFs as Files

1. Build a second CSV, one row per document, from the success file and Paige's CSV:
   
   | Column | Value |
   |---|---|
   | `Title` | A name built from Paige fields, for example the document number and customer name |
   | `PathOnClient` | The PDF's file name, for example `INV-20441.pdf` |
   | `VersionData` | The full local path to the PDF, for example `C:\PaigeBatch\scan_job_…_page_….pdf` |
   | `FirstPublishLocationId` | The record's `ID` from the success file — this links the File to the record |

2. In Data Loader, open **Settings**, set **Batch Size** to `1`, and tick **Show all Salesforce objects**. If you'll use the Bulk API, also tick **Upload Bulk API Batch as Zip File**.
3. Click **Insert**, choose the **ContentVersion** object, and select the CSV. Map `Title`, `PathOnClient`, `VersionData`, and `FirstPublishLocationId`.
4. Finish. **What you should see:** the success file lists one ContentVersion per PDF, and each record in Salesforce shows its PDF under **Files**.

## When it doesn't work

| Symptom | Where to look |
| --- | --- |
| Record load rejects a row | Type or picklist mismatch on a field; the error file names it. |
| ContentVersion rows fail with a file error | `VersionData` isn't a full local path the machine running Data Loader can read. |
| Files load but aren't on the records | `FirstPublishLocationId` was blank or wrong; it must be the 18-character record ID. |
| Records doubled | Use upsert with an external ID, and export each batch once from Paige with the **Status: Not Exported** filter. |

## What's next

- [Send Paige documents to Salesforce with Zapier or Make](https://help.ademero.com/paige/integrations/send-paige-documents-to-salesforce-with-zapier-or-make)
- [Connect Paige to Salesforce](https://help.ademero.com/paige/integrations/connect-paige-to-salesforce)
