One Bot needs one extra column in your data source, called render-status. Several Bots on the same data source need two, render-status plus a bot column that says which Bot owns each row. Everything else about a Bot-driven data source is the ordinary Templater data source you already know.
That small difference runs the whole show, because the Bot talks to you through those columns. You write one word to start a job, and Templater writes the progress back into the same cell. This article walks through how that conversation works, how to set up a single Bot, how to add more, what each status value means when you see it on a Monday morning, and the traps our documentation warns about. It also says plainly where more Bots help and where the documentation stops.
How the Bot reads your data source
The Templater Bot is a way to version an After Effects project automatically, as a background process. You prepare the project once. You tag the layers that should change with the Templater Settings effect, set up a data source, and link that data source to the project. After that, a person or an application adds rows, and the Bot turns rows into video.
Enabling the Bot puts Templater into a server mode. It stops waiting for you to click anything and begins checking your data source at regular intervals. In the Templater panel you click Enable Bot. The button label then changes to Disable Bot, and the rest of Templater’s interface freezes, with the Disable Bot button as the only live control. The documentation describes this as part of enabling the Bot.
Here is the sequence the Bot follows, in order, because the order explains every status value you will see:
- The Bot checks the data source and retrieves the rows whose render-status value is ready.
- It changes the render-status of every row it retrieved to queued.
- For each queued row, it changes the render-status to processing, versions the target composition with that row’s data, and outputs it.
- When a row finishes, it sets render-status to done. If something goes wrong, it sets an error code instead, such as ERR::MEDIA or ERR::AFXHOST.
- After all retrieved rows are done, the Bot keeps checking for new rows.
When you first enable the Bot, you may have to wait for that first check to happen. It does not read the sheet the instant you click. If you enable it and nothing seems to move, give it a moment before you suspect a problem.
Why a status column and not a button
You might ask why the Bot uses a column at all. The answer is that a column lets any system take part. A person can type ready into a cell. A web form can write it. A script can write it. The Bot does not care who wrote it. It only looks for the word. That is how a front-end application can take part, and it is the reason this one column carries so much.
The division of labor is strict. You, or your application, should only ever write ready into the render-status column, or empty the cell by deleting its value. Every other value belongs to Templater. If you type queued or done into a cell yourself, you are writing a value that belongs to Templater, so do not.
Setting up a single Bot
A data source for the Bot is set up the same way as a standard Templater data source, with extra columns for the Bot. For one Bot the extra column is render-status, and its rule is simple. Values in it should be only reserved terms, or the cell should be empty.
Create the new column in your spreadsheet and name it render-status. Spell it exactly that way. Use that exact name, because the documentation names the column render-status. Then, in each row you want processed, enter ready.
Before you click Enable Bot, our documentation lists what should be true. The data source needs a render-status column. At least some of the rows should have ready in that column, or the Bot will start and find nothing to do. And be prepared to empty the After Effects disk cache by hand after each job if you have not optimized disk caching for Templater. To do that, go to Edit > Preferences > Media & Disk Cache in After Effects, click Empty Cache in the Disk Cache section, and click OK. If the button is disabled, the cache is already empty.
The overwrite trap
One tip in the documentation deserves its own heading because it destroys work. The Bot is fully automated, so if it is set to render to the same output file name, it overwrites the existing file. If two rows resolve to the same output name, the later one can replace the earlier one, and you can end up with fewer videos than rows.
The fix is to make sure your id or output column contains a unique value for every row. A product code works. A row number works. A customer name works only until you have two customers with the same name. Decide on this before the first big batch, not after you notice that a few hundred videos have gone missing.
If your data source is a URL feed
Our documentation has a warning for this case. When you use a URL feed, the Bot cannot update the value of the render-status key, because the data source is specific to the user’s system. The practical result is that the Bot has no place to write queued, processing, or done, and it may render the same ready rows again and again.
The solution is to register your own scripts to update render-status values at suitable events. The documentation notes that as of version 2.1.10, the Post Job, Post Batch, and On Bot Disable events are broadcast, and those are the hooks you use. If you rely on a feed, write that script before you leave the Bot running unattended. We cover other data source types in 5 data sources you can use with Templater.
A note on formulas
If your sheet uses formulas in the render-status cells, read this. When the Bot updates the column, as of Templater 2.9.5, any formulas in those cells are overwritten with the formula’s result. Earlier versions of Templater overwrote all formulas in processed rows. So a formula in render-status will not survive the Bot’s first pass over that row. Keep your formulas in other columns, and let render-status hold plain values.
Setting up many Bots on one data source
You can use more than one Bot to process the same data source. Our documentation says this allows you to process video faster. It does not give a number, and it does not say how much faster, so treat it as a direction and measure on your own project. A fair test is the same rows, the same template, and the same hardware, run once with one Bot and once with several, with a stopwatch on both.
The setup adds two steps to the single Bot setup. Each Bot needs a name, and each row needs to say which Bot it belongs to.
Name every Bot
Create the render-status column first, exactly as for a single Bot. Then, in the Templater panel, click Preferences. In the Bot Settings group, enter a unique name in the Bot Name field. Do this for each Bot that will read from and write to the same data source. Each Bot gets its own name.
The documentation adds a note that is easy to skip. Only enter names to identify your Bots if you enable more than one Bot. If you run a single Bot per data source, you do not need to name it. Naming is there to tell Bots apart, so a lone Bot has nothing to be told apart from.
Add the bot column and assign rows
In your spreadsheet, create another column and name it bot. For each row, enter the name of the Bot that should handle it. The value must match what you typed in the Bot Name field in Preferences. If one Bot is named alpha and the sheet says Alpha-1, the match fails.
Then enter ready in the render-status column of the rows to process, exactly as before. Each Bot now looks for rows that are marked ready and carry its own name.
That assignment is how the work is divided between Bots. You decide ahead of time who gets what. If you want an even split, make the split in the sheet. Rows one through fifty to one Bot, fifty-one through a hundred to the other. The documentation does not describe any automatic balancing between Bots, and it does not say what happens to a row whose bot cell is empty, so do not rely on behavior it does not describe. Fill the column for every row.
The overwrite warning applies with extra force here. Two Bots writing to the same output folder with colliding names can overwrite each other’s work. Unique ids matter even more when several Bots are working at once.
Where more Bots help, and where they do not
More Bots help when the limit is how many rows one Bot can get through. They do not help if the limit is the data, the template, or a shared resource. If every video is slow because the project carries heavy unused layers, five Bots will each be slow. Fixing the project comes first, and our article on speeding up After Effects exports covers that ground.
Our documentation also does not say whether the Bots must run on separate machines, or what hardware you need. We are not going to guess. If you are planning real capacity, read how to size a render farm for unpredictable, deadline-sensitive volume and talk to us about your volume.
Reading render status like a dashboard
Once the Bot is running, the render-status column becomes your dashboard. You can open the sheet and see at a glance what is happening, because each value means one specific thing. Here is the full list of reserved terms.
- ready. Written by you or your application. The row is marked for processing.
- queued. Written by Templater. The Bot has picked the row up and it is waiting its turn.
- processing. Written by Templater. The row is being versioned and output right now.
- done. Written by Templater. The row has been turned into a customized video.
- ERR::MEDIA. Written by Templater. It had trouble locating or importing a media asset.
- ERR::AFXHOST. Written by Templater. After Effects, the host application, hit an error.
The two error codes need a closer look, because they mean different things and call for different responses.
ERR::MEDIA means a file was missing or would not import. The documentation adds a careful note. In many cases the video may still have been rendered, but it may contain a media problem inside the output. So do not assume a video exists or is clean. Open it. Then check the row’s footage paths and file names.
ERR::AFXHOST is more serious. It means After Effects itself encountered an error. The documentation says to learn more by looking at After Effects on the machine running Templater, and warns that After Effects will likely have stopped operating normally. In practice, go to that machine, read what After Effects is showing, and be ready to restart it before the Bot goes on. If this happens in the middle of a large batch, our article on what happens when a Templater batch fails mid-queue explains what to expect.
Retrying a row
The documentation does not describe a special retry command. The model it gives you is the column. You or your application are allowed to write ready, or to empty a cell. So after you fix the cause of an error, the natural move is to put ready back in that row. Treat that as our reading of how the column works, and test it on one row before you rely on it for hundreds.
Turning the Bot off
To stop, click Disable Bot in the Templater panel. After it disables, Templater runs the On Disable shell script from the Bot Settings area of Preferences, if you have registered one. That is the moment to clean up, such as resetting render-status values for a URL feed. Check the render-status column once more after you disable, so you know which rows finished and which are still marked ready.
One Bot or many: the bottom line
Start with one Bot. Add the render-status column, put ready in the rows to run, make sure every row has a unique output name, and watch the column fill with queued, processing, and done. A single Bot is simpler to understand, simpler to debug, and enough for many workloads.
Move to several Bots when one is not finishing the work in time and the bottleneck is the Bot’s throughput, not the project. Give each a unique Bot Name, add the bot column, assign every row, and keep your output names unique. If you are connecting this to an application that writes rows for you, such as a form or a sheet your team edits, see our Google Sheets reference and Que, our data and automation companion.
Keep your hands off the values Templater owns, and test the whole arrangement with a handful of rows before you hand it a thousand. Write ready, or clear the cell, and let the Bot write everything else.
These are the questions people ask us most when they set up a Bot for the first time.
Frequently Asked Questions
What columns does a data source need for one Bot?
A data source for the Bot is a standard Templater data source with a render-status column added. Values in that column should be only reserved terms, or the cell should be empty. You enter ready in each row you want processed. You do not need a Bot Name or a bot column when you run a single Bot on a data source.
What do the render-status values mean?
Ready means a row is marked for processing, and only you or your application should write it. Queued, processing, and done are written by Templater as it works. ERR::MEDIA means Templater had trouble locating or importing a media asset. ERR::AFXHOST means After Effects hit an error on the machine running Templater.
How do I set up several Bots on one data source?
Add the render-status column, then give each Bot a unique name in Preferences under Bot Settings. Add a column named bot to your data source and enter the name of the responsible Bot in each row, matching the Bot Name exactly. Enter ready in render-status for the rows to process. Only name your Bots if you enable more than one.
Why are some of my output videos missing?
The Bot is fully automated and overwrites existing files when it renders to the same output file name. If two rows produce the same name, the later one replaces the earlier one. Make sure your id or output column holds a unique value in every row, especially when several Bots write to the same folder.
Why does the Bot keep re-rendering the same rows from my URL feed?
With a URL feed the Bot cannot update the render-status value, because the data source is specific to your system. Rows that say ready stay ready. Register custom scripts that update render-status at suitable events. As of version 2.1.10, the Post Job, Post Batch, and On Bot Disable events are broadcast for this purpose.
Can I keep formulas in the render-status column?
It is better not to. As of Templater 2.9.5, when the Bot updates render-status, any formulas in those cells are overwritten with the formula’s result. Earlier versions overwrote all formulas in processed rows. Put your formulas in other columns and let render-status hold plain values that you and Templater write.
What should I check before I enable the Bot?
Confirm that your data source has a render-status column and that at least some rows contain ready. Link the data source to your project and tag the dynamic layers with the Templater Settings effect. Be ready to empty the After Effects disk cache after each job if you have not optimized caching. Then click Enable Bot, and allow time for the first check.
