If your spreadsheet has one row per video, give each row its own identifier. Templater uses that identifier to name the finished file, so the label you type in a column called id is part of the file name you will find on disk after the batch runs. That is the whole idea behind unique IDs, and it is a small thing to set up. The second half of this article covers a less obvious trick: using one spreadsheet to feed more than one After Effects project.
Both topics come from the same place. They are the small bookkeeping decisions that decide whether a batch of fifty or five hundred videos is easy to sort afterward or a pile of files you have to open one by one. Our help pages treat them as separate topics. They belong together, because both are controlled by a column or key in your data source.
Unique IDs: how Templater labels each row
Every row in a Templater spreadsheet is a render job. Every object in a JSON array is a render job too. The data source documentation puts it simply: each row or object represents a specific render job, and each column or property key represents a dynamic layer element in your template. Some columns are special. They track the row ID, the target composition and the output name.
The ID is the first of those. The recommended way to set it is to add a column to your spreadsheet and label the header id. Then type a unique label for each row. The documentation allows any combination of letters and numbers, so spring01, 12345 and NYC2B are all fair game. What matters is that no two rows share one.
Why bother? Because of what Templater does with the label. When it creates an output, it names the output by appending your id to the job prefix and the target composition name. You set the job prefix in the Job Prefix field, which lives in the Output Options group of the Templater Preferences panel. So if your prefix is a campaign name and your target composition has a name of its own, the row with spring01 as its id produces a file whose name is built from those three pieces. You get a predictable name without typing it out for every row.
Now suppose you skip the ID. Templater does not fail. The documentation says that if you do not specify identifying labels at all, Templater uses the spreadsheet row’s index to generate unique identifier numbers. Your outputs still get distinct names. The names are just numbers, and numbers are only useful if you remember which row was which. That is fine for a test run and risky for a real delivery. When you hand a folder of files to a client, “row 47” means nothing to them. “boston-sale” does.
There is a third option, and it outranks the second. The documentation says that if you choose not to designate ids, you can enter unique values in the output column instead. The output column is the one that holds a full custom file name. It also wins any tie. For output naming purposes, values in an output column override values specified in an id column. So a row that has both an id and an output value is named by the output value. The id still sits in the sheet, but it no longer shapes the file name for that row.
That ordering is worth keeping in your head. From strongest to weakest, Templater names a row from its output value, then from its id, then from its row index. A short working rule follows from it. Use id when you want Templater to build the name for you from the prefix and composition. Use output when you need to control the whole name. Use neither only when you do not care what the files are called.
JSON works the same way. In a JSON data source, you add a property key named id to each object and give it a unique value of letters and numbers. If you leave it out, Templater uses the object’s ordinal position in the JSON array. If you add an output property key, its value overrides the id for naming. The documentation for JSON mirrors the spreadsheet documentation almost word for word, because the property key in a JSON object is the equivalent of a column name in a spreadsheet. That one-to-one match is stated in our mapped data page, and it is why a rule you learn for sheets carries over to JSON files and URL feeds unchanged.
Take a concrete case. A regional team wants one short video per branch from a sheet with forty rows. The sheet has a branch name, an address and a phone number, each mapped to a dynamic layer. Without an id column, the files come out with row-index numbers. With an id column that holds each branch’s short code, the files come out labeled with the code. When a branch manager writes in to say their video has the wrong phone number, someone can find the file by its code in a few seconds, correct the row, and render again. That scenario is our own illustration, built from the documented behavior and not from a customer account.
Be careful with your header names. In Google Sheets documents, our documentation says Templater does not currently support column headers that begin with a numeral, contain spaces, or contain the _ character. The header id is safe. The values inside the column can be anything made of letters and numbers. The warning is about the header row, so keep your column labels simple. For more on how Templater works with Google Sheets, read our complete reference for using Templater with Google Sheets. A related trap, a column name that matches a reserved Templater name, is explained in this post on reserved column names.
Switching project files from row to row
Most batches use one After Effects project. Sometimes that is not enough. You might have two or more template project files that need to use the same data. Templater lets you pick the project on a per-row basis, inside the same data source.
The setup has a few steps, and each one comes from the help page on switching between project files. First, create a column in your spreadsheet with the header aep. In each cell of that column, enter an absolute file reference path to a project file that has been prepared for Templater. Absolute means the full path from the top of the drive, not a path relative to some folder. Second, specify a target composition in your project that you want Templater to version. The documentation points to its topic on specifying a target composition for that. Third, in the Templater panel, enter a range of rows in the Start and Finish fields. Fourth, click Render or Replicate, depending on which function you need.
Two details in that list trip people. The first concerns the row range. The documentation says to use the row’s index as displayed in the sheet, and that ranges must start from row 2 or higher. Row 1 is your header row. The second is a warning, and it is the most important sentence on the page: to switch between projects within the same spreadsheet, your AE project files must open without error. Missing fonts or missing effects will halt the process.
That warning deserves a plain translation. Templater cannot render from a project that After Effects will not open cleanly. If one of your template projects needs a font that is not installed on the machine doing the work, the run stops. So before you launch a mixed batch, open each project file listed in the aep column by itself. Fix any missing font or missing effect. Then launch. You pay the price of that check once, in a few minutes. You avoid paying it in the middle of a long run.
Why would anyone want this? A single data set can serve more than one design. Picture a sheet of promotions where some rows call for a wide layout and others call for a tall one. Each layout is its own project file. The data is the same: a headline, a price line, an image path. The aep column points each row to the project that suits it. This is a hypothetical, and we are labeling it as one, but it shows the shape of the feature. The data stays in one place and the designs vary.
There is a reason the data does not need to change. Mapping works by name. Templater applies data to a layer when the layer’s name matches a column header or JSON property key, via the Templater Settings effect. As long as both projects use the same layer names for the same fields, one sheet fills both. If the names differ, the data will not reach the layer. Keep the names consistent across the project files you plan to mix.
The same capability exists for JSON. The JSON topics in our help center list “Switching between Project Files within JSON” alongside the unique ID topic for JSON objects. If your data source is a JSON file or a URL feed, look there for the details. The spreadsheet page, which is the one we draw from here, uses an aep column. We have not repeated the JSON wording because we only describe what the pages we cite say.
If you run Templater Bot, the project column becomes part of a larger set. The data source documentation says that when the Bot is enabled, additional columns denote which After Effects project should be processed, which Bot the data is assigned to, and the render status. In other words, the project-per-row idea is not a niche trick. It is a built-in part of how data can drive the Bot.
Putting it together before you press Render
The two features meet in the output name. A row that points to a different project still gets named from its id, or its output value, or its row index. The rule does not change when the project does. So if you mix projects, make sure the ids still differ from row to row. Two rows can use different layouts and still collide on a name if they share an id and a target composition name.
Here is a short sequence that follows from the documentation. Start with the header row. Add id. Add aep if you are mixing projects. Add output only if you want full control of the names. Keep headers free of spaces, the _ character and leading numerals if you are using Google Sheets. Save text and JSON files as UTF-8 so international characters read correctly. Set a Job Prefix in Preferences if you want one. Choose your Start and Finish rows, beginning at row 2 or later. Then render or replicate.
Do a small run first. Choose a short row range, such as two or three rows, and look at what comes out. Check the file names. Check that each row used the project you expected. A short test is the cheapest way to find a bad path in the aep column or a font that is not installed. For the wider picture of turning a sheet into a batch, see how to make hundreds of personalized videos from data, and for the other places your data can live, 5 data sources you can use with Templater. If you want to see the plugin itself, the Templater page describes the plugin.
What this article does not cover is how the Start and Finish fields behave with a JSON source, or what happens when two ids match. The documentation we drew from does not say, and we would rather tell you that than guess. If either matters to your project, ask us first.
The bottom line is simple. Add an id column to every data source you plan to reuse, because the file names are only as clear as the labels you give them. Reach for the aep column only when one data set truly needs more than one design, and open every listed project by itself before you start the run.
Still have questions about IDs and project switching? Here are the ones we hear most often.
Frequently Asked Questions
Do I have to add an id column to my spreadsheet?
No, but the documentation recommends it. If you specify no identifying labels at all, Templater uses the spreadsheet row’s index to generate unique identifier numbers. That still names every output, but the names are numbers you have to trace back to rows. An id column of your own letters and numbers makes the files easier to find later.
What happens if a row has both an id and an output value?
The output value wins. For output naming purposes, values in an output column override values specified in an id column. The same rule applies in JSON, where an output property key overrides an id property key. The id is still in your data, but the output value decides the file name for that row.
How does Templater build the output file name from an id?
It appends your id to the job prefix and the target composition name. You set the job prefix in the Job Prefix field, in the Output Options group of the Templater Preferences panel. The id itself can be any combination of letters and numbers, which is why short codes and numbers both work as labels.
How do I use two different After Effects projects in one spreadsheet?
Add a column with the header aep and put an absolute file reference path in each cell, pointing to a project prepared for Templater. Specify a target composition, enter your Start and Finish rows in the Templater panel, and click Render or Replicate. Each row then runs against the project named in its aep cell.
Why did my mixed-project batch stop partway?
One cause the documentation names is a project that does not open cleanly. To switch between projects in one spreadsheet, the AE project files must open without error, and missing fonts or missing effects halt the process. Open each project in the aep column by itself, fix what is missing, and run the batch again.
Which row should my Start range begin on?
Row 2 or higher. The documentation says to use the row’s index as displayed in the sheet, and that ranges must start from row 2 or higher. Row 1 holds your column headers, so it is not a render job. If you enter 3 and 5, you ask Templater to work through rows 3 to 5.
Does the id rule work for JSON files and URL feeds too?
Yes. In JSON, add a property key named id to each object and give it a unique value of letters and numbers. With no ids, Templater uses each object’s ordinal position in the array. An output property key overrides the id. Property keys in JSON objects are equivalent to column names in a spreadsheet.