Jeffrey’s “Export to ExposureManager” Lightroom Plugin

This plugin allows you to export images from Lightroom directly to your ExposureManager account.

This plugin works in Lightroom Classic, and older versions as far back as Lightroom 3, though some features depend on the version of Lightroom.

The same download works for both Windows and Mac. See the box to the upper right for the download link (in orange) and installation instructions.

After downloading, installing, and enabling the plugin (download link is in the orange box, in the upper-right of this page; install instructions are here), you can activate the ExposureManager export by clicking on the Export Dialog's masthead, as illustrated here.

You can add additional functionality to the ExposureManager export (and to all exports) with export-filter plugins. I have a variety of them on my Lightroom Goodies page related to Geoencoding, support, metadata management, running external apps, automatic snapshot creation, Creative Commons licensing, etc.


This plugin is distributed as “donationware”. I have chosen to make it available for free — everyone can use it forever, without cost of any kind — but unless registered, its functionality is somewhat reduced after six weeks.

Registration is done via PayPal, and if you choose to register, it costs the minimum 1-cent PayPal fee; any amount you'd like to add beyond PayPal's sliding fees as a gift to me is completely optional, and completely appreciated.

Note: a Lightroom major upgrade, such as from Lr10 to Lr11 de-registers the plugin in the upgraded version, so if you want to maintain registration, a new ($0.01 if you like) registration code is needed in the upgraded version. It makes for a hassle every couple of years, I know. Sorry. See this note for details.

For details on plugin registration and on how I came into this hobby of Lightroom plugin development, see my Plugin Registration page.

Version History
( Update Log via RSS )


Make the template-editing window a big bigger in the caption editor.


Updates for Lr8 (Lightroom Classic CC Version 8).

Added the special PP() function to the {LUA} token.

Added hierarchical options to the Keywords token.

Try to work around a Lightroom bug related to photo timezones and how Lightroom handles accessing plugin data.


Added the 'nicknames' modifier to the {People} token.

Added the SST1, SST2, and SS3 tokens to the template tokens that the plugin understands.

Input fields that accept a location can now handle a What3Words code and a Plus Code.

Fixed a bug when 'Token Examples' invoked in certain situations.

Added the IptcDateTaken token.

Clicking on the version number in the Plugin Manager now copies version info to the clipboard

Updated the PublishCollectionName token to allow numeric arguments along the lines of the CollectionName token.

Added the folowing template tokens: {home}, {desktop}, {temp}, {pictures}, {documents}

Added the 'PCH' variable to the {LUA} tag.

Updated the Keywords token, and added the KWf function to the {LUA} token.

Added the {NonSmartCollectionNames} and {NonSmartCollectionFullNames} tokens to the data templates that my plugins understand.

When encountering catalog corruption, present a better error message.

Added a bunch of token filters: F2D F2S F2X B2D B2S B2X S2X A2D A2S A2X


Oops, more Lr7 stuff.


Updates for Lr7.

Allow the "If Exists" feature of Templat Tokens to work with the PluginProperty token.

Update registration support to handle a stupid bug at PayPal that PayPal refuses to fix )-:


Fixed a bug introuded the other day in template tokens, related to Windows filenames.


Added the Newline template token.

Enhanced the FolderName token

Added the "only if it has a value" feature to template tokens.


Added ChildOf and DescendantOf filters to the {Keywords} and {KeywordsAll} template tokens that my plugins understand.

Fixed a bug with the 'edit saved credentials' dialog.

Fixed how custom {People} formatting works with people keywords that have no birthday associated with them.

Try to avoid yet another place where Lightroom gets hung because it can't handle certain kinds of dialogs at the same time.

Fix to get around a Mac display issue with Lr6 on OSX.

Added Russian-langauge support for the People-Support {People} tag.

Added the {FilenameNumber} token to the templates that my plugins understand.

Some updates to support Lr2. Lr2 is sufficiently old that I will drop support for it soon.

Added the following tokens to the templates that my plugins understand: FileModYYYY, FileModYY, FileModMM, FileModDD, FileModHH, FileModMIN, FileModSS, FileYYYY, FileYY, FileMM, FileDD, FileHH, FileMIN, FileSS.

Fix for Lightroom 2. Support for older versions of Lightroom will be stopped soon.

Got around a situation where Lighroom would crash duing an export of large images.

Better dialog real-estate managment for the meatadata section.

Fixed a bug with the keyword tables in the LUA token.

Added Weekday, Wday, weekday, and wday to the list of template tokens that my plugins understand.

