In Flow Core, Payload is essentially the transient input data that comes with a specific trigger or execution chain. It is not meant to represent long-term state.

Payload is stored on FlowContext and is implemented as a strongly typed set of dedicated fields, rather than a weakly typed object bag. In FlowContext, payload values are separated into fields such as:

The purpose of this design is straightforward: to support low-overhead runtime data passing along the trigger chain, instead of repeatedly accessing the Blackboard or incurring the cost of boxing and unboxing.

The workflow is as follows:

When a Trigger, Event, or Timer produces an output, a FlowTriggerPayload is first created. At runtime, it is written into the current FlowContext through ApplyTo(context). Subsequent nodes can then read the payload through FlowValueSource.Payload, or retrieve a specific value from it based on the selected PayloadMode.

The difference between Payload and Blackboard is fundamental. Payload represents the raw data carried by a single trigger. It has a short lifetime and moves along with the execution chain. Blackboard, on the other hand, represents state that can be queried, shared across systems, and persisted when needed.

In actual graphs, Payload is commonly used to represent event parameters. For example:

Input-related, collision-related, or raycast-related triggers may place the corresponding event object into the payload.

There are also a few subtle but important details worth noting.

IndexPayload is implemented as a dedicated index-oriented payload channel. It is primarily used for loops, list access, and Blackboard index selection, rather than being strictly bound to the standard PayloadType system.

In addition, Flow Core includes a number of context shortcut values within the Payload Mode access model, such as Self, Target, Invoker, Context Main Camera, and Context Mouse Ray. This makes the design intent clear: Payload is not only used for trigger parameters, but also serves as an access point to the active execution context of the current chain.