Jeffrey’s “Export to SmugMug” Lightroom Plugin

This for Adobe Lightroom Classic plugin allows you to export images from Lightroom directly to your SmugMug account.

This plugin works in Lightroom Classic, and older versions as far back as Lightroom 4 (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.

FYI, SmugMug itself offers a Publish-only plugin for Lightroom here. There are pluses and minuses to each: my plugin, which predates SmugMug's own by several years, is generally more configurable and has more features, and also supports non-publish Export, but it's also more complex; SmugMug's plugin heroically supports two-way gallery synchronization.

In any case, you can use both in parallel if you'd like for testing. Both are free.

Please see the FAQ and known issues before reporting bugs. If this is your first look at my export plugins, please see the announcement post for an overview and some important information.

When run in Lightroom 3 or later, there is full support for Lightroom's new Publish feature. See the manual for Publish to SmugMug for details.


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 )


Work around a bug in Lightroom 11.2 that causes publishing to get stuck. The workaround is to switch the view away from the collection being published. If the user does that switch manually, the bug goes away. This plugin update notices if the bug is being triggered, and if so, momentarily switches the view to the quick collection and back.

Removed a bunch of debug logging that was slowing down the LUA token.Newline


Work around a Lightroom "lua_gettop( L ) == 1" bug.


Added the WEEKNUM token, along with DAYNUM, weeknum, and daynum.

Whack-a-mole with PayPal's random changes.


Warn when PayPal seems to have given a bogus code in the web-confirmation page.


Fixed a bug related to reading the list of albums from SmugMug.


SmugMug removes most punctuation from keywords (so “son-in-law” becomes “soninlaw”), so I added some better ways to handle that.

Fixed that the Province template token did not respect the plugin-specific geo-privacy settings.

Fixed an issue with the {Newline} token, and added {Comma}, {Hyphen}, and {Space} for good measure.

Fixed a problem with filters on the {Keyword} token.


Work with SmugMug's new limit of 4 gigapixels.

Reworked the Keywords token to better accept filters.

Added 'separated by' to the People token.


Try to be more insistent with metadata updates, as SmugMug seems to randomly ignore some updates. )-


Added, with hesitation, the ability to associate images already at SmugMug with images in your catalog. This area is fraught with fragility.

Added the ImageViewDirection and ImageViewBearing tokens.


Try to work around a bug at SmugMug with respect to one's list of albums.

Work around Lua's 'constant table overflow' error


Added the PF filter to turn typographic fractions into plain-ASCII fractions.


Updates for Lr10

Added the SpeedKnots token.

Worked around an "unknown key captureTime" error.

Added the {PlusCode} and {GeoHash} tokens.


More debug logging for bad responses from SmugMug.


Handle the "All Except Camera & Camera Raw Info" metadata option WRT geoprivacy.

Work around a Windows bug related to canceling out of the registration dialog.

Some of the filename-related tokens could be incorrect in rare situations.

Added some extra debug logging to note whether the plugin is enabled.


So, this is the first update in a year, and it includes a bunch of fixes that I would have liked to release along the way, but I've been stuck in SmugMug limbo. There's a bug on their side that causes republished photos to lose their title, which is a big deal for some users (especially professional photographers using SmugMug to present to clents), so I've been trying to work with SmugMug on a solution or at least a workaround, but getting a response from SmugMug is like pulling teeth. It's now been more than half a year of repeated messages via various methods, but no response. I guess I and Lightroom are small potatos for them, so they just don't care? I don't know. They were great to work with for a decade, until a year ago. In any case, the plugin has been in a state of in-progress construction for the last year. But now with Lr9, I have to push out a new version, so I think I've buttoned things up enough to get things to work, so here we are.

Updates for Lr9.

Added the LensInfo template token.

Updated the Exposure token to allow customization.

More token work: added {Urls}, and updated {ISO} and {Copyright} to allow customization.

Added the {RelativeFolder} token.

Fixed the SST1 and SST2 tokens.

Fixed a problem with the SpeedKPH token.

Finally figured out the “Assertion failed: packed” error.

Added TempC and TempF to the template tokens that my plugins understand.

Added the TempC and TempF tokens.

Updated the keyword-related tokens to accept standard filters.

Work around a bug that sometimes causes plugins to be disabled when starting Lightroom via clicking on a catalog file.

Fix an "Unknown key: captureTime" crash.

Added the GPSCoords token.

Fixed a problem related to template tokens and photos without capture times.

Added functions uc(), ucFirst(), lc(), and lcFirst() to the LUA token.

Updated the PublishCollectionName token (and CollectionNames and CollectionFullNames) to remove the MIRROR: prefix from the name that mirrored collections within my Collection Publisher plugin automatically get.


Finally got the "resend metadata" functionality put back. Sorry for the delay.

Trying a workaround for the inability to update a title. It seems that when the title is updated when a new image is sent, a bug at SmugMug causes the title to be reverted back a few seconds later. I reported these details to SmugMug months ago, but still no fix. However, I suddenly had the bright idea to simply resend the title after a short pause, and that seems to work. No idea why I didn't think of this fairly-obvious workaround sooner.

Added the PEOPLE variable to the LUA token.


When not logged in, make it more clear what you're not logged into, and how to fix it.

Properly handle folders with more than 200 albums.

Updated the alphabetical sort to be "sorta-smart alphabetical sort", whereby names that differ only by a number are sorted numerically. For example, "album2" properly falls between "album1" and "album3", but "album20" falls after. The former straight-up alphabetical sort put "album20" before "album3", which is ugly and unpractical.


Created a way to completely disable the fetching of photo comments from SmugMug. Lightroom normally does this for every photo in a publish collection after every publish operation, and that overhead can be significant if you have many photos in your collection. If you never care about photo comments, you can now visit the Plugin Manager to completely disable the fetching and the overhead.


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.

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

Added hierarchical options to the Keywords token.


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


Added some extra debug logging.


Properly handle album names with double quotes in them.


Fail more gracefully if the user tries to use an auto destination, which this plugin used to support but at the moment doesn't yet have that functionally back after the big API fiasco.


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

Sometimes Lightroom loses the "Visit At... " link for a publish collection; dig harder to come up with it anyway.


Fixed (I hope) that users with large numbers of albums/folders weren't getting them all.

Better defense against corrupt login credentials.

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


Try to work around a SmugMug issue with updating metadata.


Re-added the ability to create galleries from within the plugin.

Supporting SmugMug's beta API now requires Lr4 or later.


Uploads failed if the photo had an "Altitude" below sea level, or of a fractional meters above sea level. SmugMug doesn't support that.


Yup, the workaround worked in the test case; rolling it out to the rest of the plugin.


Try to work around a bug at SmugMug.


Try to avoid having unexpectedly-long error messages create too-big a dialog.


Update to fix a bug related to improper documentation at SmugMug.


Publish wasn't updating metadata along with the image. Now it's updating all but the Title, which is being a bit stubborn. I'll continue to try to figure that out, but wanted to make this new version available first.


Handle hierarchical albums names again, but this time correctly.


Didn't work properly when you have more than 50 albums; now it does.


Fixed a gallery-list-refresh bug, and added recently-created as an album sort.


Handle hierarchical albums names again.


Switch to using SmugMug's beta APIs.

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.


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


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

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


Oops, more Lr7 stuff.


Updates for Lr7.


Better handle some character-encoding issues related to template tokens.

Allow the "If Exists" feature of template tokns 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 the following tokens to the template tokens that my plugins understand: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum, ISO8601Date


Oops, yesterday's update caused all photos sent to Twitter to be marked as sensitive.


Retooled to use a new Twitter API, allowing photos not to take up any characters in a tweet.

Switch the log-sending mechanism to https.


SmugMug servers seem to drop requests from time to time, and there's little the plugin can do but report that it got no reply, and suggest the upload be tried again later.


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.

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.


Fixed an error introduced in the previous update.


Add some debug logging for the photo-association feature.

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

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


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.

Updated Twitter support to better count lengths of tweets that include URLs.

Added ChildOf and DescendantOf filters to the {Keywords} and {KeywordsAll} template tokens.

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

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


Moved all SmugMug API interaction to HTTPS.

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


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.

UI fix for OSX 10.9


Photos previously associated manually couldn't have new metadata resent to SmugMug.


Fixed an assert-failure bug that could happen when editing a collection's settings.


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.


Added support for the {People} template token, which works in conjunction with my People Support plugin to automatically include in upload captions and the like the names and/or ages of people in a photo.

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.


Resending the Caption metadata somehow got broken.

Handle another new URL format in the Plugin-Extras manual-association dialog. (Special thanks to SmugMug engineering for extra support here.)


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

The Plugin-Extras dialog to resend metadata could allow the [Resend] button to be pressed when no metadata was selected, resulting in confusion.


Added an "Export Location Override" section to the Publishing Manager dialog (when editing an existing publish service) that allows you to change the Export Location. I don't know why Adobe doesn't let you change it... it seems arbitrary.

Add a help dialog to the publish-services edit dialog to make it clear how to delete a publish-services collection.

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

Better debug logging of Twitter interaction.

Very long tweet text could break the dialog display.

Don't allow expert when we know ahead of time that the tweet is too long.

