# Retention periods

How long your app keeps deleted records is an ordinary setting, such as
`soft_delete_retention: Duration`. A lifecycle reads it as
`purge: { after: config.soft_delete_retention }`
([Lifecycle](/docs/lifecycle.md)). `after:` takes a `Duration` setting that
isn't secret (`data.lifecycle_purge_after` otherwise). A purge run uses the
value the app started with, and a period that isn't above zero deletes
nothing. A `retention:` on an entity or a field reads its period the same
way, and only from a setting: `retention: { after:
config.signup_ip_retention since: created_at }`
(`data.retention_period` otherwise). How retention fits the wider support
for personal data, such as marking personal fields, erasure and export,
is in [Personal data](/docs/retention.md).
