PhotoMechanic is the fastest way to cull photos. One keystroke to tag, one keystroke to color-class, one keystroke to rate. The problem comes after: once you've marked your selects, how do you get them to the client's FTP server without breaking your culling flow?

The typical approach is to finish culling, filter for tagged images, export or copy them to a folder, then open an FTP client and upload. That works, but it means the delivery doesn't start until after you've finished culling the entire batch. On a live event where images need to arrive individually — the moment they're approved — that delay costs minutes.

FTPush offers a different approach: metadata-triggered delivery. Instead of watching for new files in a folder, FTPush watches for metadata changes in XMP sidecar files. The moment you tag, rate, or color-class an image in PhotoMechanic, FTPush detects the change and uploads the associated image file automatically.

Tag an image. It uploads. No export step. No FTP client. No interruption to the culling flow.

How PhotoMechanic stores metadata

When you tag, rate, or color-class an image in PhotoMechanic, the metadata is written to an XMP sidecar file — a small XML file that sits next to the image file with the same name but a .xmp extension. For example:

The XMP file contains all the metadata PhotoMechanic has written: the Tag state (true/false), Color Class (0-8), Rating (0-5), IPTC caption, keywords, and more. Every time you change any of these values in PhotoMechanic, the XMP file is rewritten.

This is the mechanism FTPush uses. It watches the folder for changes to .xmp files, reads the metadata inside them, evaluates it against your rules, and — if the conditions match — finds the associated image file and uploads it.

Setting up PhotoMechanic Trigger mode

In FTPush, each connection has a trigger mode setting. The default is "New Files" — the standard watched folder behavior. The alternative is "PhotoMechanic Metadata" — the mode described in this article.

  1. Create or edit a connection. Set the FTP server credentials and remote folder as usual.
  2. Set the watched folder to the folder where your images and XMP sidecars live — typically the folder where you ingested the memory card.
  3. Change the trigger mode from "New Files" to "PhotoMechanic Metadata."
  4. Add one or more trigger rules. Each rule defines a condition and a destination folder.

Trigger conditions

FTPush supports three types of conditions, matching PhotoMechanic's primary culling tools:

Tagged

The simplest condition. When an image is tagged in PhotoMechanic (the Tag checkbox is checked), FTPush uploads it. This is ideal for a binary workflow: tag the keepers, and they're delivered.

How it works in practice: You're culling in PhotoMechanic. You press "T" to tag an image. PhotoMechanic writes the tag state to the XMP sidecar. FTPush detects the XMP change within a second, reads the sidecar, confirms the image is tagged, finds the associated RAW or JPEG file, and starts the upload. Total time from keystroke to upload start: 2-3 seconds.

Color Class

PhotoMechanic supports 9 color classes (0-8), each with a distinct color. Many photographers use them for different purposes:

FTPush lets you create a rule for any specific color class value. You can even have multiple rules with different color classes routing to different remote folders — for example, Color Class 1 goes to /urgent/ and Color Class 2 goes to /selects/.

Rating

PhotoMechanic supports ratings from 0 to 5 stars. FTPush can trigger on a minimum rating value — for example, upload any image rated 4 stars or above. This works well for photographers who rate on a scale rather than using binary tags.

Multiple rules, multiple destinations

A single FTPush connection can have multiple trigger rules. Each rule has its own condition and its own remote destination folder. This enables sophisticated routing:

Rules are evaluated independently. If an image matches multiple rules, it's uploaded to each matching destination. For example, if an image is both tagged and Color Class 1, it can go to both /urgent/breaking/ and /all-approved/.

What gets uploaded: the image, not the XMP

When a trigger fires, FTPush uploads the image file — the RAW (.CR3, .ARW, .NEF, etc.) or JPEG — not just the XMP sidecar. FTPush finds the associated image by looking for a file with the same name but a different extension in the same folder.

Both files are uploaded: the image file and the XMP sidecar. This means the recipient gets the full image plus all the metadata you've added in PhotoMechanic — captions, keywords, copyright info, and any IPTC data.

Duplicate prevention: FTPush tracks a fingerprint for each image-XMP pair. If you change the color class of an already-uploaded image (e.g., upgrading from Color Class 2 to Color Class 1), FTPush recognizes the image has already been sent and doesn't upload it again — unless the destination folder is different in the new rule.

The workflow in practice

Here's what a live sports event looks like with metadata triggers configured:

  1. Ingest the card. Photos and XMP sidecars land in the watched folder.
  2. Open in PhotoMechanic. Start culling at full speed — the embedded JPEG previews load instantly.
  3. Press "T" on a keeper. The XMP sidecar updates. FTPush detects the change, reads the metadata, finds the RAW file, and starts uploading. The image is on its way to the server before you've moved to the next frame.
  4. Keep culling. Every time you tag or color-class an image, it uploads in the background. You never leave PhotoMechanic.
  5. Check status if needed. Click the FTPush menu bar icon to see upload progress, or glance at Finder tags on the image files (green = delivered).

The fundamental difference from the standard workflow: delivery starts the moment you make a culling decision on each individual image, not after you've finished culling the entire batch.

When to use metadata triggers vs. watched folders

Both trigger modes have their place. Here's when each one makes sense:

Use metadata triggers when:

Use standard watched folders when:

The two modes can coexist. You might use metadata triggers on one connection (for urgent RAW delivery to a wire service) and standard watched folders on another connection (for edited JPEG delivery to a client). Each connection operates independently.

Technical details

How XMP detection works

FTPush uses macOS FSEvents to monitor the watched folder. When a .xmp file is created or modified, FTPush reads the XML content, parses the relevant metadata fields (Tag state, Color Class, Rating), evaluates them against your rules, and — if matched — locates the associated image file by scanning for common RAW and JPEG extensions with the same filename stem.

Supported image formats

FTPush looks for associated images with these extensions: .CR3, .CR2, .ARW, .NEF, .RAF, .ORF, .RW2, .DNG, .PEF, .JPG, .JPEG, .TIF, .TIFF. If multiple image files match (e.g., both a RAW and a JPEG with the same name), both are uploaded.

File stability

The file stability checker applies to XMP files too. FTPush waits for the XMP file to stop being written before reading it. This prevents issues where PhotoMechanic is mid-write when the FSEvent fires.

Getting started

FTPush includes the PhotoMechanic Metadata trigger mode in all plans. Configure it in any connection's settings — switch the trigger mode, add your rules, and start culling. The 14-day free trial gives you enough time to test the full workflow at real events.