Ingest

Ingest / Automation

What happens after the copy.

Actions run when an ingest finishes, so the photographs arrive where they are going to be worked on. Links let anything on your Mac drive Ingest. Neither exists until you build it.

Actions

An action is a named list of steps. You choose one in the Ingest sheet under Then run, and it runs once the copies are on disk and verified. You can also run one from ⌘K on whatever is selected, or from a link.

The Actions settings page with a list of actions, their ordered steps, a confirmation switch, and a test button
Settings, Actions. Steps run in order, and Run on Selection Now tests one without waiting for an ingest.

Ingest ships with three: open the copies in Lightroom Classic, reveal them in Finder, and import them into an Apple Photos album. Edit them or delete them.

StepWhat it does
Open in an appHands the copied files to an app you choose, the same as dragging them onto it.
Import into an Apple Photos albumImports the copies into an album, created if it does not exist. The name can use {yyyy}, {mm}, {dd}, {address}, and {city}, so {yyyy}-{mm} Ingest files each month separately. Keywords, captions, and locations are already in the files, so Photos reads them on import.
Copy to a folderA second copy somewhere else, after the first one is verified.
Reveal in FinderOpens the destination with the new files selected.
Add the Finder tag “Ingested”So Finder, Spotlight, and rules in other apps can see which files came through.
Run a ShortcutRuns a shortcut from the Shortcuts app by name, with the file paths as its input. The picker lists the shortcuts you have.
Run a shell scriptRuns zsh. Described below.

Turn on Ask before running for anything you want to see coming. Every run is logged, and the log is shown in Settings next to the action so you can tell what happened without hunting for a file.

Shell scripts

A script step runs zsh. The file paths arrive on standard input, one per line, and four variables are set:

VariableValue
$INGEST_FILESThe path of a file that lists every copied path.
$INGEST_DESTINATIONWhere they were copied to.
$INGEST_ADDRESSThe job address, if one was set.
$INGEST_COUNTHow many files.

The step starts with a line that does nothing but report, which is a good habit to keep while you are working out what you want:

echo "$INGEST_COUNT files in $INGEST_DESTINATION"

A script runs as you. It has your permissions and Ingest does not restrain it. Only add scripts you wrote or understand, and turn on Ask before running while you are still testing one.

The ingest:// scheme

Ingest answers links. Anything that can open a URL can drive it: a Shortcut, a script, a Stream Deck button, a Raycast command, a note on your desktop.

The easiest way to find the link for something is to open ⌘K, highlight the row, and press ⇧⌘C. The link is on your clipboard. Values have to be percent encoded the way any URL does, so a space becomes %20.

A link cannot do anything a menu item could not. Commands that delete still ask before they delete, whatever started them.

LinkWhat it does
ingest://open?path=…Opens that folder.
ingest://cardOpens the mounted card. Add name= to pick one when several are in.
ingest://ingestOpens the Ingest sheet, filled in. Takes favorite, destination, template, subfolder, and preset. Giving a template turns renaming on.
ingest://select?paths=…Selects those files in the open source. Comma separated.
ingest://apply?text=…Runs a quick entry line against the selection, snippets and all.
ingest://workspace?name=…Switches workspace.
ingest://split?name=…Shows a split.
ingest://action?name=…Runs an action on what is selected.
ingest://command?id=…Runs any command by its id, which is what ⇧⌘C gives you for commands that have no link of their own.

When a link cannot be carried out, the status bar says why in plain words: no folder at that path, no card is mounted, no workspace with that name, that command is unavailable right now.

Callbacks

Every link takes x-success and x-error, in the x-callback-url style. Ingest opens your success URL with a paths parameter listing what it acted on, or your error URL with an errorMessage. That is what lets a Shortcut hand work to Ingest and carry on when it comes back.

Callback URLs are values inside a URL, so they need encoding twice over. Build them with a tool rather than by hand.

Your settings as one file

Settings, Advanced exports everything you have set up as a single .ingestsettings file: options, name templates, metadata presets, snippets, splits, workspaces, actions, and your keyboard shortcuts. That is the file to keep as a backup and to carry to another Mac.

Importing offers two choices. Merge adds what you do not already have and leaves your own items alone. Replace makes this Mac match the file. Either way ⌘Z puts it back, because the import is recorded as one undoable step.

The file holds no photographs, but it can carry destination paths, addresses you have used, your keyword history, and the text of any scripts in your actions. Share it deliberately.

Restore Defaults is next to it, and puts every page back to how Ingest shipped while keeping your favourites, your sequence number, and the marks on your photographs.