This reference describes every step available in the Flow builder — what each one does, what you configure, and how steps connect to each other.
How steps connect
Each step in a flow has an input port and an output port. The canvas only lets you draw a connection between two steps when their ports match. The three port types are:
- Photo — a photo, optionally with its background removed and face detected. Flows start here.
- Render — a finished image file (from Create Image).
- Design — an editable design in Studio (from Create Editable Image or Create Team Photo).
The Photos step (start) is permanent and cannot be removed. Every other step is dragged from the Steps palette on the left.
Photos (start step)
The Photos step is always the first step of a flow. It defines where photos come from and carries any per-photo data (name, jersey number, team) into downstream steps.
Trigger
Use the Trigger picker to choose how the flow starts:
- Photos (manual upload) — you drop photos into the step's config panel and press Run. This is the default for batch work you initiate yourself.
- Webhook (external trigger) — an external system sends one photo per request to the flow's unique URL. The flow runs automatically each time a photo arrives. Use this for camera-tethering workflows, order systems, or any tool that can make an HTTP POST. See the Webhook trigger section below for setup details.
Photos (manual mode)
Click Add photos to upload JPEG, PNG, or WebP files. The photos appear as a thumbnail grid. Click Clear all to remove all photos at once.
Data CSV (manual mode)
Optionally upload a CSV file to attach per-photo text fields — player name, jersey number, team, or any other column. The CSV must have a filename column; each row's filename is matched to a photo by exact name. Matched columns become {Column} variables you can insert into text fields on any downstream create step.
Download a sample CSV from the link in the config panel to see the expected format.
Webhook trigger
When trigger is set to Webhook (external trigger), the config panel shows:
- URL — the endpoint your system POSTs to. Fixed per flow.
- Token — a Bearer token for authentication. Click Generate token to create one; copy it and store it securely. You can Regenerate (invalidates the old token) or Revoke (disables the webhook) at any time.
-
Fields — declare the names of the data fields your request will include (for example:
Player First,Player Last,Team). These become{Player First}etc. in downstream steps. - cURL example — a ready-to-copy cURL snippet showing the exact request shape, with your token and declared fields filled in.
Send one photo per request. Each request triggers an independent run for that photo.
Remove Background
Input: Photo · Output: Background removed photo
Cuts the subject out of the photo and detects the face and content area. Downstream steps — especially photo layers with face placement — use the detected bounding boxes to position and scale the subject automatically.
One optional setting is available: Color correction (toggle). When on, color and tone adjustments are applied to help the cut-out blend naturally into different backgrounds.
Background Removal is charged per photo processed. Re-running a flow on photos that were already processed in a previous run reuses the cached result at no additional charge.
Text
Input: Text · Output: Text
Derives a new per-photo field from an existing one. Use it to pull a useful sub-value out of a larger string before it reaches a create step. For example, extract Week 1 from a long event string, or take a player's last name from a combined full-name field.
The step does not modify the photo — it passes the photo through and adds the new variable alongside any existing ones.
Configuration
- Source field — pick an upstream variable (from a CSV column, a webhook field, or a previous Text step) to transform.
-
Operation — choose the transform type:
- Regex extract — runs a regular expression. The first capture group (the part inside parentheses) becomes the output; if there are no capture groups, the whole match is used.
- Split — splits the value on a literal string you provide, then picks which part to keep (set Part # to 1 for the first part, 2 for the second, and so on).
-
Output field — name the new variable. Use it in any downstream step as
{OutputFieldName}. - Preview — paste a sample value to see what the transform produces before you run the flow.
Create Image
Input: Photo · Output: Render
Renders a template into a finished image file. The photo from the pipeline fills the template's photo layer; text fields are filled from your CSV columns, webhook fields, or Text step outputs.
Configuration
- Pick a Template from the dropdown. Templates are grouped by folder.
- The Text fields section lists every dynamic text layer in the template. For each field, type a fixed value or click the {} button to insert a variable. Fields that share a name with a CSV column are auto-filled with the matching variable.
- Photo layers are filled automatically by the pipeline photo — they appear in the list as read-only reminders.
A finished image is not stored as a design in Studio. Route it to a destination using a Send To step, or it will only appear in the run results panel.
Create Editable Image
Input: Photo · Output: New Design
Creates an editable design in Studio for each photo. The design opens in the Studio editor so you or your team can review, adjust, and send it manually.
Configuration
- Pick a Template.
- Fill Text fields the same way as Create Image.
- Under Output: set a Folder path where new designs land in Studio, and a Design name pattern (use variables like
{Player First} {Player Last}to name each design automatically). - Toggle Overwrite existing if you want re-running the flow on the same photos to update the existing designs in place rather than create duplicates.
Create Team Photo
Input: Photo (all photos in the run) · Output: Design
This is a fan-in step — it waits for every photo in the run to arrive, then places them all into the team layout template at once. The result is a single editable design containing the full team. Use it when you need a group photo composed automatically from individual player photos.
Configuration
- Pick a Template — it should be a team-layout template with multiple photo slots.
- Fill any Text fields (for example, a team name or season).
- Set a Folder and Design name for the resulting Studio design.
Because Create Team Photo is a fan-in step, it produces one design regardless of how many photos are in the run. Any step downstream of it applies to that single team design.
Send To
Input: Design or Render · Output: To the destination
Dispatches the upstream result to a destination. It is always the last step in a branch.
Destination options
The Destination picker shows two groups:
- Presets — your configured Send-To presets. Use a preset when the upstream step is Create Editable Image or Create Team Photo. The preset's destinations (Dropbox, webhook, print location, etc.) receive the rendered output.
- Direct — connected integrations that can receive a finished render file directly. This option appears only for Dropbox and webhook integrations, and only when the upstream step is Create Image. Configure integrations in Settings → Send-To.
Step connection rules
| Step | Accepts | Produces |
|---|---|---|
| Photos (start) | — | Photo |
| Remove Background | Photo | Photo |
| Text | Photo | Photo |
| Create Image | Photo | Render |
| Create Editable Image | Photo | Editable Design |
| Create Team Photo | Photo | Editable Design |
| Send To | Design or Render | — |
The canvas prevents invalid connections — if a step's output port does not match the next step's accepted input, you will not be able to draw the edge.
Comments
0 comments
Article is closed for comments.