-
1
Start with the reports and the stage gates, not the fields
Fields exist to serve reports, forecasts, routing rules, and stage transitions. If no downstream artifact reads a field, the field should not exist. Start by listing every pipeline report, forecast view, segmentation query, and automation your team runs today, then write down which fields each one reads. This becomes your required field list. Everything else is a candidate for deprecation. Teams that skip this step design schemas by committee and ship 40 fields nobody will fill. Teams that do this step ship 15 fields reps will actually keep up to date.
- List every pipeline, forecast, and segmentation report the team runs weekly or monthly
- List every routing rule, scoring model, and workflow trigger that reads account or contact data
- Map each report and automation to the exact fields it reads
- Any field not referenced by a report, workflow, or stage gate goes on the deprecation candidate list
Tip: If a VP says 'I need that field for a report,' make them point at the report. If the report does not exist yet, the field waits until the report does.
-
2
Define the core object spine for accounts, contacts, and opportunities
Every B2B CRM needs the same lean spine before you add anything custom. For accounts: name, domain, industry, employee count, country, owner, type (prospect, customer, partner), lifecycle stage. For contacts: first name, last name, email, phone, title, role (economic buyer, champion, user, blocker), account, owner. For opportunities: name, account, amount, close date, stage, forecast category, primary contact, product line, source. These 25 fields cover 80% of real reporting needs. Resist the urge to add vanity fields until you can prove the spine is working end to end.
- Lock the account spine to the eight fields above and reject new account fields for the first 30 days
- Lock the contact spine with a required role picklist so reps cannot leave the buyer map blank
- Lock the opportunity spine with amount, close date, stage, and forecast category as non-null
- Document the spine in your admin wiki as the frozen core and treat anything else as discretionary
Tip: A field on the spine means every record of that object has it populated or the record is invalid. Spine fields earn the right to be required because the business cannot operate without them.
-
3
Classify every field by purpose: reporting, routing, stage-gate, or display
Fields do different jobs and deserve different rules. Classify each proposed field into one of four buckets. Reporting fields feed dashboards and forecasts, must be high fill rate, and should be picklists wherever possible. Routing fields drive assignment and territory logic, must be populated at create time, and must be picklists. Stage-gate fields are required at specific pipeline stages, enforced by validation. Display-only fields are useful context but never read by a report or workflow, kept lean because reps have to look at them. If a field does not fit a bucket, it does not get built.
- Tag every existing field as reporting, routing, stage-gate, or display
- Reporting and routing fields default to picklist values with no free-text escape hatch
- Stage-gate fields get required-at-stage validation, not required-always
- Display fields that no human has looked at in 90 days become deprecation candidates
Tip: The classification is the field's job description. If two admins would classify the same field differently, your rules are not tight enough yet.
-
4
Set required-at-stage rules on opportunities, not required-always
Making every important field required on create is the single fastest way to train reps to type garbage. Instead, tie required fields to the pipeline stage where the data actually needs to exist. At Qualification: primary contact, pain, budget authority. At Proposal: product line, amount, close date, decision criteria. At Negotiation: redlines status, procurement contact. At Closed Won: signed order, start date, product mix. Validation blocks the stage transition when a required field is empty, so the schema teaches reps where data belongs in the sales motion rather than nagging them on first keystroke.
- Define the three to five fields that must exist to advance out of each stage
- Enforce required-at-stage with validation that blocks the transition, not the record save
- Keep the required list per stage to five fields or fewer so reps can actually clear the gate
- Expose the gate requirements in the opportunity UI so reps know what is blocking the move
Tip: Required-always fields punish the top of funnel. Required-at-stage fields reward progress. Pick the second one every time.
-
5
Govern picklists with a canonical list and no free-text escape hatch
Picklist drift is how clean schemas rot. Every categorical field (industry, country, lead source, stage, role, type) gets a canonical value list owned by RevOps and locked against free-text entry. New values go through a change request that proves the business reason, the report that will read it, and the deprecation plan for retired values. No 'other' bucket, because 'other' becomes 40% of your records within a year. If a rep needs a value that is not on the list, that is a signal the list needs a review, not a signal to open a text field.
- Publish the canonical value list for every categorical field in the admin wiki
- Disable free-text and admin-only 'other' options on every reporting and routing picklist
- Route new picklist value requests through a weekly RevOps change board, not into individual admin DMs
- Deprecate picklist values with a crosswalk and a bulk update, never by leaving them orphaned
Tip: Country and Industry are the two picklists worth governing on day one, because routing, segmentation, and territory rules read from them and quietly break when values drift.
-
6
Separate RevOps-owned fields from team-owned custom fields
Not every field needs RevOps approval, and pretending otherwise just creates a bottleneck. Draw a bright line between the shared schema (RevOps owns, cross-team reporting reads) and team-owned fields (one team uses, no cross-team report depends on it). Marketing wants a field for campaign attribution they alone will read: fine, mark it marketing-owned, keep it off the shared reporting layer. CS wants a field for health score inputs they alone will use: fine, mark it CS-owned. The rule is simple. Cross-team reporting fields need RevOps governance. Single-team display fields do not. This stops the political fights and keeps the shared schema lean.
- Flag every field as shared (RevOps-governed) or team-owned (that team governs)
- Shared fields need a report consumer in two or more teams or they get downgraded to team-owned
- Team-owned fields can be free-text or picklist, team's call, but never show in cross-team dashboards
- Review the shared versus team-owned split quarterly as reporting needs evolve
Tip: If the request is 'I want a field,' ask who else will read it. If the answer is nobody, it is a team-owned field and does not go through the full RevOps change board.
-
7
Design the deprecation path before you add new fields
A schema that grows is a schema. A schema that only grows is a swamp. Before you ship any new field, write the deprecation condition for it: when fill rate drops below a threshold, when the report that depends on it is retired, when the business process changes. Run a monthly deprecation sweep that reads fill rate, last-used date, and consumer count, then flags candidates. The admin wiki lists every deprecated field, when, and why, so new teammates do not reinvent the same field six months later. Teams that build the deprecation path first stay at 30 fields. Teams that do not land at 200.
- Write a deprecation condition for every new field at the moment it ships
- Run a monthly automated report on fill rate, last access, and consumer count per field
- Flag fields below 20% fill rate or with zero report consumers as deprecation candidates
- Archive deprecated fields with a crosswalk if any report ever read them
Tip: Adding a field is a two-step job: define it and define how it dies. Teams that only do step one own the 200-field monster.
-
8
Validate the schema in sandbox and roll out with a migration crosswalk
Never ship schema changes directly to production. Build the proposed schema in a sandbox tenant, migrate a representative sample of records using a crosswalk from the old fields to the new ones, and dry-run the full report suite and automation pack against the migrated data. Compare report outputs before and after. If a report changes unexpectedly, the schema is wrong or the crosswalk is wrong. Only after the sandbox pass is clean do you cut over production, in waves, with a backup and a rollback plan. A schema change that breaks a VP's forecast on Monday morning is how RevOps loses change-control authority for a year.
- Build the proposed schema in a sandbox tenant and migrate a representative record sample
- Dry-run every report, forecast, and automation against the migrated sandbox data
- Diff the report outputs before and after the migration and reconcile every variance
- Cut over production in waves with a verified backup and a documented rollback plan
Tip: The sandbox pass is not optional. It is the only thing standing between you and a Monday morning where the CRO's forecast dashboard shows the wrong number.
-
9
Publish the schema, assign owners, and run a quarterly review
A schema is a living contract between RevOps and every team that reads from the CRM. Publish the field inventory, classifications, owners, picklist canonicals, required-at-stage rules, and deprecation log in a single admin wiki page. Assign a RevOps owner for the shared schema and a named owner for each team-owned field. Hold a quarterly schema review with sales, marketing, and CS leadership to walk the fill-rate dashboard, the deprecation candidates, and the pending field requests. The review is the forcing function that keeps the schema honest. Skip it for two quarters and you will have another 50 orphaned fields to clean up.
- Publish the full field inventory, classifications, and owners in a single admin wiki page
- Build a schema health dashboard that shows fill rate, consumer count, and last-used date per field
- Hold a quarterly schema review with sales, marketing, and CS leadership
- Treat the review outputs as change-control decisions, not suggestions
Tip: The schema review is where new fields get approved and old fields get retired. Without the standing meeting, the backlog grows and the swamp returns.