Mule messages contain a header and payload. The header includes properties and variables that provide metadata about the message. Properties are immutable inbound properties or mutable outbound properties that provide information to downstream flows. Variables are user-defined and come in three scopes: flow, session, and record. While properties are set by systems and pass with the message, variables are temporary pieces of information for the processing application.