Quick Answer: Build the CRM around a normalized lead-status model, where each status is stored as a configurable record tied to a pipeline, team, or business unit—not as hard-coded text values. Then enforce reporting stability by mapping every custom status to a canonical status group (for example: New, Working, Nurture, Won, Lost) so dashboards, attribution, and SLA metrics remain consistent even as the UI and workflows change.
A reporting-safe CRM schema separates operational flexibility from analytical consistency. In practice, that means storing lead status as a foreign key to a configurable status table, with metadata for pipeline, display order, active state, automation triggers, and a canonical reporting group. This approach lets sales teams create custom statuses like "Contacted - SMS," "Awaiting Proposal," or "Do Not Call - Legal" without fragmenting the data model, because all downstream reports resolve those statuses into a controlled set of metric-friendly categories. For historical accuracy, you should also version status definitions and preserve status-change events in an audit log or event table, so conversion rate, stage velocity, and funnel reporting remain reproducible over time.