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.

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.
| Step | What it does |
|---|---|
| Open in an app | Hands the copied files to an app you choose, the same as dragging them onto it. |
| Import into an Apple Photos album | Imports 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 folder | A second copy somewhere else, after the first one is verified. |
| Reveal in Finder | Opens 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 Shortcut | Runs 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 script | Runs 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:
| Variable | Value |
|---|---|
$INGEST_FILES | The path of a file that lists every copied path. |
$INGEST_DESTINATION | Where they were copied to. |
$INGEST_ADDRESS | The job address, if one was set. |
$INGEST_COUNT | How 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.
| Link | What it does |
|---|---|
ingest://open?path=… | Opens that folder. |
ingest://card | Opens the mounted card. Add name= to pick one when several are in. |
ingest://ingest | Opens 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.