Moving from Pixnub
FotoPal Templates runs the batches you run today with Pixnub Sports Photo Automation (SPA 10) in Photoshop, on our servers instead of your computer. Bring the same PSD templates, the same data file and the same photo folders; download one zip of print files (JPEG, PNG, or on a paid plan PDF with bleed) when it's done.
What carries over
Upload the PSD. Its SPA layers carry over: SPA-Player-1 to 3, SPA-Team and SPA-Logo photo areas (with their modes and face targets), text layers named after your columns (FIRSTNAME, TEAMNAME, SPATEXT1…), and layers you switch on or off per row. You get a green / amber / red report of anything that comes across differently, and a step for missing fonts.
Text resizing works as in SPA 10: the text layer's name in the PSD sets it, not the data file. TEAMNAME-R fits the text to the placeholder's width, growing or shrinking it. TEAMNAME-RM only shrinks text that is longer than the placeholder. TEAMNAME with no suffix is placed at the PSD size. As in SPA, resizing works on point text; paragraph (box) text keeps its box.
SPA in cell A1 and the player photo file names in column A. Every other column optional and in any order, headers in any case. CSV or TSV, separated by commas, semicolons or tabs. Curly quotes are fine. Excel's "CSV UTF-8" is best; an older Mac or Windows Excel save is read too, with a reminder to check accented names.
Zip the job folder. FotoPal looks in the same folders as SPA:
(the top) or players/: player photos: column A (SPA), PLAYER 2 FILE, PLAYER 3 FILEteams/: team photos (TEAM FILE)logos/: logos (LOGO FILE)backgrounds/: backgrounds (BG FILE): JPEG, PNG or WebP
Zip the folder as it is: one folder around everything is fine. Team files, logos and backgrounds are also found at the top. Names match exactly, extension included; a name that only differs in capitals is used with a warning.
NEW FILE NAME, APPEND FILE NAME and SUB FOLDER name and file each print inside the zip, nested folders included. The zip also holds manifest.csv: every row, its file, whether it printed, and any note.
What's different
- Photoshop actions don't run. There is no Photoshop on the server, so PRE ACTION and POST ACTION columns are recognised and left out. The column step and each row's report say so. Most actions recolour or switch layers: do that in the template instead, with Show if (a layer shown when a column says so) or colour variables.
- One template per batch, for now. BG FILE, BACKGROUND FILE and TEMPLATE FILE all work. A background image swaps the template's background on that row. A cell naming the batch's own PSD template is fine. A row naming a different template is stopped before anything renders, with a note to split the CSV by template; batches that mix templates are coming.
- Backgrounds are JPEG, PNG or WebP. Save a TIFF or PSD background as one of those first.
- File names are matched with a little more grace. SPA needs an exact match. FotoPal tries that first, then a name that differs only in capitals or in its image extension (IMG_0101.jpg in the CSV, IMG_0101.png in the zip), and notes it on the row. A missing photo stops the batch before anything renders, and the rows are listed so you can fix them.
- Output names are made safe for every computer. Accents become plain letters and other symbols become an underscore (Zoë → Zoe). SUB FOLDER must be a folder inside the output: a full path such as /Volumes/Jobs, or .., is refused.
- SPA 9 resize columns are ignored (X, A, Y, XM, AM, YM). SPA 10 moved resizing into the PSD, and so does FotoPal.
- One data file for many clubs: coming soon. Club Brand Kits (each club's colours, crest and sponsors) and a KIT column that picks a club per row are being built. Until then a LOGO FILE column gives each row its own logo, and BG FILE its own background.
A sample data file
Four fictitious players across two fictitious clubs, using every column FotoPal runs. Download the sample CSV. It expects a photo zip holding players/IMG_0101.jpg, players/IMG_0102.jpg, players/IMG_0103.jpg, players/IMG_0104.jpg, players/IMG_0105.jpg, teams/raptors-u12-girls.jpg, teams/kingfishers-u14-boys.jpg, logos/raptors.png, logos/kingfishers.png, backgrounds/court-blue.jpg.
SPA,FIRSTNAME,LASTNAME,NUMBER,POSITION,TEAMNAME,LEAGUENAME,YEAR,SCHOOLNAME,PLAYER 2 FILE,TEAM FILE,LOGO FILE,BG FILE,SHOW LAYER 1,HIDE LAYER 1,NEW FILE NAME,APPEND FILE NAME,SUB FOLDER IMG_0101.jpg,Juliet,Wrenhaven,7,Guard,Riverton Raptors,Under 12 Girls,2026,Riverton Raptors Basketball Club,IMG_0102.jpg,raptors-u12-girls.jpg,raptors.png,court-blue.jpg,Captain,,,_poster,U12 Girls/Riverton Raptors IMG_0103.jpg,Priya,Castellane,11,Forward,Riverton Raptors,Under 12 Girls,2026,Riverton Raptors Basketball Club,,raptors-u12-girls.jpg,raptors.png,court-blue.jpg,,,,_poster,U12 Girls/Riverton Raptors IMG_0104.jpg,Tomas,Ardley,4,Centre,Kestrel Bay Kingfishers,Under 14 Boys,2026,Kestrel Bay Basketball Club,,kingfishers-u14-boys.jpg,kingfishers.png,,,Stripe,tomas-ardley-4,,U14 Boys/Kestrel Bay Kingfishers IMG_0105.jpg,Oscar,Penhallow,15,Guard,Kestrel Bay Kingfishers,Under 14 Boys,2026,Kestrel Bay Basketball Club,,kingfishers-u14-boys.jpg,kingfishers.png,,,,,,U14 Boys/Kestrel Bay Kingfishers
Every SPA 10 column
From Pixnub's own "Sports Photo Automation: CSV data" page. Headers work in any case and with extra spaces.
| Pixnub column | In FotoPal | Status | Notes |
|---|---|---|---|
SPA | Player cut-out (primary pose) | Works as in SPA | Cell A1. Column A holds the player photo for SPA-Player-1, from the zip root or a players/ folder. Names match exactly, extension included; a different capitalisation is accepted with a warning. |
NAME | Full name | Works as in SPA | Full name. Fills the PSD text layer NAME. |
FIRSTNAME | First name | Works as in SPA | First name. Fills the PSD text layer FIRSTNAME. |
LASTNAME | Surname | Works as in SPA | Surname. Fills the PSD text layer LASTNAME. |
POSITION | Position | Works as in SPA | Position. Fills the PSD text layer POSITION. |
NUMBER | Jersey number | Works as in SPA | Jersey number. Fills the PSD text layer NUMBER. |
TEAMNAME | Team name | Works as in SPA | Team name. Fills the PSD text layer TEAMNAME. |
LEAGUENAME | Division / league | Works as in SPA | League or division (FotoPal: "Division / league"). Fills the PSD text layer LEAGUENAME. |
YEAR | Season year | Works as in SPA | Season year. Fills the PSD text layer YEAR. |
SCHOOLNAME | Club name | Works as in SPA | School or club name (FotoPal: "Club name"). Fills the PSD text layer SCHOOLNAME. |
CLASS | Group label (full) | Works as in SPA | Class or group (FotoPal: "Group label"). Fills the PSD text layer CLASS. |
SPATEXT1–5 | Division line (league + type) … Caption absentees (names of absent players) | Works as in SPA | Free text for the PSD text layers SPATEXT1 to SPATEXT5. FotoPal's own templates read them as the division line and the team-photo caption rows, so the mapping step asks you to confirm them there. |
PLAYER 2 FILE / PLAYER FILE 2, PLAYER 3 FILE / PLAYER FILE 3 | Player cut-out (pose 2), Player cut-out (pose 3) | Works as in SPA | Second player photo (SPA-Player-2), from the same place as column A. |
TEAM FILE | Team group cut-out | Works as in SPA | Team photo for SPA-Team, from the zip's teams/ folder (or its root). |
LOGO FILE | Club logo (crest) (this row) | Works as in SPA | Logo for SPA-Logo (FotoPal's club logo, $crest), from the zip's logos/ folder (or its root). It replaces the club logo on that row. |
BG FILE / BACKGROUND FILE / TEMPLATE FILE | Background (this row) | Works, with a difference | A background image (JPEG, PNG or WebP) from the zip's backgrounds/ folder (or its root) replaces the template's background on that row; blank keeps the template's own. Naming a PSD template works when it is this batch's template. Rows for other templates need a batch of their own for now: split the CSV by template. |
SHOW LAYER 1–5 | Show layer | Works as in SPA | Shows the layer the cell names (save it hidden in the PSD). |
HIDE LAYER 1–5 | Hide layer | Works as in SPA | Hides the layer the cell names. When a row both shows and hides a layer, it is hidden. |
NEW FILE NAME | Output file name | Works as in SPA | The output file name (an extension is optional). Blank: FotoPal's default name, such as 0001_Wrenhaven_Juliet_7.jpg. |
APPEND FILE NAME | Added to the file name | Works as in SPA | Added to the end of the file name, with or without NEW FILE NAME. |
SUB FOLDER | Output folder | Works as in SPA | A folder inside the output zip. Nest folders with / or \; they are created automatically. A full path (such as /Volumes/Jobs or C:\) or .. is refused. |
PRE ACTION 1–3 | Not supported | Not supported | Photoshop actions can't run in FotoPal (there is no Photoshop on the server). Rows that name an action render without it, and the batch report says so. Use Show if (a layer switched on by a column) or colour variables in the template instead. |
POST ACTION 1–5 | Not supported | Not supported | Photoshop actions can't run in FotoPal (there is no Photoshop on the server). Rows that name an action render without it, and the batch report says so. Use Show if (a layer switched on by a column) or colour variables in the template instead. |
Pixnub and Sports Photo Automation are Pixnub's names; FotoPal isn't connected with Pixnub.