If twitter rejects a tweet (e.g. because it's too large), show the tweet and offer to allow the user to edit/resend at

When associating a Lr image to a SmugMug image manually, incorporate the actual posted time to SmugMug as the upload time in the photo history in Lr. Also, recognize SmugMug's apparently-new URL format.

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

Registration was broken on Lr2

20141019.296 Windows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.
20141015.295 Some extra debug logging for a Publish problem.
20141010.294 Better error reporting with the visit-collection item in Publish.
20140923.293 Added the LrMD5, LrLocalization, LrSystemInfo, and LrMath packages to the {LUA} template token.
20140922.292 When deleting from a publish collection, properly maintain the 'Uploaded to...' metadata field.
20140902.291 New build system

Updated the Twitter support to allow my plugins' template tokens in the tweet text.

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

20140731.289 Registration fix for Lr5.6
20140729.288 Previous updates broke support on Lightroom 2
20140720.287 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.284 Sigh, had a bug in the Creative-Cloud support.

Now supports Lr5.5+ Creative-Cloud Installs.

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

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

20140611.279 The plugin wasn't properly reporting SmugMug errors to the user when a gallery-creation attempt failed at SmugMug.

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

Set up the ability to reauthenticate to your SmugMug account from the Publishing Manager dialog.

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


Fixed a bug in the "smoother revalidation" stuff recently added.


A workaround for a SmugMug bug related to newlines in captions wasn't working around as much as it should.


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

Fixed a sublocation-related bug in the new geo-privacy stuff.


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

Added the "Recent SmugMug Comment" custom metadata item, which holds the date of the most recent comment for a Published photo, in YYYY-MM-DD format. While in the "Published Photos" section of the Library Grid, you can set the Filter to "Recent SmugMug Comment" and then scroll down to the end to see the most recent dates, and via that see the most-recently commented photos. It's a bit unelegant, but it's the best I can think of within the severe limits of Lightroom's plugin infrastructure.


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.

Made the "Enable mapping features" option in the album-create dialog actually work.

If you republish a photo mapped to a location newly made private, the location coordinates will be removed at SmugMug.

SmugMug doesn't allow a third-party app like this plugin to update an image's Title (even though they do allow the Caption to be updated). I suppose crippling third-party apps guides folks toward their own tools? No idea why it's this way. I'd hoped it would get fixed, but I can't even get a response from them, so I've gone ahead and removed the Title from the resend-metadata dialog.


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.


A complete overhaul of the "Associate Images Automatically" code (in File > Plugin Extras > SmugMug Extras). It's still a fragile process, but it might work a bit better now.

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.


Gave the Publishing Manager UI some attention on Windows.

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

20130926.267 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.

20130831.264 The "Associate Images Automatically" feature can now be limited to specific photos in Lightroom, and specific galleries at SmugMug.

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


(No update for SmugMug's redesign, sorry; waiting on API updates from SmugMug)

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. Moved the its dialog section to a more-logical place in the order.

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


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

20130629.260 Added an error report to aid in debugging why publish association might fail.
20130613.259 Better support for plugin revalidation.
20130612.258 Creating a new publish album could sometimes fail
20130611.257 Sigh, previous update for Lr5 broke things for the Lr5 beta.
20130611.256 Yet another Lr5 update
20130610.255 Better logging to try to understand catalog-write-access contention under Lightroom's hood
20130524.254 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.252 When creating a publish collection from the context menu, respect the publish service's flat vs. hierarchical naming setting.
20130501.251 Update for Lr5
20130412.250 Fix to the Twitter fix.

Can now have Publish collections renamed to match album names changed at SmugMug.

Sigh, Twitter yet again made an unannounced undocumented change to their API that immediately breaks apps that have worked for years, and doesn't even bother alerting developers after the fact. Lord knows how many developers wasted how many hours trying to debug something that should have been announced on the developer's blog. Days later, it's still not announced there. Twitter is not worse than Facebook, but seems to be trying.


SmugMug seems to have a bug that omits the proper reading of geoencoded locations on some uploaded images, so the plugin now offers the ability to manually send location data.


Export could crash if a too-big-for-the-remote-service video upload was attempted.

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.245 Small fix for Lr2
20130209.244 Update to handle new Twitter url-length settings.
20130206.243 Update the Twitter-related code to handle their new API. Their old API goes away next month.

Added the ability to use "automatic destinations" (the naming of target galleries based upon image metadata) in Publish. It's been in Export for years (as illustrated in this 2008 article on backing up), and you must create the destination presets from Export, but you can now access them in Publish.

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.

A lot of work on the upload datapath, making it more efficient and restoring the ability to retry the attempt on certain errors.

20121203.241 Add a link to the FAQ for the "missing destination cookies" error.
20121112.240 When bailing due to a Windows networking limitation, note the image being processed in the error message.
20121020.239 A recent optimization for Lr4 broke support for Lr2.
20121017.238 Plugin was blocking export due to DPX-video format in some cases where Lightroom didn't allow the format to be changed.
20121014.237 Added a help dialog when encountering the mysterious 'handle in the wrong state' error.
20121010.236 Fixed Twitter authentication.

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.


Added the ability to create new galleries directly from the Publish Service context menu.

Disallow DPX-format video export, since that totally breaks things.


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.

Bail if a network request is too long for Windows.


Twitter support now allows suppressing "Private" geoencoded locations in Lr4.1+

20120607.228 Very slow uploads of very large files 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, but from Lr4.1 you can easily upload up to SmugMug's maximums.

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.

In Lr4.1 proper (the actual Lr4.1, not the 4.1RCs), the plugin can now know whether a photo's location has been marked as private, so the plugin can now respond to that and exclude the geoencoded location when resending image metadata (via the Plugin-Extras dialog).

Update to handle the Mac App Store version of Lightroom.

20120508.226 Yikes, Lr2 registrations were broken again.

Tweak for Lr4.1RC2.

Fixed the “photo too large to tweet” dialog message, which had been all garbled up.


In prior versions the plugin would explicitly send a geoencoded location along with the image, but with this update it no longer does this in Lr4 because in Lr4 we're ensured that the location is embedded within the image metadata if the user wants it there, and SmugMug will pick it up from that. If the user doesn't want it there (such as having stripped it via a private-location setting), SmugMug won't pick it up and all is good.

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.223 Update to handle 4.1RC
20120327.222 More graceful handling of videos whose pixel size is not known.

Update to the debug logging to better track down timing issues that might arise.

New phat upload limit at SmugMug.


More for Lr4, and a tweak to the large-upload warning.


Lots more preparation for Lr4 (but still works in Lr2 and Lr3).

Lightroom's internal infrastructure doesn't handle large uploads well, and will most likely crash when trying to upload huge videos, so I've not added a warning and the ability for the user to decide when it kicks in.

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.

20120221.218 Gallery-create button was sometimes getting lopped off in the Export Dialog.

Discovered why "metadata that triggers a republish" wasn't reliable, and fixed it.

Attempt to prepare for changes Twitter has announced will take place in how they return information about server errors.

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

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.

Added the {AspectRatio} token to the token templates understood by the plugin, and added the Length=num filter.

20120114.216 More tweaks for Lr4b

Redid the upload code to take advantage of a more efficient upload method that SmugMug added sometime since I first wrote the plugin. This should, in theory, allow the upload of larger videos without the plugin running into memory problems.

Updated limits to SmugVault file size to reflect recent changes at SmugMug.

Removed the “Re-mark as Published” button from the plugin-extras dialog in Lr4, because Lr4 now supports this natively.

Moved the Twitter code over to a new style of Twitter authentication, in hopes that it cures the authentication problems some people have been having.

Moved all access of Twitter to HTTPS.

Removed an obsolete reference to from the Twitter help dialog.

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


Better error handling for video export, and for when images/videos exceed upload limits.

Warn about the need to update the list of albums if it's not been updated for a long time.

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.

Enabled export snapshot creation in Publish.


Updated how the Manual-association dialog is sized.

Had issues with the registration button sometimes not showing.


Include the account id (in addition to the full name that's already there) in the Publishing Manager login section, to allow multiple accounts associated with the same real name to be easily differentiated.

Reporting some errors can create a huge dialog box that can be difficult to close on OSX, so this update adds a [X] button in the upper right of the dialogs.

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

Fix an "attempt to concatenate field 'user_id_string'" error that pops up at rare times.

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.

20111008.211 Publish repopulation could fail with write-gate timeouts.
20111004.210 Plugin would crash in some cases while trying to process Twitter-related settings.
20110925.209 Handle errors more gracefully when attempting to update online comments for photos that no longer exist.

Some internal optimizations to handle large gallery sets.

Added {PluginProperty} to the template tokens used by my plugins.


Added the ability to include a photo when issuing a tweet via Twitter.

Gave the Twitter tweet input UI some attention.

Twitter automatically replaces URLs with their own urls, and the tweet-text character-counter now takes that into account, so pasting in urls of any length now "costs" a fixed amount (currently 19 characters for an HTTP url; 20 characters for an HTTPS url). The plugin no longer uses

Made it so that hitting ENTER while entering a tweet does not actually launch the export. This is a maddeningly-frustrating aspect of the Lightroom plugin infrastructure, but I've worked around it in a way that seems to work.

Fixed "attempt to compare nil with number" error that some users might have gotten in Publish.

20110729.206 The 'refresh list' button was missing from the upload-destination list when it was configured to be a popup menu.
20110712.205 Had a minor plugin-crashing boo-boo in the previous update
20110711.204 Really long captions could cause a stack overflow.
20110708.203 Fix the "Export:663" error some have gotten.
20110706.202 Still struggling with catalog-access issues that seemed to have materialized out of the blue (with a bug in Lr3.4??). This update addresses creating a new publish collection.

The manual-association dialog was too big for some screens... now it auto-adjusts depending on the screen size.

More on the catalog-access errors that some are getting with Lr3.

20110703.200 For Lr2, fixes a 'must be called inside withReadAccessDo' error I'd recently introduced. For Lr3, tries to address a similar error that seems to pop up in rare cases.

Better handle long album names by truncating at the beginning with '...', and having the tooltip be the full name.


Fixing some problems with Lr2 that the comment-refresh thing the other caused.


Fixed a bug that caused the export destination to not properly refresh in response to selecting a preset in the export dialog.

Added a new section to the Publish Service settings dialog, on whether to refresh remote comments (at SmugMug back into Lightroom) automatically or only manually.

Fixed a bug in how some export errors are reported.

Be more robust to errors during the gallery-creation process.


Better reporting when SmugMug is in read-only maintenance mode.

Wasn't properly issuing an error message when used with Lr3.0 and Lr3.2.


Some users were getting "invalid login" when uploading the first time after a long period of inactivity.


Fixed some plugin-crash asserts that some new users might get.

Added "select all" button to Publish collection list.

20110329.193 Added the ability to import data from Adobe's SmugMug plugin, for users who have invested uploads with it but want to give mine a try. Select the images you care about (likely images in the Adobe SmugMug publish service, or just all images in your catalog) and invoke File > SmugMug Extras > Import From Adobe's SmugMug Plugin This has no effect on Adobe's plugin or your data in it... it just performs the "Associate" step noted here. Then, in the Publishing Manager with my SmugMug plugin, you can “populate” (or “repopulate”) the SmugMug galleries represented in the Publish Service in my plugin.
20110329.192 Oops, the button to refresh the list of galleries had inadvertently disappeared.

Added the ability to sort the album list in the Publishing Manger

Previous build was broken under Lr2, and some Lr3 installs.


Added the ability to create new SmugMug galleries from within the publish manager.

Added support for uploading videos.

Added the ability to select which metadata items cause a Publish republish.

The list of upload destinations was sometimes getting cut off.

20110227.188 Still trying to get the manual association stuff working with custom domains.
20110226.187 Turns out that with the manual association, using a url with capitalization in the hostname breaks things, so now the hostname is forcibly downcased. If you'd manually associated urls with hostnames that include upper case, you'll have to redo them, sorry.
20110225.186 Repopulation broke in one of the recent updates... fixed. Also added some notes to remind that "association" merely tells Lightroom where an image is at SmugMug; if you want the image to magically appear in a Publish Collection, you must "repopulate" in the Publishing Manager.

Giving a try to a manual option to associate images already at SmugMug with catalog photos. See “Associate Images Manually“ in the Plugin-Extras dialog (“File > Plugin Extras > SmugMug Extras”).

Also giving a shot at more support for pro photographers with an “Import Client Favorites from SmugMug” button on the plugin-extras dialog. This taps into their Pro-only Event Marketing stuff, whereby a client can “favorite” photos in a special (possibly private) event gallery: a Lightroom collection is created with the favorited photos. I'd like to hear whether anyone finds this useful.

Removed from the upload-destination list any gallery in the “Event Favorites” and “My SmugMug Creations” categories, since it never makes sense to upload new photos to them directly.

Added a progress dialog to the “Re-mark as Published” operation, so that it can be canceled, and to make it clear that something is going on under the hood.

Fixed a bug whereby one couldn't export via preset to an account different from the currently-logged in account.


Added “Re-Mark as Published” to the Plugin-Extras dialog (“File > Plugin Extras > SmugMug Extras”). If you have published photos in the “Modified Photos to Re-Publish” grid segment, this moves them back to “Published Photos” without actually uploading anything to SmugMug. You might use this after making what you know to be a metadata-only change that won't affect how the image is shown at SmugMug.


Added Twitter support to Publish.

Fixed a problem such that long album names caused buttons to become inaccessible in the export dialog.

Not sure what happened to the export dialog since I last checked it in Windows, but it was in need of some UI love.


This version no longer works in Lr3.0 and Lr3.2 because many bugs have been fixed in Lr3.3: if you're using Lr3.0 or Lr3.2, please visit Lightroom's Help > Check for Updates to download the free update from Adobe. (The plugin also continues to work in Lr2.)

Added {CroppedWidth} and {CroppedHeight} to the template tokens used by my plugins.

Add a note of instruction to handle a (rare) situation where one needs to reauthenticate in the normal Export Dialog in order to get a Publish Service working again.

20101217.181 Updated Twitter support for Twitter's new API endpoints

Added support for photo comments in Publish.

Fixed a crash sometimes encountered while updating remote-account data in the plugin.

20101116.179 Quiet an errant error dialog that popped up (but didn't otherwise bother anything) while creating a new publish service.

Check whether galleries at SmugMug have been renamed from when publish-service collections were created, and prompt the user with a note that the renaming can be incorporated into Lightroom by enabling the “Forcefully rename current collections” option.

Replaced an ugly debug message that popped up when the plugin detected that a publish-service collection's related gallery at SmugMug has been removed from SmugMug, with a more user-friendly message.


Publish was sometimes getting stuck in a 'not logged in' state, if you hadn't refreshed your account data in the plugin for too long a time. Not sure why I might have built it that way, but I took off the time limit so now it shouldn't get stuck anymore. Wish I understood why I'd put it in in the first place, though. )-:

Warn about the loss of metadata if the “resize to megapixels” option is used.

Fixes “Spec:343: attempt to index field '?' (a nil value)” error some were getting

20100829.176 Made the revalidation process much simpler, doing away with the silly need for a revalidation file.
20100820.175 Discovered a bug in my plugin build system that caused horribly difficult-to-track-down errors in one plugin, so am pushing out rebuilt versions of all plugins just in case.

Updated SmugMug logo and branding at their request.

Added code to allow plugin revalidation after having been locked due to a bad Lightroom serial number.


Added an interactive filter to the gallery list in Publish; it'll show up if there are more than 10 galleries. Only galleries whose names match all the (space-separated) terms in the filter are shown.

Added the {KeywordsAll} template tag.

A few users found some photos to always be “stuck” as Modified photos in a Publish collection. I'm still not 100% what might be going on and can't replicate the issue myself, but this version of the plugin tries some things to hopefully alleviate the problem.

20100721.172 Arrgh, the whole send-or-don't-resend metadata thing was ridiculous, so I redid it all. Exports with publish always resend metadata (keywords, captions, geoencoding), and now with regular exports you can choose whether to resend metadata.
20100720.171 Caption wasn't getting updated during a re-publish.
20100717.170 During repopulation and association, I wasn't taking into account SmugMug Smart Galleries or collected photos. Do now.
20100715.169 There was a bug on Windows that caused the warning about potentially-excessive JPEG quality settings to lock up Lightroom for an indeterminate amount of time. Only way I could fix it was to move the warning to the metadata management section (where it doesn't belong as much as it doesn't belong where it was before, but Lightroom doesn't let me put it where it should go, next to the jpeg-quality slider). This also allowed me to put it back into Publish.
20100715.168 Yikes, the JPEG-quality thing I added didn't play well with Publish. Removing it from Publish 'till I figure out a better way.

Fixed a few problems with the new Refresh Remote Urls”, such as one that caused it to not play nicely with the support mentioned in the note 20100708.166 (that was pushed after 20100708.166 went live, so I wasn't able to actually test it). If it worked for you the first time there's no need to rerun it, but if it had failed with some error, this might fix it.

The plugin has long remembered your export settings from SmugMug export session to SmugMug export session, overriding Lightroom's desire to always bring your recent export settings from non-SmugMug exports. However, I had neglected to update the list of settings for Lightroom 3, so this is now corrected, and so the plugin now also remembers watermarking settings, file-renaming and photo-stacking, and DNG compatibility.

Clarified that the “delete all copies previously uploaded” option applies to, well, all copies previously uploaded, as opposed to some magic subset of copies previously uploaded that you might have fixed in mind.

Added a warning that blocks export when the JPEG quality is set needlessly high, referring users to my Analysis of Lightroom JPEG Export Quality Settings. You can bypass the warning if you like, and hide it forever, of course.


Did a lot of work to revamp the ability to tie in photos already at SmugMug into your Lightroom catalog (and hence to populate a SmugMug publish service), working around bugs in Lightroom, and working in new knowledge of to best work with SmugMug. See the new publish docs for details.

One warning, though. Ostensibly the new “Refresh Remote Urls” step will notice when a photo has been deleted at SmugMug and remove its information from the catalog (and, if the photo is part of a Publish Service, mark it to be republished), but support for this required an update from SmugMug, and that update isn't scheduled to go live until sometime on the evening of the US West coast's July 9, so if you give this Refresh bit a whirl before then, give it another run on July 10th.

Fixed a bug with the auto-destination dialog.

Egads, the list of albums in the Publish Service dialog was not sorted.


Discovered some rare and complex bugs related to collection renaming, and (I hope) fixed them.

Be more graceful when SmugMug or an intermediary web proxy returns a web page when the plugin is expecting data.


Finally pushing the new version out of plugin beta (where it has been for a couple of weeks), after eight months of oft-painful development. It's extremely complex under the hood, so now that it's getting wider user and additional bugs are shaken out, there will likely be frequent updates... please keep an eye on the version history when you update.

Here are the update details from when it was in beta:

20100614.154 — This version can be registered in Lightroom 3. It can run in Lightroom 2 or Lightroom 3; it does not work in the Lr3 betas.

It uses my new registration system when run on Lightroom 3, which avoids some of the silly issues of the old one. Please take care to note the details on the registration page: use of this version (or later) of the plugin in Lightroom 3 requires a new registration code, even if you had registered some older version of the plugin.

Lots and lots of changes under the hood, including publish support in Lr3.

Added some options to the Twitter <dest options> special code: add simple as an option to have it become just the name without quotes or other adornment; add short to par down the gallery name to just the leaf name. They can be combined, e.g. <dest short simple>. Or, use <dest id> for just the photoset id.

Added some stuff to the LUA template token: a version of the standard os table (with date, difftime, getenv, es and time), and the standard Lightroom SDK tables LrDate, LrPathUtils, and LrStringUtils). Also added a new functions TBL() (returns an empty table), ne(item) (returns true if the item is not empty), and nb(item) (returns true if the item is not blank; " " is blank but not empty, while "" and nil are both blank and empty).

20100615.155 — Handle custom domains during image-association.

20100621.156 — The image association stuff was broken. Still will be for some users... added warning about Lr catalog timeout bug.

20100624.157 — Some bug fixes and some great new debug logging.

20100624.158 — Discovered a nasty build bug; pushing a new version in case it affects this plugin.

20100625.159 — Yikes, shaking out some more build issues.

20100628.160 — Had broken auto destinations.

20100629.161 — Various fixes, including handling virtual copies (created on images uploaded with this version or later). Also fixed smart published collections, which became broken a version or two back.

20100629.162 — Lots of changes. Bolstered the separation between Publish and non-Publish exports.

20100629.163 — Lots more changes, especially related to auto destinations and replacing images. Identified that “Import Smart Collection Settings” does not work for Publish, and corrupts things. Don't use it.


Removed some LR3-related debugging stuff that's showing up now that LR3b2 is out. All plugin-related things should work in LR3b2 except Publish, which will likely change drasticly between now and when LR3 is actually released.

New when running LR3b2 is a new “Snapshots on Export” section, which is basically a built-in version of this new plugin.

Added new tokens to the templates used in my plugins: IfKeyword and IfExportedKeyword are supported for LR2 and later. For LR3b1 and later the very powerful LUA token, and for LR3b2 and later, a bunch of new localized date/time tokens. See the templates page for details.


Wholesale changes that attempt to honor the user's locale settings for numeric display (e.g. Europeans writing 3,14156 for pi). I've probably missed some spots, so let me know if you find some.

Some small UI cleanup in the create-album section.

Added three new tokens to the templates that my plugins use, CameraName, IfGeoencoded, and Keywords. See the templates page for details.


Finally figured out the album-creation stuff with respect to quick settings... quick settings will now actually take precedence.

Fixed the LR3b publish “deletePhotosFromRemoteCollection” issue, but please note that all bets are off with Publish and things will certainly change in the future in ways I can't predict... current Publish collections may cease to work. LR3b is a beta.

20100219.149 Fixes a “disappearing export dialog sections” bug that recently surfaced.
20100216.148 Oops, somewhere along the lines broke the SmugVault-status reporting. Fixed.
20100211.147 More support for users with custom domains.

Yikes, broke exports for LR3b in the previous push, sorry! Fixed.

Changed the semantics of the Places filter (in the tokens understood by the preset templates of my plugins) in two ways: if applied to a string value rather than a number, it works on the first number found in the string. Another is that you can now use something like Places=-1 to round to the 10s, Places=-2 to round to the 100s, etc.


Hacked in a way to create a gallery on the fly during export... it's now an option in the list of export destinations.

Caption presets weren't getting saved across LR restarts in some cases (for definitions of “some” meaning “all”, sorry).


Oops, the upload date/time custom metadata items were swapped. Doh! With this new version, each catalog will auto-update to correct the issue the first time it's loaded. The format used for the date and time are restricted in LR2 to whatever I've chosen, but the first time you load the plugin in the real LR3 (whenever it comes out), the catalog will update itself again to write the dates/times in your user-customized, localized format.

Fixed the {GPSAltitude} template token so that it should now actually work.


The whole do/don't send keywords thing was sort of kludgy, so I redid the UI to make what's happening more apparent.

Lots of updates to the Twitter support:

  • Better tweet-size estimates in line with recent processing changes at Twitter.
  • Added <caption> tag to the tweet-text template (it use the caption from the first image exported).
  • Added the ability to geotag tweets with a static location, or with the geoencoded location of the first image. A static location can be specified with a latitude, longitude pair, a geohash, or a url from a mapping service like Google, Yahoo, or Bing. On the encoded side, geodata embedded in the image can be used, or the geodata maintained by my geoencoding-support plugin).
  • You can now configure the plugin to shorten URLs via your own account, in case you want to track click-throughs yourself.
  • You can now specify that you want all URLs shortened. The default remains to shorten them only when required to get under the 140-character limit. You might, for example, want to forcefully shorten them all in conjunction with your own account, for click-through tracking.
  • The plugin now goes to great lengths to report whether a tweet is accepted by Twitter. In their infinite wisdom, the folks at Twitter suddenly decided to start ignoring long tweets instead of truncating them, but (here's the brilliant part) they still report back to the plugin that the tweet was successful. Sigh.

    Furthermore, they might also ignore (yet report as successful) other kinds of tweets, such as those that are a repeat of a “too recent” tweet. Those crafty folks at Twitter implemented these changes more than three months ago, but in a truly cunning move, they still detail the old behavior in their API documentation, making no mention whatsoever about how their service now actually works.

    Only by doing a bunch of extra work can the plugin detect whether a tweet was accepted or ignored. If ignored, there's no way for the plugin to know why, so at this point it merely reports that the tweet didn't go through.


Fixed the sub-category processing. SmugMug pushed an XML change the other day that my stuff should have handled, but due to a mistake on my part, it didn't. Does now.

Also, by request from SmugMug, the plugin also now sends keywords in a different format than earlier versions. Let me know if you notice any problems.


Completely changed how the one-click upgrade applies the newly-downloaded zip file, in the hopes that it'll work for more people. Rather than unzipping over the old copy, it now unzips to a temporary folder, then moves the old folder out of the way and the new folder into place. Prior versions' folders are now maintained (with the version number in the folder) in case you want to revert a version; you may want to clear them out from time to time. Of course, it won't take affect until you try to upgrade after having upgraded to or beyond this version.

Added the ability to control whether to send a Twitter tweet with photo keywords.

Caught a few more LR3b issues.

SmugMug seems to have fixed the upload-timeout bug that plagued the service last year, so removing some warnings related to that.

20100118.140 Added two new template tokens, {DaysSince} and {PhotoDaysSince}. They're a bit tricky, but could be useful.
20091230.139 Added a “Repopulate URLs” button to the Plugin Extras dialog, to allow correcting for the bug fixed in the previous push, and to correct for photos uploaded with old versions of the plugin.
20091230.138 Sigh, it seems 30,000+ lines of code are getting to be hard to keep track of, and I unintentionally removed the exported url from the custom metadata (from the 'At SmugMug' item) a few versions back. This should fix it, at least for images uploaded from now.
20091230.137 Replaced the “quick setting” item in the Auto Destination dialog... it had gotten removed inadvertently sometime in the past few updates. Sorry 'bout that.

Figured out when the “AgExportSession.photoExportSequence is obsolete; use photoIdExportSequence instead” error was coming from. A bug in LR3 beta. I had to disable the export filter for the beta to avoid this.

Fixed some of the album-creation stuff that was broken by mistake in a push earlier this week.

20091215.135 Allow changing the font size of list of upload destinations. Those with long names might want to choose a smaller size to allow more text to fit on each row.
20091214.134 Added the special {NOJOINERS} token to the Template Language understood by my plugins.
20091209.133 A few small fixes for LR3b, and tweaks to the extra-keywords stuff do tidy up repeated keywords in the display.
20091205.132 Minor internal debugging tweaks.
20091126.131 Fixed a bug introduced in the previous version, that caused uploads to fail if image filenames happened to have certain (unlucky in this case) characters.
20091124.130 Implemented a change requested by SmugMug that may help speed up uploads. Also reworked the change pushed in .115, putting back the color-space selector but disabling export if it's not sRGB (unless you're sending non-JPG to SmugVault, of course). The end effect is that you still can't send sRGB JPGs, but now users can see the color-space selector and be comforted that yes, it's being sent as sRGB.
20091118.128 Added an {Altitude} item to the templates understood by the plugin. It's the numeric altitude in meters, as opposed to the {GPSAltitude} item which is a description of the altitude along the lines of 32.7 m. Also updated the Places filter so that it can be used on fields that merely begin with a number.
20091115.127 Fixed an error that prevented resending image metadata via the Plugin Extras menu.
20091111.126 Added the {#} token to the caption stuff, a number that starts at 1 with the first image exported and goes up one with each additional. Use multiple “#&$8221; to force a zero-padded number to at least that many digits. Also added some debugging stuff to help the SSH (SmugMug Support Heroes) debug the “wrong format” errors some users run into.
20091023.125 A bunch of UI fixes for LR3b, such as fixing the scrollbar and the token-examples dialog.
20091022.124 Added a first draft of some rudimentary support for Lightroom 3 Beta. See this important note about plugin support in Lightroom 3 Beta and Lightroom 3, including future plans for features and my registration system.
20091019.123 Oops, recently-created galleries are sorting as if they're the oldest due to a silly bug on my part that's fixed in this push.
20091014.122 Added “skip all”/“upload all” options to the “what to do with this oversized image?” dialog, and to the “SmugMug: Metadata Management” section of the Export Dialog.
20090921.121 Added basic SmugVault support, allowing you to upload the master raw files (and any XMP sidecar, for non-DNG raw files) along with the JPGs being exported.

Some UI tweaks earlier in the month had an unintended side effect of breaking the “choose destination at export time” feature. Sorry... fixed! Also, added some prose to make it more clear that the “create gallery” part of the choose-destination-at-export-time dialog is not part of the export process, but merely a tool placed there for the convenience of those wishing to create a new gallery just prior to exporting.

(Sorry to everyone who couldn't contact my server for the last few days... it had “issues”, that are now fixed.)

20090912.118 Add a note in the Export Dialog about what “replace” actually does. Updated the export-time “choose export destination” dialog to disallow export after a name has been entered into the create-a-new-gallery name box, to make it clear that the new-gallery-creation operation is separate from the export.
20090908.117 Fixed some keyword-related issues. First, due to a silly bug on my part, there had been an artificial limit on the number of keywords sent. Second, also due to a bug on my part, the keyword order was scrambled. The plugin now sends them in the order Lightroom provides them (which seems to be alphabetic, though it looks like SmugMug does not honor the order on display, so perhaps this was for naught).
20090907.116 Added the ability to password-protect a gallery as you create it (in the SmugMug Tools section of the dialog), and gave that section some design TLC to make it easier to use.
20090902.115 I'm back from a long trip and starting up the plugin machinery again. This is a simple update that should not affect most people: uploads of JPGs now must be in the sRGB color space. I'm pushing this change at SmugMug's direct request, because they convert everything to sRGB anyway, and they worry that this conversion could account for some delays and timeouts some users have experienced as of late.
20090723.114 Another oops, fixing an “undefined global” bug I think I introduced yesterday.
20090722.113 Oops, turns out that subcategories didn't come along with the change in version .110, so this push restores them.
20090716.112 Sigh, Twitter engineers treat developers like a bunch of twits. Twitter just made a sudden, unannounced, and undocumented change to how they allow external applications like this plugin to connect to Twitter, breaking every external application out there. If a plugin follows the Twitter documentation, it will not work. I couldn't believe Twitter engineers could be so inexperienced or hostile (which?) the first time they pulled a stunt like this, but again? This is ridiculous... are there kids running the shop over there? If they do this again, I may just yank Twitter support from the plugins... it's not worth the frustration. For the time being, this push should fix things.

Fix how I process the “wrong format” errors from SmugMug so that it makes more sense in more situations. There's still a bug at SmugMug such that they sometimes return this error when the image is simply too large (they're supposed to quietly downsize the image for you), but they're looking into it for us.

Small UI change: I now note your SmugMug account level in the top section of the Export Dialog.


Added the ability to resend metadata (caption, keywords, and geo-coordinates) for photos previously uploaded to SmugMug. See the File > Plugin-Extras > SmugMug Extras dialog.

To accommodate the metadata refresh, I had to change how I contact SmugMug (moving from their 1.2.0 API to their 1.2.2 beta API), and it's entirely possible that I missed some small change in how I must send requests or interpret results, so please send a log (with the “Send to Jeffrey” button in the upper-right of the plugin manager) if you run into anything odd....


Added colon as a joining character for the squelching stuff mentioned in the previous release.

Fixed, perhaps, an “Attempt to perform arithmetic on a nil value” error that might appear during export. (I was never able to reproduce the problem, but saw something in the code that could have caused it, so tidied that up.)


Completely rewrote how the “extra keyword to send...” line is parsed. It could sometimes be a bit wonky, especially when template tokens were used, but hopefully it's more solid now. (Hopefully I didn't just move the bugs around; it's a touchy area of code.)

Speaking of the template tokens, I added a bunch more somewhat esoteric things, filling out all the metadata items available to the plugin. Something like “Workflow Job Identifier” might not be all that useful, but if you repurpose a field with my metadata-viewer preset builder plugin, these otherwise esoteric items may prove to be useful. For example, I've relabeled the Job Identifier field as “Blog Url” in my custom view, and can now use the {JobIdentifier} token to refer to it.

I redid all the code on squelching joining characters to make more sense (I hope), and included <br> and friends (e.g. <br/>) as special joining characters that should magically do the right thing. I also added a colon as a joining character. I haven't gotten a chance to update the Templates page with these changes, but I will soon. (If you find something that doesn't seem to work, let me know with specific examples.)

Tidied up some Mac-related dialog layout problems associated with the “upload anyway” option added in the previous version.

Enhanced the one-click upgrade stuff quite a bit, now detecting ahead of time when it will fail because the plugin is installed where Lightroom can't write (if Lightroom can't write to it, it can't update itself). I also added a progress bar, and now download in smaller chunks to avoid 'out of memory' errors on the larger plugins. Do remember that this new functionality becomes available after you upgrade to or past this version, when you then upgrade with it.


Added an “upload anyway” option for when an image is too large for your SmugMug account level (too large in bytes or pixels). SmugMug lets you upload them, but it'll downsize them quietly if they exceed the limits, and you'll lose the original that you uploaded. (Your master image in Lightroom remains unchanged, of course.) The new option is at the bottom of the #8220;SmugMug: Metadata Management” section of the Export Dialog.

If that option is not enabled and an image is too large, a dialog pops up asking whether to cancel the export or skip the image. Now, it also gives you the option to upload anyway.

Added still more logging to try to figure out the upload-destination fiasco thing.

Fixed that during an upload of a single image, the progress-bar status didn't reflect when the image was being uploaded (it said “rendering...” the whole time).

Reflect that SmugVault users can now upload up to 600MB files (it had been 512MB last time I checked.)

Added a couple of defensive error checks: if SmugMug returns a “Wrong Format” error because the full image wasn't uploaded, I change the error message to the more understandable “Upload did not complete... is your Internet connection having issues?”. I also try to detect some of the weird error messages that the OS returns when a firewall blocks Lightroom from using the Internet. You'd be shocked to hear how much time I spend telling people “check your firewall and enable an exception for Lightroom...”. Hopefully this'll stem that stream.

20090616.106 Sigh, this upload-destination fiasco is a real pain. Maybe have it nailed down this time.
20090615.105 Some people are still having images uploaded to the wrong album, and I'm starting to think that it's a case of corrupt Lightroom preferences. I've looked at some logs and it seems to be a case of “this can't possibly happen” happening. I've added something in this version that kills some old information with prejudice.... if this doesn't take care of it, please send a log again (via the “Send to Jeffrey” button in the upper-right of the plugin manager), but I suspect my reply will be to ask you to blast your LR preferences file and start over.
20090614.104 Sigh, it turns out that a few days ago, Twitter suddenly changed authentication methods in a way that was guaranteed to break every strong-authentication application (such as this plugin). Sigh. This update handles the new authentication style, and includes better error reporting for the next time they pull a stunt like this.
20090611.103 It turns out, despite SmugMug's old API documentation to the contrary, album quick settings are available to all users, not just Power/Pro, so I've updated the plugin to match that. Also, better error reporting if the plugin wasn't able to contact Twitter during authentication.
20090607.102 Still trying to figure out why a small subset of users find that their uploads go to the wrong gallery, so in this push have added more debugging toward that end.
20090605.101 Oops, fixed an “Access to undefined global” error that popped up when trying to clear uploaded-to-SmugMug data via the SmugMug-Extras menu.

A few things for this 100th update of the Lightroom 2 version of this plugin....

1) Added a couple of new custom metadata fields, “SmugMug Upload Date”, and “Upload Time”. The former can be used in the Library Grid Filter to sort/select/filter by the date you uploaded to SmugMug.

Because the new custom fields mean a change to the database, the first time you load this new version, Lightroom will pop up a dialog asking “Update catalog for plug-in?” to which you'll want to answer yes (“Update”). Then a progress bar will show up and, if you have a lot of photos in your catalog that had been uploaded to SmugMug, will just sit there for potentially several minutes, looking stuck. Just let it work. For my catalog with 48,000 photos, it took about 5 minutes.

I'll add these to my Metadata-Viewer Preset Editor plugin soon, but for those maintaining their own viewer tagsets, these can be found at info.regex.lightroom.export.smugmug2.uploadDate and ....uploadTime.

2)Finally fixed the progress bar during upload.

3)Added a bunch of options to the gallery-creation stuff in the “SmugMug Tools” section of the export dialog. (If you make a variety of gallery types often, you'll probably want to make your own Quick Settings, since they override all the options here and include many other options not yet included here.) I didn't add every gallery option (there are a bazillion of them!) – I just picked the low-hanging fruit– so let me know if I missed some that are important to you.

20090602.99 Sigh, small bug fix for the new Twitter stuff.

Well, here's something new: Twitter support. It may be a bit iffy, mostly because I don't use Twitter myself, so perhaps I've missed something about the culture in which it's used, but I've added something that allows you to send a tweet after a successful upload, with a mini template language that allows you to include a photo url or destination-set url in the tweet.

The plugin uses Twitter's new strong secure authentication, so you don't even have to tell the plugin your username or password. You authenticate at Twitter and grant the plugin application permission to send tweets on your behalf.

A note to fellow developers, who will feel my pain: in order to get this strong-secure authentication support working, I had to code up SHA-1 Secure Hash computation from scratch, in pure Lua... a horrid language, I'll remind you, that has absolutely no bitwise operations, or even integer support. No masks, no bitwise xors, no way to test bits or shift words or any of that stuff. As I coded it, I felt as if I were chiseling NAND gates from rough blocks of silicon.

I felt quite the achievement once I got it working, but only then realized that I also need to code up my own HMAC-SHA1 secure signature routine. It's less involved than the original SHA-1 stuff, but again, filled with bytewise xors. Fun stuff, in a very old-school way.

This release also contains some extra logging to try to get to the bottom of a problem that a few users have reported, namely, that their uploads don't go into the galleries they specify.

20090521.97 Sorry, another quick bugfix. It seems an internal change I made to try to get around a bug in Lightroom wasn't quite ready for prime time. Hope it is now.

Fixed a “loadstring” error some users got.

You can now use the scroll wheel with the scrollable lists (such as for the gallery list)... sort of. It works while the mouse is actually hovering over the scroll bar. That's the best I can figure out so far... it's better than nothing if you're a scroll-wheel user.

Added some new token filters to the preset templates used for things like extra keywords and image captions: They're listed in the docs, but include new items like UCFirst capitalize first character of the item, or LC to lower-case the entire item. For example, if you want to include the city as an extra tag, but prefer your tags to be all lower case, you might use {City:LC} in the extra-tag dialog.

20090519.95 Fixed an album-creation bug I introduced in a previous version.
20090518.94 Somewhere along the way the plugin stopped updating the progress bar as it worked. I've restored it, so now you can see it inch along as the uploads complete. I also included some stuff to communicate with the next version of my Metadata Wrangler plugin help coordinate a canceled export. Unfortunately, if you cancel an export, Lightroom does not tell filters like the Metadata Wrangler, so it blindly continues trying to process images that will not show up. I've added some hooks here to help the next version of the Metadata Wrangler detect a canceled export and not complain. It's imperfect, but I'm hoping it'll help.
20090510.93 Added a link in the Plugin Manager to the plugin's update-log RSS feed.

Added items to the title/description presets: ZenfolioUrl, FlickrUrl, and PicasawebUrl. If you have previously uploaded this image to one of those sites with my plugin that uploads to those sites, you can refer to that copy of the image by reference. Using the tag alone, e.g. {ZenfolioUrl}, it becomes the raw url, or nothing if the image wasn't previously uploaded. Using a =text argument inside the tag turns it into a link with the given text, e.g.

    See the {ZenfolioUrl=photo at Zenfolio}.


    See the <a href='...'>photo at Zenfolio</a>.

if the url is known. If the url is not known, the tag is replaced with nothingness, so you might want to include a “|...” fallback section, such as:

    See the {ZenfolioUrl=photo at Zenfolio|"photo at <a href=''>my Zenfolio site</a>"}.

The entire double-quoted part after the "|" is used when what comes before ends up being empty. In this case, that double-quoted part is some text that includes a link to a Zenfolio user's home page (you'd want to put yours, of course). So, if the url isn't known, the entry becomes

    See the photo at <a href=''>my Zenfolio site</a>.
20090508.91 SmugMug has fixed the bug that I worked around in the previous version, so this undoes that workaround.
20090504.90 There's a bug in how SmugMug returns data to the plugin, or in my understanding of what's supposed to happen, that causes some accented characters in gallery names to appear as HTML entities. I rewrote how I parse the data they return, and inserted code to work around this issue (manually decoding the entities I know about). Let me know if you run into gallery names (or anything else) that doesn't display properly.
20090429.89 Fixed a bug that could potentially crashed the plugin while editing caption/title and auto-destination presets.
20090425.88 Tweaked how the plugin tries to update itself during the one-click upgrade process, to hopefully get things working for those few Windows users that have never had it work. Crossing fingers. We'll see.
20090422.87 Fixed the caption preset stuff to disallow editing of the built-in caption presets, and added a note to that effect in the preset editor. I also reset the 'None' preset to an empty value, just in case it had gotten edited in a prior version of the plugin. Sorry it took so long to get around to this fix.
20090422.86 A few minor housekeeping updates: the 'enable enhanced debugging' checkbox in the Plugin Manager now turns on logging of all web traffic. It'll be useful if I ask you to send a log, but you probably want to leave it turned off during general use. I also added an icon to the registration page to reinforce what plugin is being registered.

Corrected the photo-date related items in the preset templates to properly use the dateTimeOriginal metadata field, rather than the edit-time dateTime field. It now uses the first of the following that it finds with a value: dateTimeOriginal, dateTimeDigitized, and dateTime. This bug was reported to me long ago, but I let it slip through the cracks, sorry.

20090331.84 Added scroll-one-line arrows to the top and bottom of the scrollbars, to allow fine-grained control of scrolling very long lists. (I've been programming for almost 30 years, but this is the first time I've ever built a graphical scrolling system from scratch, so I may be a bit slow on the uptake at times 🙂 )

Turns out that there's a bug in Lightroom that causes login names to be rejected if they can't actually fit in the input box that's presented when trying to log into a second account. To get around this bug for the few who run into it, I've made the box as wide as I can... I hope it's sufficient.


Big UI changes in some areas. I've cobbled together a way to add what appears to be a real scrollbar, so I've replaced the kludgey scrolling solution I had before. It seems to work okay.

I also changed the “Token Examples” dialog from paging to use the new scroll stuff.


It seems that PayPal doesn't give everyone a “Unique Transaction ID” in the registration confirmation mail; some people get a “Receipt Number”. So, the registration dialog now accepts that as well.

I also removed the “Resolution value to record in metadata” control in the Metadata Management section. That had dated back to a time when the resolution setting was not available in the standard “Image Sizing” section of the export dialog, and I forgot to remove my custom one when the standard setting appeared. It was sort of silly having two controls for the same thing, sorry.

The resolution setting is still utterly meaningless unless you use it to actually compute the pixel size of the image (that is, if you have the “resize to” setting to something other than “pixels”). Once the image has been created, it's just a hint about how you intend it to be rendered when printed, but it has exactly zero impact on the quality that can or can't be achieved when printing.

20090310.80 I've added a popup dialog that appears the first time you install this plugin that explains how to activate it from the Export Dialog. It's currently not very “discoverable” (in UI lingo), and it leaves a lot of people befuddled. I hope this helps to stem the flow of “I can't get it to work” messages I get each day. I've begged Adobe to tweak the UI to make it more clear in the future.
20090305.79 Fixed a bug that caused the plugin to crash (and stay crashed across Lightroom restarts, even!) when deleting the caption preset that was actually chosen for the caption.
20090303.78 If there's an error calculating the automatic destination for a photo, now actually reports that error instead of just crashing
20090302.77 Fixed a bug that could cause the plugin to crash when using the File > Plugin Extras
20090228.76 Fixed a bug that caused a plugin crash if my server couldn't be reached during registration.

As per the ongoing discussion on my blog, with this version this plugin moves over to a “donationware” model, in which the plugin remains free, but registration eventually becomes required (and an eventual donation hoped for 🙂 ).

For details, see Lightroom Plugin Development: Now With Added Encouragement. (For info about what drove this decision, see What To Do When a Hobby Becomes Work?)

The plugin no longer expires, and correspondingly, I will not pay much attention to reports of bugs that have already been fixed, so please check your version and the version history before submitting bugs or feature requests.

There was a lot of internal upheaval in the code, so I expect that some boo-boos my surface. If something breaks for you with this version, please let me know, but until I fix it, feel free to revert to the previous version.

One enhancement in this release: I realized that the image caption can actually be HTML, so I now allow for that in the Export dialog.

20090219.74 Sigh, I need to slow down and test these things better before pushing them out. Sorry, it's been a tumultuous week. This version fixes a few stupid bugs stupidly introduced in the last stupid update.
20090219.73 Some UI tweaks for the multi-login feature added yesterday. More robust error reporting if an export is attempted without an Internet connection.

Feature added per request of one of the SmugMug founders: can now easily switch among multiple SmugMug accounts.


The folks at SmugMug pointed out an error in how I was uploading to their servers that might explain a “bad album id” that a couple of users have reported. Also, some UI tweaks.


Woohoo!!! Fixed the “badServerResponse” error!!!!

Wow, it was frustrating. A bunch of people kindly sent logs and network traces, and but I couldn't find a clue in them as to the cause of the problem.

However, with the help of tech-savvy Alabama-based photographer Kevin King, I was able to isolate and work around the problem.

Kevin really went the extra mile here, running network traces, sending me logs and photos and catalogs, running at least a half-dozen debug builds of the plugin and reporting back as I tried different things that might lead to a clue. Eventually one did, and Kevin confirmed a final-fix build, so here we are.

For what it's worth, there is a bug in either Lightroom or Windows related to HTTP traffic headers. I've reported it in detail to Adobe.

NOTE: The automatic upgrade may have trouble upgrading to or beyond this from a version prior to this, so if it doesn't work for you, please just blast (or rename) the old “jfriedl-smugmug.lrplugin” plugin, and download/unzip/install manually. (I wish Adobe would officially support automatic upgrade, but until then, the works-usually system I've cobbled together will have to do)


