Customization on Transactions

Transactions and their line items carry custom field values from two sources: the form and the items.

Custom Fields on Transactions

Defined on: the Campaign (form)
Stored on: the Transaction (PurchaseOrder)

Transaction-level custom fields are collected during checkout and stored on the transaction record. They apply to the entire order, regardless of which items were selected. See Customization on Forms.

Custom Fields on Order Items

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

Item-level custom fields are collected when the donor selects an item and stored on the specific line item. Each line item in a transaction has its own independent set of values. See Customization on Items.

Integration Codes

Integration codes on Campaigns, Items, and Payment Methods are hidden fields used for GL mapping, external system identifiers, and script configuration. They are not shown to donors but are available in scripts and reports.

Integration Code Location Access Pattern
Campaign integration code campaign.get('CostCenter').value
Item integration code orderItem.orderableItem.get('GLCode').value
Payment Method integration code purchaseOrder.payment.paymentMethod.get('Category').value

In Reports

Both transaction custom field values and order item custom field values appear as selectable columns in their respective list views and reports. Integration codes also appear as columns in transaction and payout reports.

Use Contact.* or PurchaseOrder.* wildcard notation in report queries to include all custom fields automatically.

→ Full reference: Where Custom Fields Live