---
title: Event Type
---

Every [event](/chronicle/concepts/event/) stored in the [event store](/chronicle/concepts/event-store/) must have
a type associated with it.

Any client connecting to Chronicle needs to communicate the event types before any events
can be appended to an [event sequence](/chronicle/concepts/event-sequence/).

An event type can contain multiple generations. Every new event starts with generation 1
and any changes to the event should then become a new generation. This allows versioning
your event types so that multiple schema generations can coexist in the same event store.

The concept of generations is important when working with systems that evolve over time.
Each generation registers its own JSON schema, which Chronicle uses to validate and store
events correctly for that generation.

```mermaid
flowchart LR
    ET["Event type:<br/>PersonRegistered"] --> G1["Generation 1<br/>+ JSON schema"]
    G1 -->|migration| G2["Generation 2<br/>+ JSON schema"]
    G2 -->|migration| G3["Generation 3<br/>+ JSON schema"]
```

For detailed information on how to define and use migrations, see [Event Type Migrations](/chronicle/concepts/event-type-migrations/).
