Overview
Production Run HTML templates support a set of new merge tokens that let you include richer data on co-manufacturer documents: payment terms recorded on the run, run-level custom fields, SKU category/sub-category on BOM component rows, and produced-product details (category, variant attributes, SKU custom fields) inside the work-orders loop.
All tokens use standard Mustache syntax ({{tokenName}}). The placeholder browser in the template editor — accessible at Manage → Templates — lists every available token and injects your account's actual custom field names.
New run-level tokens
Use these directly in the template body (outside any loop).
| Placeholder | What it outputs |
|---|---|
{{paymentTerms}} | Payment terms recorded on the production run (e.g. Net 30). Blank when not set. |
{{batchCustomFields.YourFieldName}} | Value of a run-level custom field, keyed by the field label. Use dot-access: {{orderCustomFields.PO Reference}}. |
Looping over all run custom fields
To iterate over every run custom field (label + value) without hard-coding field names:
{{#batchCustomFields.list}}
<tr>
<td>{{label}}</td>
<td>{{value}}</td>
</tr>
{{/batchCustomFields.list}}
Note on scoping: Run-level
batchCustomFieldsremains accessible from inside the{{#workOrders}}loop. A work order's ownorderCustomFieldsdoes not shadow it, so a run-level value can be repeated on every work-order row.
SKU category and sub-category in the consolidated BOM loop
Inside {{#consolidatedBom}}, each component row now exposes the SKU's product category and sub-category:
| Placeholder | What it outputs |
|---|---|
{{category}} | Component SKU product category |
{{subCategory}} | Component SKU product sub-category |
Example:
{{#consolidatedBom}}
<tr>
<td>{{internalSku}}</td>
<td>{{productName}}</td>
<td>{{category}}</td>
<td>{{subCategory}}</td>
<td>{{totalQty}}</td>
</tr>
{{/consolidatedBom}}
SKU category and sub-category in the per-work-order BOM loop
Inside {{#workOrders}}{{#bomComponents}}, the same tokens are available for each component:
| Placeholder | What it outputs |
|---|---|
{{category}} | Component SKU product category |
{{subCategory}} | Component SKU product sub-category |
Produced-product details inside the work-orders loop
Inside {{#workOrders}}, every iteration now exposes additional fields about the SKU being produced:
| Placeholder | What it outputs |
|---|---|
{{producedSkuCategory}} | Category of the produced SKU |
{{producedSkuSubCategory}} | Sub-category of the produced SKU |
{{producedSkuVariantAttributes.AttributeName}} | A specific variant attribute (e.g. {{producedSkuVariantAttributes.Color}}). Dynamic — check the placeholder browser for your attribute names. |
{{producedSkuCustomFields.FieldLabel}} | A SKU-level custom field on the produced product. Dynamic — check the placeholder browser for your field names. |
Looping over all produced-SKU custom fields:
{{#workOrders}}
<h3>{{workOrderNumber}} — {{producedSku}}</h3>
<p>Category: {{producedSkuCategory}}</p>
{{#producedSkuCustomFields.list}}
<p>{{label}}: {{value}}</p>
{{/producedSkuCustomFields.list}}
{{/workOrders}}
Looping over all produced-SKU variant attributes:
{{#workOrders}}
{{#producedSkuVariantAttributes.list}}
<span>{{label}}: {{value}}</span>
{{/producedSkuVariantAttributes.list}}
{{/workOrders}}
Finding your custom field and attribute names
Because custom field labels and variant attribute names differ by account, the easiest way to find the exact token names is:
- Go to Manage → Templates.
- Open or create a Production Run template.
- Click into the placeholder browser panel — it queries your database and lists every token, including dynamically generated custom field and variant attribute entries.