Ingest

Ingest / Naming and typing

Names and metadata that fit the job.

Two typing habits cover most of it: {…} fills rename and folder variables; ; finds metadata fields. Keep original filenames for a simple import, or build names and folders from dates, addresses, and sequence numbers.

Try {…}

Curly braces fill rename and folder variables. Edit the template and watch the filename. Semicolon finds metadata fields in Metadata Assist — that habit is shown in the app, not here.

How a template works

Curly braces rename. Anything in braces is replaced; anything else is kept as you typed it. So {yyyy}{mm}{dd}-{seqn} becomes 20260912-0001, and Wedding-{seq} becomes Wedding-1. Semicolon is a different habit — it finds metadata fields in Metadata Assist, not tokens in a name.

Some tokens take an argument after a colon. {seqn:4} sets the width of the number, {date:MMMM d, yyyy} sets a date format. To write a real brace, double it: {{ and }}.

Templates are used in four places: renaming during ingest, renaming in place with ⌘R, naming the subfolder that ingest creates, and filling in captions and titles in a metadata preset. Settings → Naming keeps your saved templates and shows a live example as you type.

Wedding folder and filename preview
A shoot name and sequence token supply clear folders and filenames in this example workspace.

A template also decides letter case, what spaces turn into, and the case of the extension. The default turns spaces into hyphens and lowercases the extension, which is what keeps filenames easy to sort and safe to send anywhere.

A token that has no value disappears, and takes the separator next to it with it, so a missing address does not leave a stray hyphen at the front of every name.

Every token

The { } button next to any template field lists these with their meanings, so you never have to remember the spelling.

Numbers

TokenValue
{seqn}The saved counter: per project during ingest, otherwise shared across jobs. See below.
{seq}A counter for this job only, starting at whatever you put in the start field.
{frame}The number the camera gave the file. DSC01206 gives 01206.
{stack}Which bracket set this photograph belongs to. Empty for photographs that are not in one.
{stackframe}Which frame within that set.

All five take a width: {seqn:4} gives 0001. Widths from 1 to 12.

Social Export

Open Custom Naming in the Export sheet to edit the filename pattern. The default produces names such as Photo_social.jpg. Social Export adds {ratio} (such as 4x5), {preset}, and {index}, the frame’s one-based sequence. {index:3} produces 001. The default is {base}_social. Multi-photo frames use their first photo for source-name and date tokens. The chosen JPEG or PNG extension always replaces the source extension.

Organize

Organization templates add {group}, {groupnumber} (two digits by default), and {groupseq} (three digits, restarting in each group). Explicit widths such as {groupseq:4} are supported.

The file itself

TokenValue
{base}The original name without its extension. Takes upper or lower.
{filename}The same thing, under its other name.
{ext}The original extension.
{folder}The name of the folder the photograph came from.
{dest}The name of the folder it is going to.

When it was taken

TokenValue
{date:yyyy-MM-dd}The capture date in any format you like. {date:MMM d} gives Sep 12.
{yyyy} {yy}Year, four digits or two.
{mm} {dd}Month and day.
{hh} {mn} {ss}Hour, minute, second.

All of these read the capture time from the file, not the time it was copied. If a camera wrote no capture time, the file's own date is used.

The camera

These work in filenames. They are left out of the subfolder menu because a whole folder of photographs rarely shares one exposure.

TokenValue
{model}Camera model, such as ILCE-7RM5. Job folder templates use a source photo’s camera model; Settings labels its sample camera when no source model is available.
{lens}Lens model.
{iso}ISO.
{shutter}Shutter speed, made safe for a filename: 1/500 becomes 1-500.
{aperture}f8. With {aperture:raw}, just 8.
{fl}16mm. With {fl:raw}, just 16.
{ev}Exposure compensation: 0, +0.7, -1.3.

Where it was taken

TokenValue
{address}The job address, set in Ingest or with ⌘L, formatted for filenames using the chosen Spaces setting. The same address can fill a metadata template’s Property address prompt.
{street}The same value.
{city} {state} {zip}The rest of the address.

The sequence number

During ingest, {seqn} uses the current project’s saved counter. A new project starts at 0001, and another card for that project continues where the first stopped. Outside a project, it uses the shared counter across jobs. Start at shows the next number and accepts an override. Different projects can use the same numbers.

The width comes from the zeros you type. 0001 in the start field gives four digits, so 7078 comes out as 7078 and 42 comes out as 0042. Leading zeros are what keep files in order when something sorts them as text.

