Opens in a new tab
Tutorial

How to configure the Templater Bot: the settings that matter

Published October 15, 2026Last modified October 21, 2026

Most of the Templater Bot is not configured in one place. A few settings live in the Preferences dialog, a few live in the columns of your data source, and a few live in scripts you register against events. A producer setting up a first Bot does best by learning those three places before touching anything, because a setting in the wrong place looks exactly like a Bot that is broken.

This article is written for that producer. You have a rigged After Effects project, a data source with some rows in it, a Bot edition license, and a plan to stop clicking Render by hand. You want to know which settings matter on day one, what each one does, and what to test before you trust the thing overnight. We cover only what our documentation spells out. Where the documentation is silent, we say so and give you a small test you can run yourself.

One note on scope. The full list of Bot Settings sits on a page in our support docs called Configuring Settings for the Bot, and that page is the reference to keep open next to your Preferences dialog. What follows is the working set that the rest of our documentation describes in detail. If the dialog on your machine shows a field we do not mention, read that page before guessing.

Where the Bot’s settings actually live

Start with what the Bot is. It is a feature of the Templater Bot edition that makes Templater behave like a robot operating After Effects for you. It works as a background process that watches a data source for incoming data and renders video when new rows show up. Rig prepares a project and Pro renders batches you start yourself. Bot is the edition that watches by itself, and the Enable Bot button is only available in that edition. If the button is gray, check your edition before you check anything else. Our licensing guide, linked in the FAQ below, explains the three editions.

When you click Enable Bot, Templater enters a server mode and begins checking your data source at regular intervals. The panel freezes except for one button, Disable Bot. That freeze is normal. It is not a hang, and it is the first thing a new producer mistakes for a crash. The panel is waiting for work, and the only control you need is the one that stops it.

Now the three places. Think of them as three different questions.

The first question is “what should the Bot do with this row?” The answer lives in the data source. The columns render-status, bot, id, output, target, aep, module and render-settings are reserved names, and each one carries an instruction for a single row. Change a cell and you change what happens to that row.

The second question is “how should this machine behave?” The answer lives in Templater Preferences, in the Bot Settings area and in the Advanced group. This is where a Bot gets its name, where it is told what shell script to run when it is disabled, and where it is told which folder to write its log into.

The third question is “what should happen around the render?” The answer lives in event scripts. Templater broadcasts events as it works, and you can register a script against any of them to move files, send a notice, update a database, or fix up a status. These only work with the Bot edition installed and activated.

Keeping the three apart saves hours. A row that never renders is a data source problem, so check the render-status cell. A machine that renders the wrong rows when two Bots share a sheet is a Preferences problem, so check the Bot Name. A finished video that never arrives where your team expects it is an event script problem. Each symptom has one home.

The data source settings that decide which rows render

The Bot reads a data source that is set up the same way as any standard Templater data source, with at least two extra columns for a single Bot. The supported types are QUE, a cloud spreadsheet, a URL feed, and local JSON and TSV files. Each row of a spreadsheet, or each object in a JSON array, is one render job. Each column or key maps to a dynamic layer in your template. Read our walkthrough of the data sources that work with Templater if you have not chosen one yet, and QUE if you want the JSON-based option built to pair with Templater.

render-status is the only switch you need to touch

Create a column named render-status. That is the whole job. The Bot looks in this column for the word ready, and it ignores everything else. Your rule as the human is simple. You, or your application, only ever type ready into this column, or you empty the cell by deleting its value. Templater writes every other value itself.

Those values tell you the life of a row. The Bot retrieves the rows marked ready and changes them all to queued. Then it takes each queued row in turn, sets it to processing, versions the target composition with that row’s data, and sets it to done. If it hits an error it writes a code instead. ERR::MEDIA means it had trouble locating or importing a media asset, and our documentation adds that in many cases the output video may still have rendered but may contain a media issue. ERR::AFXHOST means After Effects itself, the host application, reported an error. The docs say that when you see it, After Effects has likely stopped operating normally, and that you can learn more by looking at After Effects on the machine running Templater.

Two details are worth knowing before you build a sheet. First, the column should only hold those reserved terms or stay empty, so do not use it for your own notes. Put notes in a different column. Second, if you keep formulas in render-status cells, know that as of Templater 2.9.5 a formula in a processed cell is overwritten with the formula’s result. Earlier versions overwrote the formulas in all processed rows. The safest habit is to type plain values into this column and put any clever logic somewhere else.

Make the output name unique per row

The Bot is fully automated, so it will overwrite an existing file if two rows render to the same output file name. Nobody gets a confirmation dialog. Our documentation tells you to make the id or output column carry a unique value for each row. The id value is appended to output file names when there is no output column or when the output cell is blank. If you leave both out, Templater devises a name for you from the row index.

