Ownership, environment, contract end date, jump-host group — discovery finds the operational bits; tags carry the organisational ones. Free-form, structured when you want it, queryable everywhere.
Free-form labels rot. env:prod and team:core can be selected against, which is what makes them worth maintaining.
Alert targets, report scopes and policy selectors all resolve through them. A tag is not decoration, it is how a rule finds its hosts.
Contract end date, cost centre, the person to wake. Custom fields hold what the schema never anticipated.
env:prod keeps working when prod grows.tags = {}, Ansible inventory vars, the cloud provider's own tags.Tagging is free on every plan. Custom-field schema unlocks at Starter.