A domain event with a field that was presentation

An OrderPlaced event carrying a formatted currency string, which is a decision about a locale baked into a permanent record.

// what it carried
new OrderPlaced(
    orderId: $order->id,
    total: '£49.00',              // ← formatted, in en_GB
    placedAt: '3 March 2025',     // ← also formatted
);

// what it carries now
new OrderPlaced(
    orderId: $order->id,
    totalMinorUnits: 4900,
    currency: 'GBP',
    placedAt: new DateTimeImmutable('2025-03-03T09:41:02+00:00'),
);

The formatted string was convenient for the one consumer that emailed it and wrong for the consumer added later that summed totals. An event is a record of what happened and formatting is a decision about who is reading — putting the second inside the first means the event is only usable by an audience that was assumed in 2021.