Planning a job does not move the counter. Review the proposed names before copying. The counter is recorded as files are published, so an interrupted job can already have used numbers for its completed copies.

Settings → Naming shows the next sequence number and lets you change it. Review the starting number for the current project or job. Resetting or overriding a counter can reuse earlier numbers; the collision check still protects files already at the destination.

{seq} is the other counter: it starts wherever you say, for this job only, and it is the right choice when a client wants photographs numbered from one.

Examples

TemplateResult
{seqn}7078.arw
{yyyy}{mm}{dd}-{base}20260912-DSC01206.jpg
{address}-{seqn}1428-Maple-St-7078.arw
{date:yyyy-MM-dd}-{city}-{seq:3}2026-09-12-Seaside-001.jpg
{base}-{stack}-{stackframe}DSC01210-1-1.jpg, for the first frame of the first bracket set
{model}-{fl}-{seqn}ILCE-7RM5-16mm-7078.arw

A combined RAW and JPEG / HEIF pair gets the same base name with the appropriate extensions, so 20260912-DSC01206.arw and 20260912-DSC01206.jpg stay together wherever they go.

Subfolders

Your workspace’s import settings can put each job in its own folder, named by the same kind of template. {date:yyyy-MM-dd} gives 2026-09-12, and {address} gives a folder per listing.

Subfolder templates cannot use the per file tokens, because a folder cannot have a different name for each photograph inside it. {seqn}, {seq}, {frame}, {base}, {ext}, {stack}, and {stackframe} are refused with an explanation rather than silently ignored.

When names collide

Ingest never overwrites a file and never quietly adds a suffix to make room. If two photographs would get the same name, or a name already exists at the destination, it says so before it starts and will not begin until you fix it.

The messages are specific: how many photographs would share a name, which name already exists, or that only the letter case differs. The hint is always the same, because the answer usually is: add {seqn} or {seq} so every name is unique.

Renaming in place has one extra case. If a name would not actually change, Ingest tells you rather than doing nothing and looking broken.

Metadata Assist and Quick Entry

Semicolon finds fields. ⌘’ opens Metadata Assist with explicit review before applying. Type ; to see your field options, pick one, then Tab to take it and fill or search. Read the complete guide.

Values you stage here (client, event, location, shoot date) can feed rename templates through curly-brace tokens such as {client}, {event}, {location}, and {shootdate}. Missing required shoot values block planning. These do not change camera capture timestamps.

Caption-code files are configured per workspace: UTF-8 TSV, a code followed by tab-separated replacements, normally invoked with =. Later files take precedence. Choose alternatives with #n; unknown or cyclic codes must be resolved before importing.

Press Q for the earlier Quick Entry syntax. Enter the line, review the proposed fields, then apply to the selection. The order does not matter and most of it is optional.

You typeIt means
coast sunriseTwo keywords. Bare words are keywords.
front yard, kitchenWith a comma anywhere in the line, each comma separated run is one keyword. So this is two keywords, not three.
#familyA keyword, even when the word would otherwise mean something else.
3* *** 3 starsThree stars. 0* clears the rating.
red r 🔴A color label. Also yellow, green, blue, purple, and their first letters.
"First light at the pier"The caption. Curly quotes work too, and a quote you never close runs to the end of the line.
@Ecola State ParkPropose a descriptive place name, through the next comma or end of the line. Use Find place to explicitly choose a GPS map pin.
/listingApply the metadata preset with that name.
;addrExpand a snippet. See below.
t tag untagApply or remove a tag. Stars, colors, and keywords are independent.

The one rule worth knowing: a word like red counts as a command only when its whole comma separated segment is commands. So red door, kitchen gives you two keywords, and kitchen, red gives you a keyword and a color. That is what lets you write ordinary English without escaping anything.

The same line works from a link, which is how an external script or a Stream Deck button can mark a photograph. See the URL scheme.

Snippets

A snippet is a short name that expands into longer text. Type ;addr in quick entry, a caption, or the keyword field, and it becomes whatever you defined, tokens and all.

The shipped one is ;addr, which expands to {address}, {city} {state}. Settings → Metadata → Text Snippets is where you add your own, and it shows you how quick entry will read the result while you are still typing it.

Snippets expand once and do not nest, and a name Ingest does not recognize is left alone rather than deleted. If two snippets share a name, the first one wins.