Customization on Items

Items support two independent sets of custom fields, each stored in a different place in the transaction.

Fields on the Order Item

Defined on: the Item (OrderableItem)
Stored on: the Order Item (line item) in the transaction

These fields are collected from the donor when they select this item. Each Order Item in a transaction carries its own values, independent of other items in the same transaction. Use them for:

  • Per-selection data: meal choice, t-shirt size, attendee name, tribute recipient
  • Fields that differ per item selection even within the same order

Configure on the Item’s Custom Fields tab under “Item Custom Fields”.

Fields on the Transaction

Defined on: the Item (OrderableItem)
Stored on: the Transaction (PurchaseOrder)

These fields are added to the whole order when this item is selected — regardless of which other items are in the transaction. Use them for:

  • Fields that should apply to the entire transaction when a particular item is present
  • Conditional order-level data triggered by specific item selection

Configure on the Item’s Custom Fields tab under “Order Custom Fields”.

Integration Codes on Items

Integration codes are hidden custom fields on the Item. Not shown to donors; used in scripts and reports. Common uses:

  • GL account codes for revenue from this item
  • External system product identifiers
  • Item-level configuration values read by scripts

Access in scripts:

  • orderItem.get('FieldName').value — value on the Order Item
  • orderItem.orderableItem.get('FieldName').value — integration code on the parent Item definition

Available in reports: both item custom field values and integration codes appear as selectable columns in Order Item reports.

→ Full reference: Where Custom Fields Live