Take that seriously on the first day. A producer who types “promo” into the output column for every row ends up with one file and a sheet full of rows marked done. The Bot did exactly what it was told. Nothing was wrong except the instruction.

The columns that change how each row renders

Four more reserved columns are optional, and each one changes one row at a time. The target column names which composition in the project to process. If the named composition is not found, or the column is missing, Templater processes the default target composition. The aep column switches between After Effects project files on a per-row basis, and its values must be absolute file paths. The module column picks an After Effects output module and the render-settings column picks a render settings template. The values in both of those are case sensitive.

Reserved names are case sensitive too, and using them as dynamic layer names can cause an error in processing. That is the quiet trap. A designer names a text layer “output” because it holds the word the viewer sees, and the Bot reads the column as an instruction instead of a caption. Rename the layer. The flags that Templater supports in a data source follow the same case-sensitive habit, so the double braces around off and around a composition name need to match exactly.

Dataclay installs two template files with Templater, one for output modules and one for render settings, so that you can output drafts quickly and standardize final formats across several machines. Load them through After Effects and the Templater panel and the names, such as the PNG sequence template that our docs recommend for quality control stills, appear in the menus. Whether the Bot honors the same dropdowns in the panel that a manual batch render uses is something our Bot pages do not state. If you rely on it, run one row through the Bot with the module column filled in and look at what comes out.

The data hygiene that looks like a setting

Some of the first-day failures in our troubleshooting guide are not Bot settings at all. They are data problems that show up through the Bot. Layer names must match the column names or property keys, or the target composition does not update. If you use a cloud spreadsheet, column names that begin with a numeral, contain spaces, contain the _ character or contain a dollar symbol cause trouble. Footage layers do not update when no footage source folder is set, when the folder or file does not exist, or when file name references do not match, because references to sources are case sensitive. TSV files exported from a spreadsheet application need a matching checkbox in Preferences so that stray characters do not appear in dynamic text. Fix these in a manual preview first, before you ever enable the Bot. A problem you can see in a preview costs seconds. A problem you find after eighty unattended renders costs a morning.

The Preferences that matter on a first Bot

Open Templater, click Preferences, and look at two groups. Bot Settings holds the Bot Name and the On Disable shell script. Advanced holds the log directory. There is more in that dialog, but those three fields are the ones our guides tie directly to running a Bot, so start there.

Bot Name, and when to leave it empty

You only enter a Bot Name when you run more than one Bot against the same data source. Using several Bots on one source is how you process video faster. Each Bot gets a unique name in the Bot Name field in Preferences, and you add a column named bot to the data source. Then you assign each row to a Bot by typing that Bot’s name into the cell. The values must match what you entered in the Bot Name field.

If you only run one Bot, leave the name alone and do not add the column. This is worth stressing because it is the single most common way to break a clean setup, and our FAQ covers it directly. If a Bot Name is set in Preferences but no column headed bot exists in the data source, Templater can report an error with code 3 when requesting information from the spreadsheet service. The same error appears when the render-status column is missing entirely, because the Bot cannot find a value it needs. In both cases the Bot is asking the sheet a question the sheet cannot answer.

Our documentation says machines running Bots can be in separate geographic locations when the sheet lives in the cloud, since every machine reads the same document. It does not say what happens when two Bots with different names are pointed at a row whose bot cell is empty. If your sheet will have such rows, test with two rows before you rely on it. Put a different Bot name in each row’s bot cell, mark both ready, and confirm that each machine takes only its own row.

The On Disable script

When you click Disable Bot, Templater runs the On Disable shell script named under Bot Settings. If you leave it blank, our guides do not describe anything else that happens at that moment, so assume nothing. If you do fill it in, use it for housekeeping you would otherwise forget, such as a notice that the Bot has stopped. This matters more than it sounds, because a Bot that was stopped on purpose and a Bot that died look the same from across the room.

Where the log goes

In the Advanced group you choose the directory where Templater writes its log. If you leave it empty, it writes to the logged-in user’s documents folder. As of Templater 3.3, the button beside the field opens that location in the macOS Finder or Windows Explorer, and Templater logs all activity whether or not a project is open. Choose a directory on purpose. A Bot running on a render machine is going to produce the only record of why a row failed at three in the morning, and you do not want to hunt for it in a user folder nobody remembers.

Know the buttons in the main panel. Reset Log creates two new files, templater.out and templater.log, and if log files already exist it erases their contents. Show Log opens a window on templater.out, which carries color encoding. The color encoding is stripped from templater.log, and that is the file to share with anyone helping you. Errors go to templater.err. At the bottom of the panel, the console shows what Templater is doing and displays error messages, so read it first and the log second.

Our guidance for a first run is to reset the log right before you enable the Bot. A clean log with one test batch in it is easy to read. A log with a month of history is not.

