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).

PlaceholderWhat 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 batchCustomFields remains accessible from inside the {{#workOrders}} loop. A work order's own orderCustomFields does 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:

PlaceholderWhat 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:

PlaceholderWhat 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:

PlaceholderWhat 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:

  1. Go to Manage → Templates.
  2. Open or create a Production Run template.
  3. Click into the placeholder browser panel — it queries your database and lists every token, including dynamically generated custom field and variant attribute entries.