@pshaley And if you're using a custom record you will need to make sure to pass the record into the template render as well, along with a "templateName" to use as part of the replacement, or if you have more than one, as a custom Data Source with an alias:
var templateFile = file.load({id: templateID});
var renderer = render.create();
renderer.templateContent = templateFile.getContents();
var customerRec = record.load({type: record.Type.CUSTOMER, id: customerID});
renderer.addRecord({templateName: 'maincust', record: customerRec});
renderer.addRecord({templateName: 'rep', record: record.load({type: record.Type.EMPLOYEE, id: repID})});
var items = {};
items.list = [] //Lookup your list of custom records here.
renderer.addCustomDataSource({format: render.DataSource.OBJECT, alias: 'itemList', data: items});