Application analytics fails quietly when events fire without the properties decisions need. A completed_signup event without plan, channel, or surface forces every later analysis into guesswork.
We ask product owners which cuts they used last quarter. Those answers become the property checklist. Everything else waits. Teams that reverse this order ship beautiful empty charts.
Keep properties stable even when UI labels change. Translate marketing names in a lookup table; do not rename the property every campaign.
If your warehouse is the source of truth, document which properties are first-class versus derived. First-class ones belong in the client event; derived ones stay in SQL.