Round-trip your client's proofing selections between PicPeak and Lightroom Classic.
PicPeak Β· Documentation Β· Round-trip guide Β· Issues
Upload galleries to a self-hosted PicPeak server from Lightroom Classic β then pull the colour labels and star ratings your client set while proofing back onto the matching RAW files, edit, and publish the finished renders straight over their proofs.
Important
Importing selections needs PicPeak with GET /api/v1/events/:id/photos. Export and publish work against older servers; the importer will not.
- Install
- Connect
- The round-trip
- Sending edits back
- Multi-camera shoots
- Multiple servers
- Security
- Troubleshooting
- Credit
There is no installer. A Lightroom plugin is a folder, and there are two ways to add one:
git clone https://github.com/PicPeak/plugin-lightroom.gitPlug-in Manager β File β Plug-in Manager β Add, point it at the picpeak-plugin.lrplugin folder. Keeps the plugin wherever you cloned it.
Auto-load β copy picpeak-plugin.lrplugin into Lightroom's Modules folder and it loads at every start, no Plug-in Manager step:
| macOS | ~/Library/Application Support/Adobe/Lightroom/Modules/ |
| Windows | %APPDATA%\Adobe\Lightroom\Modules\ |
No build step β the plugin runs from source. After changing files, use Reload Plug-in in the Plug-in Manager rather than restarting Lightroom.
- Lightroom Classic (Lua SDK 3.0+)
- A PicPeak server with the v1 API enabled
- An account allowed to create API tokens (
settings.integrations)
Two entries appear under Library β Plug-in Extras:
| PicPeak Overview | which server, which account, and the actions |
| PicPeak Importer | straight to the importer |
Open the overview, choose Config, enter your server URL and click Sign inβ¦. The plugin exchanges your credentials once for an API token scoped to this machine, stores only the token, and never keeps your password. Revoke it any time in PicPeak under Settings β API Tokens.
If your server enforces SSO or has reCAPTCHA enabled, password sign-in cannot work from a plugin β open Advanced and paste a token created with the admin scope.
Note
There is no keyboard shortcut, and none is possible. Lightroom's SDK cannot bind one, and a macOS App Shortcut cannot reach these items either β Lightroom builds the Plug-in Extras entries only when the menu is opened, after macOS has applied key equivalents at launch.
- Upload the unedited camera JPGs (
IMG_1234.JPG) to a PicPeak event. - Your client marks colour labels and stars while proofing. You can add your own marks in the admin view β they stay separate.
- PicPeak Importer β pick the event and the folder holding your RAWs β choose everything, or only what was marked.
- Matching RAWs are added to your catalog with the colours and ratings already applied, and collected into a collection.
Step 2 is optional. Importing all photos is a first-class choice, not a fallback.
Colour labels are off by default on new events. Turn them on in the event's feedback settings, or globally with
event_default_allow_color_labels.
Re-running an import β or importing onto photos you already triaged in Lightroom β must not silently destroy your work. Choose what happens when a photo already carries a different value:
| Mode | Behaviour |
|---|---|
| Fill empty only (default) | Never touch a photo that already has a value |
| PicPeak wins | Overwrite unconditionally |
| Lightroom wins | Write only where Lightroom is empty |
| Highest priority wins | Green β yellow β red β blue β purple; higher star count wins |
Green ranks first because in proofing it means first choice β the pick that has to survive a disagreement. Every run reports its conflict count, so a lossy setting is never silent, and a custom Lightroom label the plugin doesn't recognise is ranked lowest rather than destroyed.
Edit as usual, rename however you like, then File β Export β PicPeak Exporter with Existing event set to the event the photos came from.
Each render replaces its proof: the photo keeps its id, the client's ratings and colour labels, its comments, and its position in the gallery. The share link stays valid.
Renaming is safe because the import stamps the PicPeak photo id onto the catalog photo β it is the id, not the filename, that carries the edit home.
Warning
Replacement only happens when the export target is the same event the photos were imported from. Export to a different event and every photo uploads as a new copy there.
Two bodies both produce IMG_1234.JPG. Rename on ingest, before uploading, so the camera index becomes part of the number:
cam11234.jpg β camera 1, frame 1234
cam21234.jpg β camera 2, frame 1234
Matching reads the longest trailing run of digits, so 11234 and 21234 stay distinct where a bare 1234 would collide. No separator needed β swallowing the index into the number is what makes the run unique. Keep the index single-digit (cam1βcam9).
If you use the optional "Also match by trailing file number" fallback, your delivery name has to keep the whole run β Smith_Wedding_11234.jpg, not Smith_Wedding_1234.jpg. Files that do share a number are skipped and reported, never guessed at.
Sign in to a second PicPeak and the overview grows a Server picker β a studio server and a client's, or production and a local instance. Each server keeps its own token in the keychain, so switching is just choosing it.
- Your password is used once, exchanged for an API token, and never stored.
- The token lives in the OS keychain, not Lightroom's preferences file.
- Tokens are minted with a one-year expiry by default and are revocable per machine in Settings β API Tokens.
- Signing in over plain
http://warns before you type your password. Loopback is exempt.
The token carries the admin scope, because minting and revoking tokens requires it.
| Symptom | Cause |
|---|---|
| Nothing matched | RAW stems must match the uploaded names β IMG_1234.CR3 matches a proof uploaded as IMG_1234.JPG. If the RAWs were renamed after upload, enable the number fallback. |
| "N local files share the number" | Two RAWs have the same trailing digits β use the camera-prefix scheme, or match on full filenames. |
| Labels didn't change | The default conflict mode never overwrites. Switch to PicPeak wins or Highest priority wins. |
| No colours at all | Colour labels are probably disabled on that event. |
| RAW upload fails | The server needs exiftool to read RAW files (apt-get install libimage-exiftool-perl). Exporting JPEG avoids it entirely. |
Enable logging in Plug-in Manager β PicPeak β Logging, reproduce, then use Show log file.
Initial implementation by @bmachek (lrc-picpeak).
PicPeak Β· Documentation Β· Support