It’s something that happened in the domain and what other parts of the same domain should be aware of.

Somewhat in between Event notification and ECST messages.

Domain event includes all the information describing the event, no need for consumer to take any other action. But it doesn’t expose everything from the domain model.

Domain events don’t allow for consumer to hold its own local cache, because there may be multiple domain events that affect the same field.

Intended to model and describe the business domain. Doesn’t intend to describe the aggregate’s state, but what happened during its lifecycle.

They are useful even if no external consumer is interested in them (e.g. in event-sourced systems).

{
    "type": "married",
    "person-id": "01b9a761",
    "payload": {
        "person-id": "126a7b61",
        "assumed-partner-last-name": true
    }
}