Bulk Rendering from Spreadsheets
Generate hundreds of images or PDFs at once by uploading a CSV or Excel file. Each row of the spreadsheet becomes one render. No code is needed.
Where to find it
- In the Templated dashboard, go to Integrations.
- Open Spreadsheet Generation (https://app.templated.io/integrations/spreadsheet).
- Upload your file (CSV, XLSX or XLS, up to 10 MB).
- Check the Column Validation in the preview window.
- Click Start Generation.
Required column: template
Your spreadsheet must have a column named exactly template (lowercase). Each row contains the ID of the template to use. Different rows can use different templates.
The template must belong to your account. See "Where to find your template ID".
Layer columns: {layer-name}_{property}
To change a layer, name the column with the layer name, an underscore, and the property:
Column | What it changes |
|---|---|
| Text of the layer "title" |
| Text color of the layer "title" |
| Font of the layer "title" |
| Font size of the layer "title" |
| Image of the layer "photo" |
| How the image fits (for example cover or contain) |
| Fill color of the shape "box" |
| Hide the layer "badge" (true or false) |
| Clickable link of the layer "cta" (PDF) |
Other supported properties include color_2, font_weight, horizontal_align, vertical_align, autofit, background, border_width, border_color, border_radius, stroke, html, x, y, width, height, rotation and the rating properties.
Important: no underscores in layer names
Templated splits the column name at the first underscore. Everything before it is the layer name, everything after it is the property.
- Layer
product-namewith columnproduct-name_textworks. - Layer
product_namewith columnproduct_name_textdoes not work (Templated looks for a layer called "product").
If your layer names contain underscores, rename the layers in the editor to use hyphens (for example product-name), save the template, and update your column headers.
Layer names must match exactly what you see in the layers panel, including uppercase and lowercase. If a name does not match, that column is ignored and the render uses the template's original content. No error is shown.
Image columns
Use {layer-name}_image_url, for example photo_image_url. Each cell must contain a public, direct link to the image file (for example https://example.com/images/shoe.jpg). Links to a web page that shows the image, or private links (Google Drive, Dropbox share pages, links that need a login), do not work.
Optional setting columns
Column | What it does |
|---|---|
| The name of the render. It is also used as the file name inside the ZIP. |
| Output format: |
|
|
| Background color, for example |
Empty cells
An empty cell is skipped: the layer keeps the value from the template. To remove a layer for one row, use a {layer-name}_hide column with true.
Example
template | name | format | title_text | title_color | photo_image_url |
|---|---|---|---|---|---|
9dcf568e-26b3-4ef4-aa8c-075cdf9f4066 | 001-john | png | Welcome John | #FF0000 | |
9dcf568e-26b3-4ef4-aa8c-075cdf9f4066 | 002-jane | png | Welcome Jane | #0000FF |
Credits
- Each row uses 1 credit per image. Multi-page templates use 1 credit per page. PDF uses 1 credit per page.
- Before the job starts, Templated checks that you have enough credits for the whole file. If not, the job does not start and you see "Insufficient credits. This bulk job requires X credits, but your team only has Y remaining." Upgrade or split the file into smaller files.
- If your subscription payment is past due, bulk generation is blocked until you update your payment method in Account Settings > Manage Subscription.
Downloading the results as a ZIP
- Wait until the job in the Executions list shows COMPLETED.
- Click Generate ZIP. The status changes to GENERATING ZIP.
- When it finishes, click Download ZIP.
Each render is also available as a normal render with its own URL.
File names and order inside the ZIP
- Files are named after the
namecolumn, for example001-john.png. - Without a
namecolumn, files are named with the render ID, which looks random. - If two rows have the same name, the next one gets a number, for example
card (1).png. - Files are not numbered by row automatically. To keep your spreadsheet order, start each name with a zero-padded number:
001,002,003. Without zero padding, many file managers sort10before2.
Multi-page documents (one PDF per group of rows)
Add a page column to switch to document mode. In document mode, each row becomes one page instead of one render:
page: the page name of the template to use for that row. Repeat the same page name to create one page per product.document: rows with the same value are combined into one document, in row order. Empty cells inherit the value from the row above. Without adocumentcolumn, the whole file becomes one document.merge:truewithformatpdfcombines all pages into one PDF.- Settings (template, format, merge, name) are read from the first row of each document.
For product catalogs with categories, covers and grids, use the Catalog integration instead. See "Catalog Integration: Product Catalogs from a Spreadsheet".
Tips
- Test with 2 or 3 rows first.
- Use the Playground or the template's layers list to copy the exact layer names.
- Keep image files reasonably sized (for example under 4000 px on the longest side). Very large images make renders slow or fail.
FAQ
Q: Which columns are required?
A: Only template, with the template ID in each row. Add layer columns like title_text for the content you want to change.
Q: My spreadsheet ran but the images show the template's default text. Why?
A: The column names do not match your layer names. Check spelling, uppercase and lowercase, and make sure the layer names do not contain underscores.
Q: How do I change an image for each row?
A: Add a column named {layer-name}_image_url with a public direct image link in each row.
Q: How do I name the files?
A: Add a name column. Its value becomes the file name in the ZIP.
Q: The files in the ZIP are in the wrong order. How do I fix it?
A: Start each name with a zero-padded number (001, 002, 003...).
Q: Why didn't my job start?
A: Usually because there are not enough credits for the whole file, a template ID is wrong or belongs to another account, or a column header is invalid. The error message lists the rows with problems.
Q: Can I create one PDF with many pages from a spreadsheet?
A: Yes. Use document mode with the page, document and merge columns, or the Catalog integration for product catalogs.
Q: Does it support Excel files?
A: Yes. CSV, XLSX and XLS, up to 10 MB.
Updated on: 01/10/2026
Thank you!