Articles on: Integrations

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


  1. In the Templated dashboard, go to Integrations.
  2. Open Spreadsheet Generation (https://app.templated.io/integrations/spreadsheet).
  3. Upload your file (CSV, XLSX or XLS, up to 10 MB).
  4. Check the Column Validation in the preview window.
  5. 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

title_text

Text of the layer "title"

title_color

Text color of the layer "title"

title_font_family

Font of the layer "title"

title_font_size

Font size of the layer "title"

photo_image_url

Image of the layer "photo"

photo_object_fit

How the image fits (for example cover or contain)

box_fill

Fill color of the shape "box"

badge_hide

Hide the layer "badge" (true or false)

cta_link

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-name with column product-name_text works.
  • Layer product_name with column product_name_text does 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

name

The name of the render. It is also used as the file name inside the ZIP.

format

Output format: jpg (default), png, pdf, and the other formats supported by the API

transparent

true for a transparent background (PNG)

background

Background color, for example #FFFFFF


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

https://example.com/john.jpg

9dcf568e-26b3-4ef4-aa8c-075cdf9f4066

002-jane

png

Welcome Jane

#0000FF

https://example.com/jane.jpg


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


  1. Wait until the job in the Executions list shows COMPLETED.
  2. Click Generate ZIP. The status changes to GENERATING ZIP.
  3. 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 name column, for example 001-john.png.
  • Without a name column, 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 sort 10 before 2.


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 a document column, the whole file becomes one document.
  • merge: true with format pdf combines 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

Was this article helpful?

Share your feedback

Cancel

Thank you!