Eight column names belong to Templater before you ever open your spreadsheet: id, target, output, aep, render-status, bot, module and render-settings. If you use one of them as the name of a dynamic layer, our documentation says it “can cause an error in processing your data source.” So the safe habit is simple. Give every layer of your own a name that is not on that list.
Most people hit this in their first week. You build a sheet for a new template, you name a column the most natural thing in the world, and the natural thing turns out to be a word we already use. This page is for that person. It covers what the eight names do, why a collision is a problem, what our docs say and what they leave unsaid, and how to name your own columns so you never think about it again.
What the eight reserved names are, and what each one does
Templater reads a data source row by row. Each row is one render job. Most columns are yours: a headline, a photo path, a hex color, a price. But a few columns are instructions to Templater itself, and those are the reserved ones. A spreadsheet column and a JSON key are treated the same way here, so everything below applies to both.
Here is the full list, in plain words.
id is the label for a row. By default Templater identifies outputs by the row index in a spreadsheet, or the index position of a JSON object in an array. The id column is not required, but we recommend it, because it lets you attach your own label to each output. The id value is appended to the output file name if there is no output column, or if that column is blank for the row.
target says which composition in the project file should be processed for that row. If Templater cannot find a composition with the name you gave, or if the column is not in the sheet at all, it processes the default target composition.
output is the name of the output file for each render job. Leave the column out and Templater makes up a file name for you.
aep lets you switch between After Effects project templates on a per-row basis inside the same data source. The values must be absolute file reference paths.
render-status is required if you want to use the data source with the Templater Bot. It tracks whether a row is ready, queued, processing or done.
bot is required if more than one Bot processes the same data source. It says which Bot owns which row.
module names an After Effects output module for the rendered file. The values are case sensitive.
render-settings names the After Effects render settings template for the rendered file. These values are case sensitive too.
Two of those, module and render-settings, hold names that live inside After Effects. The others, id, target, output and aep, steer Templater’s own job handling. And render-status and bot exist for the Bot. Notice that none of them is exotic. Id, target, output and module are ordinary English words, which is exactly why they cause trouble.
The documentation also notes that if you plan to deploy video with Projector, Projector has reserved data source names of its own. That list is not on the page we are drawing from, so we will not guess at it. If you are heading for Projector, check its documentation before you finalize column names.
Why a collision is a problem, and what the docs actually say
Here is how Templater connects a sheet to a template. You rename a layer so that its name matches a column header or a JSON key. You apply the Templater Settings effect to that layer. From then on, when Templater previews, renders or replicates a target composition, it pours the value from each row into the layer whose name matches the column. That is the whole mapping. The name is the wire.
Now picture a layer you called output. Templater sees a column called output and has two possible readings. One is “this is text for a layer.” The other is “this is the file name for the render.” The same word is carrying two jobs. Our documentation says that using a reserved name as a dynamic layer name can cause an error in processing the data source. That is the sentence we can stand behind, and we are going to stay inside it.
What the page does not say is just as useful to know. It does not list the exact error you will see for each of the eight names. It does not say whether the failure shows up at preview, at render, or only when the Bot picks up the row. It does not say what happens when a reserved name appears as a layer name in some jobs and not in others. We could invent a tidy answer for each, and it would read well. It would also be a guess presented as fact. If you want to know what a specific collision does in your own project, the way to learn it is to try it in a scratch copy, and the way to avoid learning it is to rename the layer.
That second path is cheaper. A rename takes seconds. Debugging a batch that stopped on row 40 can take an afternoon.
There is one more detail worth taking seriously: the docs say column names are case sensitive. That is stated about the reserved list, and also for the values in the module and render-settings columns. In practice, that means Output and output are different strings to Templater. We would still not build a sheet that relies on that difference. Case-sensitive rules are written for a machine. The person who opens your spreadsheet in six months is not a machine, and a column called Output sitting next to a column called output is a trap for them. This paragraph is general practice, not a statement from the docs, but it is how we would build the sheet.
A first spreadsheet, and the four names most likely to bite
Let’s use a concrete case. Say you make training videos for a company that runs short onboarding courses, and you are building your first data source. Each row is one learner’s welcome video. You want these columns: the learner’s name, the course name, the module they start with, a sales target figure for their first month, and a member number printed in the corner.
Written the way a person naturally writes headers, the sheet would look like this: name, course, module, target, id. Four of those five are fine in a sense that matters and one is a real problem. Look closer.
The column called module is on the reserved list. In your head it means “the training module this learner starts with.” To Templater it means “the After Effects output module to use for this row,” and its values are case sensitive. If you put “Safety Basics” in that column, you have asked Templater to render with an output module called Safety Basics. Nothing in the docs says what happens next, and we would not want to find out on a live batch.
The column called target is also reserved. In your head it is a sales target number. To Templater it is the name of the composition to process. A value like 5000 names a composition that almost certainly does not exist in your project. By the documentation, Templater then falls back to the default target composition, which means a mistake that looks quiet. The video renders. It just might not be the composition you meant, and the number you wanted on screen is not mapped to anything.
The column called id is reserved as well, and in this case it is doing what you want, because you did mean “my label for this row.” That is the one reserved name where your instinct and Templater’s meaning line up. Using it is the recommended move. The value will be appended to the output file name if there is no output column or the output cell is blank, so a member number there gives you files you can find later.
The remaining two, name and course, are not on the list and need nothing.
So the fix for that sheet is a rename of two columns, and a decision to keep one on purpose. A sensible result looks like this: learnerName, courseName, startModule, salesGoal, id. Each name is easy to read, none contains a space, none begins with a number, and none is reserved. That is the pattern we would repeat every time.
A word on how to choose those names. Our mapping guide gives introTitle as its own example of a layer name and tells you to avoid spaces in layer names. It also says to name layers something easily recognizable because the layer name corresponds to a column name. We follow that. Camel case, a leading word that says what the field is, and no punctuation.
Other naming rules that sit next to the reserved list
The reserved list is one way a layer name goes wrong. There are a few others in our docs, and it helps to keep them in one place, because a first-time builder tends to hit several in the same afternoon.
If your data source is a native Google Sheets document, Templater does not currently support column headers that begin with a numeral, contain spaces, or contain the _ character. That is a separate rule from the reserved names, and it is easy to break by accident. A header like “2nd offer” breaks two parts of it. A header like “promo_line” breaks one. “promoLine” is fine. This is the reason the camel case habit pays off twice: it keeps you clear of the Google Sheets limits and gives you readable layer names.
Layers must be explicitly renamed after you create them, even if the source name you typed when creating the layer matches the column name. If you skip the rename, Templater may not process the layer as dynamic. That one catches people because the layer looks right in the timeline. The name on screen is the source name, not an explicit layer name.
Do not apply the Templater Settings effect more than once to a layer. The docs warn that doing so introduces unexpected results. One layer, one effect.
TSV and JSON files must be UTF-8 encoded so that Templater can read international characters.
Flags are a different thing again, and they are easy to confuse with reserved names because both live in your data. A flag goes inside a cell, not in a header. You wrap a supported term in double braces or double brackets, such as , and Templater recognizes it. The flag hides a dynamic layer for a particular job. A flag that names a composition swaps the source of a composition layer. Flags are case sensitive as well. The reserved column names decide what a column is. Flags decide what a single cell does. We wrote a longer walk through of those in The Magic of Using Flags in Templater Data Sources.
Finally, if you run the Bot, remember that it overwrites existing files when two rows would render to the same output file name. The docs tell you to make sure the id or output column holds unique values for each row. This is where the id column earns its place. With a unique id on every row, the file names do not collide. Without it, you can render forty videos and end up with one.
A short routine before you save the sheet
You do not need to memorize the list. You need a habit that runs before you wire anything up. Here is the one we would use as a first-time builder.
Write down the layer names you plan to use before you touch the spreadsheet. Read each against the eight reserved names. Then check three things about the survivors: no spaces, no leading number, no _ character, especially if the source is a Google Sheet. After that, rename the layers in After Effects explicitly, apply Templater Settings once per dynamic layer, and preview a few rows.
Previewing is where you find out whether the mapping holds. Our post on generating spot checks with Templater shows how to sample rows before a full batch, and it is a good companion to this routine. If a layer stays unchanged when you expect it to fill, look at its name first. Then look at the column header. Then look at the case.
If you are still choosing a data source, 5 Tested Data Sources You’ll Love Using with Templater covers the options, and the Google Sheets walkthrough goes through that route step by step. When you are ready to run the whole sheet, Templater is the product page, and our learning hub collects the rest.
The honest bottom line
Reserved column names are a short list, and the cost of ignoring them is a vague error in the middle of a batch. The cost of respecting them is renaming a few layers.
Here is what we know for certain. Eight names are reserved. They are case sensitive. Using them as dynamic layer names can cause an error in processing your data source. Here is what we do not claim: the exact failure for each name, or how every combination plays out in every project. Where our documentation is quiet, we are quiet too.
If you are building your first sheet, do not try to be clever with the reserved words. Use id on purpose, because it helps you. Keep the other seven for the jobs they were made for. Name everything else with plain camel case words that no one else has claimed, and your first batch will be a much calmer afternoon than it might have been.
We covered a lot of naming rules above. These are the questions first-time builders ask us most often about reserved names.
Frequently Asked Questions
What are the reserved column names in Templater?
There are eight: id, target, output, aep, render-status, bot, module and render-settings. They hold instructions for Templater, such as which composition to process, what to call the output file, or which Bot owns a row. Our documentation says that using them as dynamic layer names can cause an error in processing your data source. Projector has reserved data source names of its own, so check its documentation if you plan to use it.
Are reserved column names case sensitive?
Yes. Our documentation states that column names are case sensitive, and that the values in the module and render-settings columns are case sensitive too. So Output and output are different strings. We still recommend avoiding near-twin names, because the next person to open your spreadsheet may not notice the difference between them.
Does every spreadsheet need all eight reserved columns?
No. The id column is not required, though we recommend it. The target, output, aep, module and render-settings columns are optional. The render-status column is required if you use the Templater Bot, and the bot column is required only when more than one Bot processes the same data source. A simple sheet for Pro or Rig can have none of them.
What happens if my layer name matches a reserved name?
Our documentation says it can cause an error in processing your data source. It does not describe the exact error for each name, or at which step it appears, so we will not guess. The practical fix is to rename the layer and the matching column to something that is not on the list, then preview a few rows to confirm the mapping.
Is it fine to use id as a column name?
Yes, and we recommend it. Id is reserved on purpose. It lets you label each output your own way, and the value is appended to the output file name if there is no output column or if that column is blank. With the Bot, unique ids also help you avoid overwriting files that would otherwise share a name.
How should I name my own columns to stay safe?
Use short, readable names in camel case, such as introTitle, which is the example in our mapping guide. Avoid spaces, avoid starting with a number, and avoid the _ character, since Google Sheets documents do not currently support headers that begin with a numeral, contain spaces or contain the _ character. Then check each name against the reserved list before you build the sheet.
Do reserved names apply to JSON data sources?
Yes. Our documentation lists them as column names and JSON keys, and says property keys in JSON objects are equivalent to column names in a spreadsheet. If you use a JSON file or a URL feed, keep the same eight names off your layer names. TSV and JSON text files must also be UTF-8 encoded.