Switch the log-sending mechanism to https.

Added "ISO8601Date" to the template tokens that my plugins understand.

Added the following tokens to the template tokens that my plugins understand: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum


Updated the Caption part of the dialog to show up to three lines of text, and the full text in the tooltip.

Added {SpeedKPH} and {SpeedMPH} to the list of template tokens supported by my plugins.

The {People} token wasn't working properly for some keywords without a registered birthday.


Fixed the "SpecPeople:259: attemt to index al nil value" error.

Clicking on the example caption in the export dialog now brings up a dialog showing the whole example caption, which is useful to see the full thing when it contains multiple lines.


Fix to the date_diff() function supported by the LUA template token.

In the POODLE-vunerability dialog, display a raw URL of a page on my site that discusses the issue, so that folks can be independently sure that the dialog is indeed from me and not malware.

Updated the camera-name code to try to guess the actual camera model of Hasselblad H5D files, since in their infinite wisdom Hasselblad decided to encode three distinct models with the same internal code, making it impossible to know for sure what camera produced a given image file.


Use a compressed view on the Plugin Extras dialog if the screen is not very tall.

Added extra logging to debug why Lightroom might fail to render for export

20141019.57 Windows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.
20140923.56 Added the LrMD5, LrLocalization, LrSystemInfo, and LrMath packages to the {LUA} template token.
20140922.55 When deleting from a publish collection, properly maintain the 'Uploaded to...' metadata field.
20140902.54 New build system

Made the {GPSAltitude}, {Altitude}, and {GPSCoordinates} tokens subject to the geo-privacy settings like the other geo-related tokens.

20140731.52 Registration fix for Lr5.6
20140729.51 Previous updates broke support on Lightroom 2
20140720.50 More Creative-Cloud support.

Fixed an issue with Creative-Cloud revalidation.


Lr5.5 and later Creative-Cloud installs can now revalidate themselves if needed.

20140710.47 Sigh, had a bug in the Creative-Cloud support.

Now supports Lr5.5+ Creative-Cloud Installs.

20140704.45 Sigh, introduced an error for some folks with the rebuild the other day.
20140630.44 Build-system update

Added date_diff() and raw_time_diff() functions to the special {LUA} token understood by the plugin.


Add a note to the Keyword options to highlight that only exportable keywords are considered

A missing 'automatic destination' could cause the plugin to crash.

Added new tokens to the template language the plugin understands: LrVersion, LrVersionMajor, LrVersionMinor, LrVersionRevision, LrVersionBuild, Location, CatalogName, CatalogPath, OperatingSystem, OS

Added new token filters: NS and LO

Added a new "Location Privacy" section to the Exprt/Publish dialogs.

Updated the location-based tokens in the template language the plugin uses — City, State, Country, Location, Latitude, Longitude — to respect new privacy options in the Export/Publish dialogs, and in the resend-metadata dialog. You can override those options on a case-by-case basis with the evenIfPrivate filter.

Added locationIsPrivate variable to the environment available to the LUA token.

The {Empty} template token wasn't working properly.

Make the revalidation process smoother, especially for folks using Lr5.4 and later.

Enable a new feature internal to Lr5 for large exports that keeps the CPU from running too far ahead of the upload. Prior to this, Lightroom would go ahead and peg the CPU to pre-render all the images even if they weren't being uploaded at nearly the same speed. Now Lightroom pauses the behind-the-scenes rendering if it has gotten too far ahead of the upload.

Added the “:EMBED” token filter to the template language.

Added (to File > Plugin Extras) the ability to check the remote status to see whether uploaded photos are still there, and clear out data from the catalog when they are not.

20130926.41 Oops, fix a bug introduced in the previous update

Added a bunch of tokens to the preset templates supported: ExportFormat, ExportColorSpace, ExportBitDepth, ExportQuality, ExportSharpeningLevel, ExportSharpeningMedia, IpernityUrl, GoogleDriveUrl, and TumblrUrl.

The token-examples dialog had been broken. Also deprecated Folder and Path tokens in preference to FolderName and FolderPath tokens.


Work around a Lightroom bug concerning the determination of whether a photo is offline.


Made big updates to the "Export with Smart Previews?" section; you can now pick to be asked whether to export via Smart Previews, and can differentiate between when the Smart Previews are "good enough" for an export and when they are not.

Fixed the KW/KWE tables in template tokens; they had been broken when using load for the script.