The disk cache, which is an After Effects setting that bites a Bot

One precondition is not a Templater setting at all. Our enabling guide says to be prepared to empty the After Effects disk cache manually after each job if you have not optimized disk caching for Templater. In After Effects, go to Edit, then Preferences, then Media and Disk Cache, click Empty Cache in the Disk Cache section, and confirm. If the button is disabled, the cache is already empty. For an unattended Bot, “manually after each job” is a real problem, since nobody is standing there. Our documentation does not give a number for how much cache is too much or tell you how to tune it, so do not guess. Watch free disk space on the render machine during your first test batch, and if it shrinks with every video, talk to us before you leave the Bot running overnight.

Event scripts, the command line, and a first-day test

Everything above gets rows rendered. Event scripts get them delivered. They also fix the one real hole in a URL feed setup, so read the next paragraph if that is your data source.

If your data source is a URL feed

With a URL feed, the Bot cannot update the render-status value, because the feed belongs to your system and not to Templater. Our documentation warns that you should register custom scripts to update render-status at the right events, so that ready rows are not rendered again. The events named for this are the ones that fire when a job finishes, when a batch finishes, and when the Bot is disabled. If you skip this step, the feed keeps saying ready and the Bot keeps rendering the same rows. That is an easy way to fill a drive.

How events and scripts fit together

Templater broadcasts events across four parts of its process. In order they are task invocation, data retrieval, the batch process, and Bot operation. There is an event before and after the data is retrieved, before and after the whole batch, and before and after each single job. Inside a job there are more, around footage downloading, footage processing, the update that injects mapped data into layers, spot checks, and output. There are also Bot Enabled and Bot Disabled events, broadcast right after the Bot becomes enabled or disabled.

For a producer, two of those events do most of the work. The After Job event fires right after a single job completes, and a job counts as complete once output is generated. That is the place to move a finished file to where your editors look for it. The After Batch event fires after the whole loop ends, and the documentation’s own example is a script that stitches all the outputs together into one video file. Use After Batch for anything that needs every row to be finished first.

Scripts come in two kinds. Shell scripts handle files and the outside world, like moving or transferring files, sending notifications, updating databases, transcoding output and sending email, and you can write them in any language your system supports. ExtendScripts work on objects inside the project, like compositions, layers and keyframes, and must be written in ExtendScript with Templater’s API. You can register one of each against the same event. The shell script always runs first.

The traps that eat the first afternoon

Event scripts only work in the Bot edition. Arguments are not passed automatically. As of Templater 2.7 the “For all commands, use job details as arguments” preference is deprecated, and if your application depended on it, your registered scripts fail until you append the arguments explicitly. The same change removed the job_detail_args property from the templater-options.json file. Shell scripts also do not log anywhere by default. Redirect your script’s output to a file yourself, or call the log method in Templater’s ExtendScript API to write into templater.log and templater.err.

When a script does not fire, our troubleshooting guide gives a short routine. Open templater.log and search for the phrases EVENT SCRIPT ERROR or EXEC SHELL SCRIPT. Find the line that begins with “Full command line”, copy only that command, paste it into your own terminal session and press Enter. If it works there but not in the Bot, the script is probably not executable by the user running After Effects, and on a Mac the guide’s fix is a chmod u+x command on the script file. On Windows, use the Security tab in the file’s properties.

If you drive the Bot from the command line

The Bot has a command line interface, and the options for it live in a templater-options.json file. Two properties matter early. The log_location property names the directory where templater.log, templater.err and templater.out are written, and it is where the launcher scripts look when they report the last logged message and last error after a run. The quit_on_errors property is an array of error codes. If you list a code in it, After Effects force quits on the first occurrence of that error. Our code list includes 1001 for an error swapping a footage source, 1002 for an error downloading remote footage, 1003 for a footage file that could not be found on the network, 3001 for an error conforming row data, and 5001 for a layout engine error. That stops a bad run on the first occurrence, but our documentation does not describe what starts the machine working again afterward, so plan that part yourself. The FAQ also notes that monitoring a data source from the command line needs the -ui argument when After Effects is not running in the foreground.

A first-day test for a producer

Picture a producer with a fifteen second promo and a sheet of twelve rows, one per region. The template previews perfectly in the panel. Here is the order we would use to trust the Bot with it.

Start by previewing every row by hand. Fix any layer that does not update. Then set the log directory, reset the log, and add the render-status column. Put unique values in the id column. Mark only two rows ready and leave the other ten empty. Enable the Bot and wait, because our documentation says that on first enabling you may have to wait for it to check the source. Watch the two rows move from ready to queued to processing to done. Open both output files and compare them with your preview. Then disable the Bot and read templater.log from top to bottom.

