diff --git a/docs/core/entity.md b/docs/core/entity.md
index cc33b8c3a90..9a4526f38a6 100644
--- a/docs/core/entity.md
+++ b/docs/core/entity.md
@@ -119,6 +119,17 @@ The following properties are also available on entities. However, they are for a
| state_attributes | dict | None
| `None` | State attributes of a base domain. This property is implemented by the domain base entity and should not be implemented by integrations.
| unit_of_measurement | str | None
| The unit of measurement that the entity's state is expressed in. In most cases, for example for the `number` and `sensor` domains, this is implemented by the domain base entity and should not be implemented by integrations.
+## State attributes
+
+Entities can provide additional state attributes besides the built-in ones, to provide further details to its state.
+This should be done by providing a dictionary with keys and values to the `extra_state_attributes` property.
+
+Providing state attributes comes with the following rules:
+
+- If an attribute is expected, it should be in the dictionary. Attributes should not "come and go".
+- If an attribute is expected, but it's not providing a value right now, its value should be `None` and remain in the dictionary.
+- If an attribute is not expected, it should not be in the dictionary. An attribute is expected if supported by the entity, for example as indicated by `supported_features`.
+
## System properties
The following properties are used and controlled by Home Assistant, and should not be overridden by integrations.