Better handle very long user account names, so that the [Logout] button doesn't get cut off of the Export dialog.


Work around a bug that causes the export-related progress bar to not show up right away.

20130613.36 Better support for plugin revalidation.
20130612.35 Creating a new publish album could sometimes fail
20130611.34 Sigh, previous update for Lr5 broke things for the Lr5 beta.
20130611.33 Yet another Lr5 update
20130610.32 Better logging to try to understand catalog-write-access contention under Lightroom's hood
20130524.31 Apparently, a recent change broke things on Lr2, which some folks apparently still use.

Added the ability in Lr5 to export images even if the master image file is not available, so long as there's a smart preview available.

20130511.29 When creating a publish collection from the context menu, respect the publish service's flat vs. hierarchical naming setting.
20130501.28 Update for Lr5
20130412.27 Fix to the Twitter fix.
20130412.26 Build system update.
20130328.25 Fix for the registration system.

Fixed a possible plugin crash in Lr2 that might happen if the remote site's servers are failing.


Added support for some new template tokens: FlagStatus (requires Lr4.1 or later), and for Lr3 and later, a bunch of IPTC extended metadata: AdditionalModelInfo, CodeOfOrgShown, DigImageGUID, Event, ImageSupplierImageId, MinorModelAge, ModelAge, ModelReleaseID, ModelReleaseStatus, NameOfOrgShown, PersonShown, PlusVersion, PropertyReleaseID, PropertyReleaseStatus, and SourceType.

20130214.22 Small fix for Lr2
20130209.21 More build-system maintenance
20130206.20 Tweak for my registration system

Added the ability to set the caption on a one-off basis by just typing it in, avoiding the need to make a preset each time.

20121014.18 Added a help dialog when encountering the mysterious 'handle in the wrong state' error.

Workaround for an "attempt to call field 'getProgressScope'" bug introduced in Lr4.2.

Enhance the {EMPTY} template token so that it interrupts the squelching of superfluous joining characters.


Updates to the environment in the {LUA} token (in the template tokens in my plugins) to include photoTime() and currentTime(), and other changes to match the updated docs at that link.


Wow, it seems some people using Lr2 are still using very old versions of Lr2 that aren't up to snuff feature/bugfix wise. I don't want to support gratuitously old stuff, so I put a minimum of Lr2.6 to use the plugin.

20120614.15 Very slow uploads in Lr4.1 could cause the new progress bar stuff to blow up.

New upload engine in Lr4.1 that greatly increases the efficiency of large uploads. In Lr4.0 and older versions, upload handling is inefficient and large uploads can crash Lightroom.

With Lr4.1 and later, you also get an upload percent-complete report in the task progress bar, and the ability for upload cancels to take effect immediately.


Update to handle the Mac App Store version of Lightroom.

Tweak for Lr4.1RC2.

Enhanced the send-log dialog to hopefully make reports more meaningful to me, yielding, I hope, the ability to respond more sensibly to more reports.

Added to the template tokens supported by the plugin: {FullMasterFile}, {FullMasterFolder}, {FullExportedFile}, and {FullExportedFolder}.

20120330.12 Update to handle 4.1RC
20120309.11 Had broken registrations in Lr2; Update to the debug logging to better track down timing issues that might arise.
20120303.10 The recently-added "Lightroom doesn't handle large uploads well" check/dialog didn't play nice. Does now.

Files that are offline are now detected before an export/publish begins, and if there are any, offers the option to abort the export, or just skip the offline ones. This is a lot more clear than the "dng_error_file_not_found" error you get from Lightroom if you follow through with an export attempt of an offline image.

More on the march toward Lr4, including upheaval in the code to handle Lightroom APIs being discontinued in Lr4.

Added the {AspectRatio} token to the token templates understood by the plugin, and updated the {UUID} token.

Bumped up the minimum Lr3 version to Lr3.5, to ensure we've got those bug fixes. Lr2 and Lr4 are still supported, of course.

20120114.8 More tweaks for Lr4b

I'd had some special handling for a keyword-related Lightroom bug that was fixed in Lr3.5, so I've removed the special workaround processing for that version and later.

Update for Lr4 beta: explain in the plugin manager that the plugin can't be registered in the beta.


Some internal optimizations to handle large gallery sets.

Had issues with the registration button sometimes not showing.

Added {PluginProperty} template token.

When doing a plugin upgrade, offer the ability to flush all the old copies of the plugin