Fixed a bug on my side that on rare occasions resulted in an “invalid session id” error, and another that sometimes resulted in a “wrong format” error.

20090130.67 SmugMug was suddenly denying my plugin's API key, which (of course) caused all kinds of problems. Making it worse is that I didn't have good error checking, so the reason for the problem wasn't apparent until I dug into it. While adding better error checking, SmugMug suddenly started accepting the API key, so things seem to be working now. This build has more (better?) error checking, and so if the problem happens again, hopefully things will be more clear. One concern, though, is that perhaps I've become too aggressive on checking for error replies from SmugMug (some “errors” really aren't errors, and should be ignored), so let me know if things are not smooth.
20090129.66 Small housekeeping update for the new locales supported by Lightroom 2.3. Added more info to the debugging log when an export operation begins, to help diagnose any subsequent problems with the export.
20090126.65 The new scrollable-list stuff didn't deal with ampersands very well... things should be better now. Also added tooltips to the list items so that the full text can be read even if the display is cut short, although ampersands may appear in duplicate (or quadruplicate, depending on the OS)... it just wasn't worth the effort to get ampersands right in the tooltip.
20090126.64 Fixed a couple of spelling errors.
20090120.63 Addressed a strange error (“strange error” is a euphemism for “condition I don't fully understand”) that could cause a “photohistory: not logged in” error. I think this happened when you got logged out while uploading, but I'm not sure exactly how that could happen. I also added some extra debugging stuff to help clarify whether it's a multi-threading issue.

Okay, so I spent the entire weekend working on my own scrollable-list control from scratch, because the built-in popup menu is just not very easy to work with when one has a lot of galleries. I didn't have much to work with, and the result is a bit wonky, but it's much more usable when the list is long, so I'm throwing it out there. If you don't have a long list of export destinations, you can revert back to the original via the “configure list appearance” button. With that button you can also change how much of the list is shown at once, to suit your personal preference.

20090116.61 It turns out that the automatic upgrade stuff doesn't work if the plugin folder has been renamed from its original. That should generally not happen, but it's possible, so the plugin now checks its own location reports the issue to the user if it finds it.
20090115.60 Added more debugging-log stuff to the 'Upgrade Now' button action, to try to understand why it doesn't work for some people.
20090115.59 Added a 'click here to change the export destination' note to the masthead image, because some new users are confused how to change export destinations.
20090110.58 Added a checkbox in the Plugin Manager to turn on enhanced debugging (more stuff in the plugin's debugging log), and added a button in the same place that sends your log to me. Particularly for “the upgrade button doesn't work” and “error while uploading” type issues, this should be useful for debugging.
20090108.57 I've discovered multiple Lightroom bugs (one on Windows, two on OSX) that caused problems with captions that contained multiple lines and/or non-ASCII data. The plugin now detects captions that will cause platform-specific problems, and gets around the problem by omitting the caption during the initial upload, and then immediately setting it via a different method that actually works. I've also reported the bugs to Adobe.
20081228.56 My preset dialog (for caption presets) was a bit wonky and didn't update itself when a preset was added. Fixed that. Also, in the export dialog proper, the example text next to the preset dropdown didn't auto-expand as the preset was changed. Fixed that, too.
20081226.55 The version number had lost its way in life. Setting it straight. 20081224.* -- The “Extras” item in the File menu had stopped working. Works now. 20081223.* -- Bumping back the expiration date.
20081208.52 Fixed a problem that sometimes caused errors during login/authentication, or after logging out.
20081204.51 Try to work around a fairly rare Lightroom bug that sometimes causes large exports to fail with the note Whoa, exported image doesn't exist after waitForRender by pausing for a few seconds to see whether the image shows up. If not, then you still get the error and the export fails.
20081127.50 The counting of previous uploads (for the All/Update/New of the Upload Destination section) was not working right.
20081125.49 Another fix for a bug that had disabled plugin presets (for captions, etc.)
20081124.48 Perhaps fixed a problem whereby the “Upgrade Now” button didn't work for some Windows users. We'll see whether it works when those users upgrade from this version to whatever version is next.
20081123.47 Fixed a plugin crash when using the plugin's built-in preset system.
20081122.46 No problems from the upheaval recently, so pushing back the expiration a bit.
20081117.45 Oops, wouldn't let you log in / authenticate if you weren't already. Doh. Fixed.
20081117.44 No new functionality in this version, but a huge upheaval in the underlying code to repair an unfortunate design choice I made early on in the development that had limiting consequences I'd not foreseen. There are likely bugs introduced in this version, and as such, it has a short expiration date to encourage updates as those bugs are reported and fixed. If you do run into an error, please send (via email) the log referenced in the upper-right of the Plugin Manager. Thanks.
20081114.43 Fixed a “attempt to compare string with number” bug.
20081113.42 Fixed yet another list-of-upload-destinations bug. There are sure a lot of edge cases here.
20081111.41 Fixed a crash that happened sometimes when there are not yet any preexisting destinations at SmugMug.
20081104.40 Perhaps squelch a spurious error dialog
20081103.39 I don't know what's causing the slew of networking problems that have been reported, but I've gone ahead and added a retry mechanism. It'll retry operations that failed due to network problems indefinitely, but you can cancel out of the retrys if you like. If the problems are some kind of flakiness on the machine (somehow introduced in LR2.1???) this may allow operations to complete.
20081031.38 Now works properly with the shadow GPS data maintained by my geoencoding plugin.
20081027.37 Added some extra debugging code to try to track down some of the asserts that a few users have been getting.
20081024.36 Added an option to not add Lightroom keywords as metadata when uploading images. This allows you to not send any keywords if you also have them stripped from the image itself, such as when enabling the “Minimize Embedded Metadata” option, or when stripping keywords with my Metadata Wrangler. This applies only to keywords in the Lightroom library that are marked for export; those not marked for export are never sent. (Also related, recall that due to a Lightroom bug, images in a catalog upgraded from Lightroom 1.x with Lightroom 2.0 lost the ability to export keywords until a fix is applied.)
20081022.35 Addressed (and perhaps even fixed) a bug introduced in the previous build.

The “replace” functionality now works even when the target image had been deleted at SmugMug. There is a bug with the SmugMug API that was causing this to fail, but despite that bug still existing, I now implement the replace functionality using a different API method that SmugMug added at my request. (If you use the “replace” mechanism, give SmugMug some love for having done this.)

Small update so that a stuck background version check does not disable the plugin.

Added the ability to put the “select at time of export” item at the top of the destination list, as had been requested a few times.

Added some items to the template language that had inexplicably been missing: {HH}, {MIN}, {hh}, {min}, {ss}.

20081015.33 Internal change to the user-agent string that the plugin sends when uploading, to better conform to web standards. Added back the ability to set the print size via DPI and inches/cm. I think it's more confusing than anything (because it has nothing to do with what size something gets printed at unless you take care to set the printer DPI the same), but someone asked for it and I should really leave it up to the user. The plugin now allows you to use any color space registered on your computer when generating images to upload. I don't think this will be useful for very many people, but perhaps it might be a benefit when combined with some printing services(?)

I created a “Metadata Management” section in the dialog, and moved some things into that from other sections.

Fixed a race condition that sometimes caused the export destination to not appear in the synopsis of a closed “Upload Destination” dialog section.

Also fixed an issue whereby doing a “replace” would abort when the image previously uploaded to SmugMug was no longer present at SmugMug. Now, if the image isn't there anymore, the “replace” turns into a simple upload. (A “replace” goes to whatever the gallery the original was in; but a replace that turns into an upload goes to the export's destination gallery.) Occasionally, a “replace” of a image still results in an abort due to a problem that I've reported to SmugMug.

Moved the items in the “Upload Management” section into the “Upload Destination” section, since they are really quite related.

20080923.31 Sigh, just realized that the “check for new version” stuff did break in 2.1. Totally my fault, sorry. Fixed.
20080921.30 Oops, the ability to use my template tokens in the 'extra keyword/tags' area, that I added last week, didn't actually recompute the tags on a per-image basis, applying the tags computed for the first image to all the others. That's now fixed, and tags are recomputed with each image.
20080920.29 Enhanced the {Rating} token to allow {Rating=*} to create "*****" through "". You can put most anything instead of the asterisk, so you might consider {Rating=great } to end up with "great great great". Since these forms result in nothing for an unrated photo, you can use the "|" pipe to provide a default "when empty" value, such as "rating": {Rating=*|"unrated"}
20080918.28 Added the ability to use template tokens like {Filename} in the "extra tags" input box.

Pushing some untested support for gallery-creation quick settings. I wrote this a few weeks ago, but may never push it if I wait to test it fully, so I'll just push it and let those of you who know SmugMug better test it for me 🙂

Update an error message to reflect an apparent bug in LR that causes LR to hand off a file to my plugin for upload before the file is actually available. This seems to happen when using LR/Mogrify or other filters. Updated the url shown in the “status” section of the plugin manager

20080916.26 Finally have the upgrade button working on both Win and Mac. Since I returned home last week, I now have access to both kinds of machine for the first time since LR2 was released. I can sum up the 5 hours I spent wrestling with the unzip code in three word: I hate Windows. Microsoft owes me five hours of my life back. Note that you may have to install this one by hand in order to get the newly working upgrade button... it's the next upgrade that should be easy-as-click.
20080914.25 Added a few more descriptive tooltips to the example-token dialog
20080914.24 Oops, fixed a boo-boo introduced in the previous version.
20080914.23 Remember (again) the upload-destination across exports. It used to work, and I'm not sure when it stopped working, but it must have been really annoying while it was broken, sorry.
20080914.22 Fixed tokens “OriginalWidth” and “OriginalHeight” in templates. Added a bunch of new template tokens and a new token filter. Added a token-examples button, which brings up a dialog listing all tokens and their value for an example photo (the first photo in the export list).
20080905.21 Fixed an “undefined global: DestinationSynopsis” error that could happen when using a preset with a “select at export time” upload-destination setting
20080831.20 Handle a race condition in the upgrade logic that sometimes results in a superfluous “You have version XYZ, but version XYZ is now available” message
20080829.19 Added a bunch of new items to the template language.
20080829.18 Oops, left some debugging cruft that results in an “empty” dialog if the logged-in-user has no galleries or the like. Fixed.
20080828.17 Minor tweaks
20080828.16 A few more tweaks to report a failed upgrade attempt a bit more clearly
20080828.15 Whoo-hoo, finally figured out the “assert” problem that some people without galleries were having. When upgrading, ignore a status of “50” (which means “out of disk space”) from the unzip the plugin performs. It seems Windows often reports this status even when there's plenty of disk space left, so until I can understand it better, I'll just ignore that code.
20080827.14 Fixed the Caption {Filetype} token (was broken for DNGs). Made some Layout tweaks in my preset dialogs. Added titles to the tools sections (were missing on OSX)
20080817.13 A few cosmetic changes to the auto-destination dialog.
20080816.12 Sigh, left some debugging stuff in there that prohibited the auto-destination stuff from actually working. Sorry for the version churn.
20080816.11 I spent tons of time wrestling with the “Auto Destinations” feature, which I'd never really done properly for SmugMug. It seems to work now. Lots of little tweaks as I cleaned things up. Added a bunch of stuff to the Plugin Manager, including a “What's New” button that shows up next to the “Upgrade Now” button when a new version is available.
20080814.10 Fixed infinite cycle of 'assert' messages one might get in odd situations
20080812.9 Fixes (I hope) a “bad argument #1 to '?' (table expected, got nil)” error
20080811.8 Moved and renamed the debugging logs to a temporary folder, and added log Show/Delete buttons to the plugin's custom section of the Plugin Manager.
20080806.7 Fixed {State} and {Rating} in preset templates.
20080805.6 Oops, the Windows versions had lost the ability to upgrade themselves. Once this version is installed manually, subsequent versions should be able to upgrade as discussed here.
20080804.5 Fixed “Access to undefined global: LrError” error that happens when trying to report a login-related problem.
20080804.4 Fixed a couple of internal errors related to the “choose destination at time of export” feature
20080804.3 Handle the fact that the upload-size limit for SmugVault users is half a gig.
There were also some changes under the hood related to logins and Lightroom Export presets. These changes shouldn't have any noticeable effect... unless I introduced a bug. We'll see....
20080804.2 Should now work with SmugVault.
20080729.1 Initial public release. (The version of this plugin for Lr1 is here; its initial release was “20071121.1”)

The 30 most-recent comments (out of 507; see all), most recent last...

Thanks for getting the Smugmug plugin working again!

— comment by Bob Powell on August 20th, 2018 at 1:26am JST (5 years, 11 months ago) comment permalink

Just discovered your treasure trove of plugins – fantastic work!

Question about the SmugMug one specifically – how can I create a new gallery from within the Plugin / Lightroom interface? I only seem to be able to sync to an existing gallery on SmugMug.

The create-gallery feature will come back after a while, once all the updates from the recent big change shake out. —Jeffrey

— comment by Tim Hocking on August 21st, 2018 at 9:34am JST (5 years, 11 months ago) comment permalink

I see you’ve published a fix for the Smugmug mess earlier. I just installed your new version, 20180826.333. My plan was to add a gallery to an existing folder (the last folder I added). The folder exists on Smugmug. It shows in the plugin’s list of galleries, but it doesn’t show in the list of published galleries in the “Edit Settings” panel. Which means I can’t add a gallery to it. How do I get it back in the list of published galleries?

In addition, I keep losing my Smugmug authorization and having to reauthorize. I never had this problem before. Every time I try to do anything I have to re-grant permission to the plugin to access Smugmug, and when I open the “Edit settings” dialog the list of published galleries is blank. This is probably the REAL problem. Any suggestions?
Karen Ivy

For the first thing, there’s a “refresh list” near the album list in the Publish Settings. The second issue sounds as if your Lr Preferences are going bad, or maybe your catalog is corrupt internally. Check the the link included here, and perhaps check the integrity of your catalog. —Jeffrey

— comment by Karen Ivy on September 4th, 2018 at 6:45am JST (5 years, 11 months ago) comment permalink

Using the latest LR (7.5) and the latest plugin (Version 20180826.333). I have the same problem as Karen Ivy. For the first month or so (and several versions) of the new API plugin folder refreshing worked fine, but now (probably as of the latest), it refreshes, but only gets about 20% of my folders. It does always get the most recent galleries within a folder. I have MANY MANY galleries. 1000s probably. Many of them are in folders by years and I add 3-4 a week so 2017 would have maybe 200 galleries. This goes back for nearly a decade. Each year populates in about 10-15 galleries now. But 2 weeks ago they were all coming in (roughly 200 per year). This means that I can’t go back and upload more photos to most old galleries (which I do periodically). I’d have to get lucky. Folder refresh time did drop drastically though, as did the time to open the plugin panel (which was very long for the first few new API revs — it was fine under the old API).

I’ve just discovered that this is an issue with my plugin and how it’s working with SmugMug’s Beta API. My bad. I’ve just pushed out a fix. —Jeffrey

— comment by Andrew Gavin on September 7th, 2018 at 6:35am JST (5 years, 10 months ago) comment permalink

Jeffrey, thanks for the response. I did in fact try the Refresh List button and it didn’t help. I’ve realized I left out a critical piece of information: my copy of Lightroom is backleveled, I’m running ver. 5.7. Since it normally does just what I want, I haven’t upgraded to 7.5 – I was going to ask if I needed to but Andrew Gavin’s post suggests it might not help. What do you think?

I’ll look into corrupt preferences; I do back my catalog up every time I exit Lightroom.

Karen Ivy

I doubt that whatever issue you’re facing is due to the version of Lightroom, so I don’t think that upgrading would matter with this issue. —Jeffrey

— comment by Karen Ivy on September 8th, 2018 at 9:37am JST (5 years, 10 months ago) comment permalink

I think your latest plugin update, smugmug-20180908.334, has taken care of my problem – all the galleries are there. I stay authenticated to Smugmug. And I was able to create the new gallery I wanted to do, in the new Smugmug folder that it wasn’t picking up! I was even able to do “install and download” on the new plugin, even though when I tried to do that with the smugmug-20180826.333 version it crashed and I had to install manually.

Nice work, and thank you.
Karen Ivy

— comment by Karen Ivy on September 11th, 2018 at 1:25pm JST (5 years, 10 months ago) comment permalink

Lightroom: 8, plugin: smugmug-20181015.340
I like the new ‘:H’ hierarchical option to the ‘Keywords’ keyword. However, this does not return keyword synonyms like the standard ‘Keywords’, would it be possible to add this as an option, ideally with a different separator?
You give an example ‘{Keywords:H= >> }’, used in the definition for ‘Title’, this results in the text ‘>&gt’ appearing in the ‘Title’ when displaying the exported photo in Smugmug. Is it possible to escape the ‘>’ character so that it gets displayed correctly?
Any progress in fixing the problem of changes to the ‘Title’ (keywords forming the title) not getting updated in Smugmug when they are changed after the initial export of the photo (a problem since version 2 of smugmug API?
Thanks Ian Hardy

SmugMug engineers have stopped responding to my mail, so I don’t know what’s going on with the title thing. I reported clearly what seemed to be a bug with their system, then radio silence. I’ve sent a few “are you there?” messages, but nothing. Not much I can do until they reply.

The tokens can be used in many contexts; if you’re using them in a context that will be interpreted as HTML, you should escape things yourself accordingly.

I’ll take a look at synonyms. —Jeffrey

— comment by Ian Hardy on October 17th, 2018 at 6:18am JST (5 years, 9 months ago) comment permalink

Hey Jeffrey,

Do you think that we’ll ever see a fix for the republish issue where the filename gets replaced with “unknown”?
Several times a day I have to delete files on Smugmug first, then republish in order to avoid this. Kind of makes the plugin unnecessary if every time I change an image I have to do this.



I share your frustration. As a SmugMug customer, perhaps you could ask them to respond to my queries for help. They were responsive in the summer, then just suddenly stopped responding, leaving this issue hanging. —Jeffrey

— comment by Mark Tassoni on October 19th, 2018 at 2:03am JST (5 years, 9 months ago) comment permalink

Hello Jeffrey,

FYI, I’ve posted another request for help in the DGRIN forum re the above problem. Maybe the product manager will shake the engineer tree a bit so they’ll answer your mails.

It’s driving me nuts not to be able to update any photos.



— comment by Sara on October 23rd, 2018 at 5:58pm JST (5 years, 9 months ago) comment permalink

I just tried to install the latest version of the SmugMug plugin on a new computer. As I’m authenticating to SmugMug I’m getting a notice that the plugin needs to update my catalog and could take a long time if the catalog is large.

Is it talking about the catalog of images on SmugMug? Or the current Lightroom Catalog I have open?



It’s talking about the Lightroom catalog. In the move from SmugMug’s production API that they suddenly turned off during the summer, to their still-in-beta-after-four-years API that I was forced to scramble to, the plugin must do a lot of work to translate your data over. —Jeffrey

— comment by Ben Brammeier on November 15th, 2018 at 6:58am JST (5 years, 8 months ago) comment permalink

Jeffrey, I am using the latest version of the Smugmug Plugin (20181108.344) on the latest version of LR Classic CC (8.0.0) on Windows 10. A Smugmug album has been updating successfully but now I get an error whenever I try to publish this album with photos to delete. Other albums are working fine, including deleting photos from the album, and this album will add and modify photos but not delete. The error recurs after optimising the catalog and rebooting the PC.
“Can’t Update this collection. An internal error has occurred: deletePhotosFromPublishedCollection: did not call deletedCallback function”

(NB: I overcame my previous problem of not being able to authenticate with Smugmug by uninstalling LR and PS, rebooting, cleaning the registry with CCleaner to remove all LR references and then reinstalling LR. Cleaning the registry obviously was the key extra step.)

— comment by Alan Fieldus on November 21st, 2018 at 2:28pm JST (5 years, 8 months ago) comment permalink

Jeffrey, the problem I noted earlier has now mysteriously disappeared without even restarting LR. I adjusted the photos so they would no longer need to be deleted from the album, published the album with the new and modified photos, changed the other photos back to what they were so they would be deleted from the album and now it is publishing. successfully Windows and Lightroom work in mysterious ways.

— comment by Alan Fieldus on November 21st, 2018 at 6:28pm JST (5 years, 8 months ago) comment permalink

Plugin-Version 20181108.344: In Lightroom (6.14) I have configured a Publish Service with your “Export to SmugMug” plugin containing some smart collections. For file naming I have a simple Rename-To-setting. Publishing is working well the first time only.
When I later have some “Modified Photos to Re-Publish” and trigger “Publish Now”, these photos show up with filename “unknown” in SmugMug on the Web. This leads to sorting issues, because SmugMug cannot sort by filename if there is no filename at all.
Is there some bug in your plugin for the re-publish case or is something wrong in SmugMug?

This is a bug at SmugMug that I reported long ago. It appears that it’s difficult for them to fix, or not a high priority, or something. I don’t know. You can see some discussion of it toward the end of of this discussion page at SmugMug. —Jeffrey

— comment by Martin on December 3rd, 2018 at 1:53am JST (5 years, 8 months ago) comment permalink

Jeffrey, I noticed today that although under “Metadata that triggers republish” I have “label” unchecked, because of a label change, hundreds of files have been set to be republished. I solved the problem by marking them as up-to-date, but I just thought you might want to know. Cheers, Sara (Windows 10 64-bit, Lightroom Classic 8.1)
…could this be because of a recent computer change?

Lightroom’s “metadata that triggers republish” has never worked reliably, unfortunately. )-: —Jeffrey

— comment by Sara on January 8th, 2019 at 5:17am JST (5 years, 6 months ago) comment permalink

Hello Jeff,
As a user of several plugins developed by you and after comparing the time to upload images to smugmug and zenfolio I found that your upload time is much greater than their upload procedures.
Maybe you are limited by the Adobe API to get better performance, I don’t know…, but it would be nice to know if there is something that could be done from your side to getter better upload performance from inside your plugins.
Let me know your comments on that issue.
Take care

I’ve often heard this complaint about uploads to Zenfolio; I don’t recall having heard it about SmugMug. In any case, there’s little I can do… the plugin tells Lightroom to upload these bytes, and Lightroom asks the OS. It could simply be that the remote services save their fastest servers for their own uploaders. Or it could be some issue with Lightroom and/or its interface to the OS. Unfortunately, I don’t see that I can do anything about it. )-: —Jeffrey

— comment by Thales on January 14th, 2019 at 6:14pm JST (5 years, 6 months ago) comment permalink

Hi Jeffrey, first of all thanks for your fantastic plugins in general and for this one in particular! I’ve started to build up an architectural photo archive site with Smugmug recently and having this issue: After updateing Capion metadata, i will get an empty “unkwon” filed in my Smugmug Gallery. Maybe it’s the same timing issue as with the titles? My only workaround is currently to delete ALL images from the gallery with the plugin and then re-upload all images again. Not a good solution… Any idea how to overcome this – any fix possible? Cheers Markus

This is a known bug that I reported in detail to SmugMug last summer (my reports were in private email, but it’s also mentioned It’s hard to guess without seeing the plugin log, but I’m wondering whether the upload is timing out, and this is somehow manifesting itself in weird ways. —Jeffrey

— comment by Jonathan Ripsom on April 19th, 2019 at 6:11am JST (5 years, 3 months ago) comment permalink

This question has to do with the SmugMug plugin, version smugmug-20181108.344, being used with Lightroom 8.2, Build 1204643, on a MacBook Pro running High Sierra.

It looks like the “manually associate” photos to Smugmug entries is no longer available – is that correct, or has it moved somewhere? I’ve found that helpful when I have to upload videos via the Smugmug website if there is some problem with uploading videos via Lightroom plugin.


Yes, sorry, that disappeared when I was suddenly forced to use a different API. Sumgmug’s support for that API is shaky at best, so I’m reticent to invest a lot of energy into something that might suddenly disappear again. Sorry. —Jeffrey

— comment by Jonathan Ripsom on April 20th, 2019 at 4:16am JST (5 years, 3 months ago) comment permalink

Jeff, this is Karen Ivy or hedera in California. I’ve been using your SmugMug plugin in Lightroom 5.7, but I just allowed myself to upgrade Lightroom to Lightroom Classic v.8 – having previously upgraded Windows 7 to Windows 10. Lightroom Classic informs me that I can’t use your plugin and I should download your new plugin. I don’t know which plugin version I had in Lightroom 5.7. I’ll download your current plugin and try that, but if there is another one for Lightroom Classic v.8, please tell me where to find it. Thanks for all you do, and if this works, I’ll happily donate again.

Just use the download link in the upper right of this page, and you’ll be fine. —Jeffrey

— comment by Karen Ivy on July 30th, 2019 at 9:56am JST (5 years ago) comment permalink

I have been trying to update the version of Lightroom on my MacBook Pro. MacOS Catalina 10.15 Beta (19A487m), Lightroom 8.4 (201908011719-03751b60). I was able to install the latest copies of Geoencoding and Flickr successfully, but when I tried to Add Smugmug (20181108.344) in the Plug in Manager, I get the message “An error ocurred while reading the schema for the plugin “jf SmugMug”. The plug-in will be disabled. I have that plugin in the same version of Lightroom Classic for windows on my Windows 10 machine. I have tried with two different downloads of the plugin. Can you help?

These kind of errors tend to smell like a bad unzip…. some browsers seem to corrupt things when they unzip. I’m at a loss as to how this happens, or how it happened with you for only one plugin, but I’d suggest downloading with a different browser to see whether that brings better luck. That same zip file has been there for a long time, with many downloads and installs, so I’m sure it itself is fine. —Jeffrey

— comment by Terry Straehley on August 17th, 2019 at 7:01am JST (4 years, 11 months ago) comment permalink

Thanks. A fresh download solved the problem.

— comment by Terry Straehley on August 19th, 2019 at 7:23am JST (4 years, 11 months ago) comment permalink

Hi Jeffrey,

I am a very happy user of your “Export to Flickr” plugin for many years now (currently on v. 20190810.411 for LR8.4).

I have a feature request: I often find myself having to republish multiple smart collections, usually because of a global metadata change such as a change of keywords.

Would it be possible to support “Publish Now” across a selection of collections rather than one collection at a time?


You can select multiple publish collections at once, and select photos from among them to publish. If the same photo is in multiple collections, it appears only once, but will publish from each collection. (This is all done by Lightroom, not the plugin, but I just tested to see what it would do, and it seems to do just what you want.) —Jeffrey

— comment by Stratis on August 25th, 2019 at 7:18am JST (4 years, 11 months ago) comment permalink

Hi Jeffrey,
Are you planning to release a new version of the Smugmug plugin compatible with LR9?

(Crossing fingers)



Oops, sorry about that. I’ve released a new version that should work. You’ll see in the version history that I’ve had a nightmare getting bugs fixed at SmugMug, and I was holding out for one last hope to get a response for them before Lr9 came out, but nope. So I had to do the best I could with what I had and just get a version that works on Lr9 released. —Jeffrey

— comment by Bob Powell on November 5th, 2019 at 1:57am JST (4 years, 8 months ago) comment permalink

Hi Jeffrey,
I’m running LR 9 and plugin version smugmug-20191105.345. I just left (another) nasty note in DGRIN to express my dissatisfaction at their lack of response on this issue.
Every re-publish still results in file name “unknown” and no updating of the caption (which is why I re-published the photo!). Pulling my hair out.
Thanks, Sara

— comment by Sara on November 12th, 2019 at 1:25am JST (4 years, 8 months ago) comment permalink

Hi Jeffrey,

I’ve left a message with SmugMug support, asking for a clarification on their relationship with third party developers, citing your November release notes. I became a SmugMug customer on the strength of your export plugin, and while I’m not thrilled to do so, if they continue to be stagnant on collaboration with you, I will be investigating the other platforms that have the cycles/bandwidth to work with you. If you have the time to suggest which platforms are most nimble at supporting interoperability with your excellent plugins, I’d appreciate the additional signal.

Thank you for everything you do. You must have quite the toolchain to support the release of all of your plugins! 🙂
software engineer and photography enthusiast

— comment by Andrew Widdowson on December 29th, 2019 at 2:56am JST (4 years, 7 months ago) comment permalink

trying to remove 2 images from Lightroom Classic and get the following message first: One or more of these photos are published on the service “jfSmugmug” if you leave these photos on this service, Lr will be unable to manage them in the future. When I select Remove from Service the following message pops up: Can’t update this collection. The plugin “jf Smugmug” is missing. Can you help me with this. Am using a Mac. Am unable to locate files in Finder. And hello from NYS. Thank you.

Lightroom could be a bit more clear about what’s going on here. If you say “Remove from Service”, that means that when you delete the images from Lightroom, you want the plugin to reach out to SmugMug and to delete the photos there as well. In order for the plugin to do that, it has to be installed and enabled. If you don’t have it locally anymore, just download the latest copy from this page, unzip it, move it to where you want it to live on your system (e.g. a “Lightroom Plugins” folder within your “Documents” folder, perhaps) and then point Lightroom at it. However, if you don’t want to have Lightroom have the plugin delete the copies at SmugMug, just select “Leave on Service”, and you can proceed without the need to have the plugin installed. It’ll just make the images disappear from Lightroom. —Jeffrey

— comment by Harvey Davidowitz on December 29th, 2020 at 6:39am JST (3 years, 7 months ago) comment permalink

Hello, I recently started uploading jpegs that are greater than 100 megapixels to SmugMug. Each time I get a warning that my account limit is 100 with an option to proceed anyway (which I select and which works).

I think this limit might be out of date. I found reference to it here:

But that is from 2013. From just this month I found:

Which specifies a much larger limit. It seems like the latter is true now. Would it be possible to change this warning? As far as I can tell this limit applies to all accounts, but I haven’t looked that hard.

Thank you.

Indeed they seem to have upped the limits. I’ve pushed out a new version. —Jeffrey

— comment by Anonymous on March 27th, 2021 at 9:57am JST (3 years, 4 months ago) comment permalink

Hello, I’m still seeing this 100 megapixel warning even with version 20210415.353.

Thank you.

Please send a plugin log after getting the warning, and I’ll take a look. —Jeffrey

— comment by Anonymous on April 18th, 2021 at 8:21am JST (3 years, 3 months ago) comment permalink

This is Karen from Oakland, CA getting back into photography after 15 months of pandemic. I want to add a new gallery for the few photos I’ve taken during the pandemic, not a problem, I know how.

But I have an odd situation. I have 2 SmugMug galleries that show under “Neighborhood > East Bay > New Year’s Day 2009” and “Neighborhood > East Bay > Walking around the hood.” Each shows on SmugMug and has a few photos in it. But in the list of published galleries under your plugin they show as having no photos in them. I guess from your comments that I could install the SmugMug plugin and sync them with the site; but I’d like to know what if anything I did wrong and whether I can correct it in your plugin.

Thanks for everything you do.

— comment by Karen Ivy on June 6th, 2021 at 9:14am JST (3 years, 1 month ago) comment permalink

Karen from Oakland again. About the problem: I’ve just realized what it may be but I don’t know what I can do. Look at Under Neighborhood > East Bay you can see 2 galleries, New Year’s Day 2009 and Walking Around the Hood. They have photos in them. In the list of galleries under Edit Settings, that’s where they are. But when I look at them in the list of galleries, in Lightroom, under “jf Smugmug – hedera” (the name I gave the plugin) they show as under Neighborhood > S.F. Bay Area. And those are the galleries that say they have 0 photos in the list of galleries under the publish service. Is there anything I can do about that?

Also, all my galleries in the gallery list have “repop” after them – is that only for smart galleries? I’ve never used smart galleries.

Thanks again!

I don’t quite understand what you’re reporting, but it sounds as if the plugin is showing some sub-galleries in the wrong place? If so, please refresh the list of galleries (“refresh list” under the list, in the publish-service settings dialog) and then send the plugin log with a clear, concise description of the problem. Thanks. —Jeffrey

— comment by Karen Ivy on June 6th, 2021 at 9:38am JST (3 years, 1 month ago) comment permalink
Leave a comment...

See the known issues before reporting bugs. Also, when reporting bugs, please include the OS, the version number of Lightroom, and the version number of the plugin. PLEASE REPORT THE NAME AND FULL VERSION NUMBER OF THE PLUGIN WITH EVERY REPORT. Seriously. I need the full version number or I likely can't do anything but ignore the message.

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