Next, break something on purpose. Rename a footage file on a copy of one row, mark that row ready, and see what the Bot writes into render-status and what the log says. Our documentation tells you the possible codes, but it does not say what a row looks like if the machine loses power halfway through processing. Learn that on a test row you can afford to lose. If a row ever sticks at processing after an unclean stop, the documentation does not name a recovery step. The only values it says a person should type are ready or an empty cell, so on a test row try one of those and confirm that the video renders before you do the same to a real row.

Only then mark all twelve ready. For timing, do what our FAQ suggests and render a single representative video on a machine comparable to your production machine. Multiply that time by the number of videos to estimate a queue. Length, resolution, hardware, the ratio of dynamic to static frames and how heavy the effects are all change the number. If twelve rows will take too long on one machine, add more machines and give each its own Bot Name, as described above. Our export optimization tips cover the template side of speed, and the spot check guide shows how to check stills from each version of a large batch before you commit to the full run.

The bottom line

Configure the Bot in this order. Get the data right first, since it carries the per-row settings. Set the Bot Name only if you run more than one Bot. Choose your log directory on purpose. Register scripts only when you know what should happen after a job or batch finishes, and register them early if your source is a URL feed. Then test on two rows, break one on purpose, and read the log before you trust any overnight run.

Where our documentation is silent, such as how often the Bot checks by default, how it recovers a half-finished row, or how much disk cache is too much, we are not going to invent an answer. Test it on your own hardware, or ask us. Our learning pages are the place to go next if you are still deciding whether the Bot edition fits your volume. A studio that is happy to start every batch by hand may find Pro enough. A team that needs videos created on demand with nobody at the keyboard is exactly who the Bot is for.

That is a lot of settings for one tool. These are the questions we hear most from people about to switch their first Bot on.

Frequently Asked Questions

Which Templater edition do I need to use the Bot?

You need the Bot edition. The Enable Bot button is only available there, and event scripts are only supported in Bot as well. Rig and Pro do not include those functions. A common surprise comes from the free trial, which includes every feature, Bot features among them. If you buy Rig or Pro after the trial, the Enable Bot button is disabled because the license does not cover it. Our Templater licensing guide explains the editions, and our licensing page has current pricing. You can upgrade a license if you find you need more.

Do I need a bot column and a Bot Name if I only run one Bot?

No. The Bot Name field in Preferences and the bot column in the data source are for running more than one Bot against the same source. With a single Bot, you only need the render-status column. Adding a Bot Name without a matching bot column is a documented cause of an error with code 3 when Templater requests information from the spreadsheet service. If you later add a second machine, give each Bot a unique name and type the matching name into the bot cell of each row.

What should I type in the render-status column?

Type ready to tell the Bot a row should be processed, or leave the cell empty. Templater writes every other value for you, which are queued, processing, done, ERR::MEDIA and ERR::AFXHOST. Do not use the column for notes, and avoid formulas in it, since as of Templater 2.9.5 a formula in a processed cell is overwritten with its result. If your source is a URL feed, the Bot cannot write to the column, so register a script to update it.

How often does the Bot check my data source?

It checks at regular intervals, and our documentation sets a floor. For a cloud spreadsheet the interval can be no shorter than 0.3 minutes, about 18 seconds, because of the spreadsheet service’s rate limits. For URL feeds it can be no shorter than 0.2 minutes, about 12 seconds. The documentation does not state a default interval, and it notes that after you first enable the Bot you may have to wait for the first check. Test with two rows and time it yourself.

Why did my Bot overwrite finished videos?

The Bot overwrites an existing file when two rows render to the same output file name, and it does not ask first. Our documentation tells you to make the id or output column unique for every row. If there is no output column, or the cell is blank, Templater appends the id value to the file name. Check this before you mark a large batch ready, because a sheet can show every row as done while only one file exists on disk.

Where do I look when a row ends in an error code?

Read the render-status cell first. ERR::MEDIA points at a media asset that could not be located or imported, and the video may still have rendered with a media problem in it. ERR::AFXHOST means After Effects reported an error, and you should look at After Effects on the machine running Templater. Then read the console at the bottom of the panel and the templater.log file in the directory you chose under Advanced in Preferences. For the command line, templater.err holds the error object with its code and details.

Can an event script run when the Bot finishes a job?

Yes. Templater broadcasts an After Job event right after a job completes, and a job counts as complete once output is generated. You can register a shell script against it to move or transfer the file, send a notice or update a database. Arguments are not passed automatically, so append them to the script yourself. Shell scripts do not log to a file by default, so redirect their output or use Templater’s logging method from an ExtendScript. Event scripts only work in the Bot edition.

Leave the first comment

Sign up

Stay up to date with Datclay's newsletter. We won't spam your inbox.

Newsletter Signup
Name
Name
First
Last

By submitting your email, you agree to our Terms and Privacy Policy. You can opt out at any time.