Added a system-clock check and reports to the user if the system clock is more than a minute out of date. An incorrect system clock can cause problems with various kinds of communication and authentication with some of my plugins, so I've just gone ahead and added this to every plugin.

20110923.5 Added the ability to select whether the prints are intended for printing or display only.
20110818.4 Backported to Lr2.
20110806.3 Don't crash if a gallery has no name; just skip it.
20110802.2 Added some extra gallery sort options.
20110730.1 Initial release

All 6 comments so far, oldest first...

Jeffrey – I really like the Exposure Manager plug-in. However, I am experiencing a problem that is really annoying and I’m not sure if this is an issue on the programming side or on the EM side but it is something that needs to be addressed. Whenever I upload a gallery via you LR plug-in, regardless of the image size I set on export, if a customer places an order online it goes straight to printing at EM. I have spoken with EM about this and they say that the plug-in should only be uploading previews. I am having to go back now and re-upload all the galleries I uploaded with the plug-in with the standard procedure. Other than the jpeg quality setting in the plug-in interface I do not see any other way of controlling the image. If there is a way to stop this from happening I would appreciate you letting me know and also telling EM so they can broadcast this to others.



I don’t quite understand what you’re asking for… it sounds like the “Resize to…” options in the “Image Sizing” section of the Export Dialog is what you want. What am I missing? —Jeffrey

— comment by Shawn M. Knox on September 16th, 2011 at 11:09pm JST (12 years, 10 months ago) comment permalink

I have uploaded the plugin and lr is asking for a username and password to exposure manager but the fields are greyed out and when i enter the correct information nothing happens
The plugin is probably making invalid assumptions about the minimum password length (5 chars), or the form of a username (digits and lowercase letters). Let me know how (via email) how this is not matching your reality… —Jeffrey

— comment by Fi on September 24th, 2011 at 5:34am JST (12 years, 10 months ago) comment permalink

Wow, the Lightroom plugin is a great convenience! The only issue I have is figuring out how to tell it into which gallery to export the photos on Exposure Manager. Right now they are getting dropped into a previous gallery I have from a few years ago. I’m sure it’s user error, but can you help me? Thanks, Jeffrey.

There’s a whole section of the export dialog for it… check them all out to familiarize yourself with all the export options. —Jeffrey

— comment by Jon on December 26th, 2011 at 11:06pm JST (12 years, 7 months ago) comment permalink

Hi, thanks for the great work on your plugins. I am using your Zenfolio plugin. After I publish the photos to my Zenfolio gallery, I can see the comments in the Library module. Is there a way to search on the comments? For example, I took a couple hundred photos during a track meet and the coaches went in to my zenfolio gallery and added a comment with each athlete’s name. They populated in Lightroom (using LR4). I’d like to be able to search on each athlete’s name at the end of the season so I can pick the best couple of photos of each athlete to make a slideshow. Can you be of any assistance?

Lightroom doesn’t give any access to the comments once fetched from Zenfolio. It’s really a neglected aspect of Publish. )-: —Jeffrey

— comment by Tim S. on May 16th, 2013 at 9:18am JST (11 years, 2 months ago) comment permalink

Hi Jeffrey! Photographer from Minnesota, and am really liking your plugin! But! For some reason I still can’t seem to puzzle out, all of the test exports to exposure manager are loading backwards, or numbered backwards, as in last file first in the gallery. I shoot a lot of barrel racing and need the files to load in sequence as shot. I’ve looked thru you FAQ and tried every switch, included metadata etc. Any thoughts??

When I load a sequence of images thru exposure manager works fine… Just upgraded my mac mini to LR5 and am pretty sure your exporter plugin will be a great time saver, but gotta figure this out!


It seems that each photo is added at beginning of a gallery as it’s uploaded. Their API doesn’t give any control over this, so the best I can suggest is after you’ve uploaded a gallery to visit the gallery in your admin view at their web site, and manually sort (via “photo options: sort” in the gallery “manage” view. —Jeffrey

— comment by Al Braunworth on March 15th, 2014 at 11:33pm JST (10 years, 4 months ago) comment permalink

Hi Jeffrey,

the service of Exposure Manager has been suspended – you can remove this plugin 🙁

Greetings from germany, Ralf

Thanks for the heads up. —Jeffrey

— comment by Ralf B. on January 9th, 2019 at 6:51pm JST (5 years, 6 months ago) comment permalink
Leave a comment...

All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.

IMPORTANT:I'm mostly retired, so I don't check comments often anymore, sorry.

You can use basic HTML; be sure to close tags properly.

Subscribe without commenting