Designing Bitrix24 CRM Custom Fields: Audit & Optimization

Custom fields are the most common way to 'break' a CRM without noticing. Adding a field takes five minutes. But after a year, the system accumulates 80 fields—half never filled, a third duplicate each other, and one critical field was created as 'string' instead of 'list'—now analytics shows 40 vari

Our competencies:

Frequently Asked Questions

Custom fields are the most common way to 'break' a CRM without noticing. Adding a field takes five minutes. But after a year, the system accumulates 80 fields—half never filled, a third duplicate each other, and one critical field was created as 'string' instead of 'list'—now analytics shows 40 variants of spelling 'Moscow'.

Designing from scratch or refactoring chaos—the difference in CRM performance is 2x. Properly designed fields reduce information search time by 40% and eliminate report errors. We have been designing fields for 5 years, our team has audited over 50 CRM systems. Experience shows: proper design reduces integration time with 1C by 30% and eliminates reporting errors. Every extra field is an extra JOIN in queries to b_uts_crm_deal. Optimizing the structure speeds up the deal card by 25%. Audit starts at $500 and yields 200% ROI within 6 months. Request an audit and get order in your CRM.

Why Field Design Is Critical for CRM?

In Bitrix24, custom fields are created via the main module (class CUserTypeManager) and stored in two tables:

  • Field description — b_user_field: ENTITY_ID (e.g., CRM_LEAD, CRM_DEAL, CRM_CONTACT, CRM_COMPANY, CRM_SMART_*), FIELD_NAME (with prefix UF_CRM_), USER_TYPE_ID.
  • Field values — b_uts_crm_lead, b_uts_crm_deal, b_uts_crm_contact, b_uts_crm_company — one row per record.

Fields of type enumeration store values separately in b_user_field_enum. This is important during migration: you cannot copy a numeric value from a list field between environments—IDs differ.

Which Field Types to Choose and When?

Type USER_TYPE_ID When to Use
String string Free text: name, comment
Integer integer Quantity, ID, number
Double double Amount, percentage, weight
List enumeration Fixed set of values—statuses, types, categories
Date date Date without time
Date+Time datetime Date with time
Boolean boolean Binary flag
File file Documents, images
Employee binding employee Responsible, curator
CRM entity binding crm Link to deal, contact, company
Money money Amounts with currency

Choosing 'string' instead of 'list' is the most common mistake. If the value comes from a finite set—it's a list. Always.

Anti-pattern Solution
Text field 'Reason for loss' Replace with list + comment
Custom status duplicating funnel stages Redesign funnel
Field for computed data (amount with VAT) Remove, compute in reports
Too many list values (>15) Split into categories or use a reference
Common mistakes when creating custom fields
  • Using 'string' type for data with a limited set of values—instead of a list.
  • Creating fields with the same meaning by different employees (duplicates).
  • Naming fields without the UF_CRM_ prefix—violates Bitrix conventions.
  • Too many values in a list (>15)—the list becomes inconvenient.

How We Design Fields: Process

  1. Inventory. On live projects, we often find 50–100 fields per entity. Some created by different people, some duplicate standard ones, some unused.
  2. Requirements gathering. For each department, we capture what is needed in the card and what matters for reports.
  3. List value normalization. 5–12 values is the working range. If more—two-level list or smart process.
  4. Naming. UF_CRM_DEAL_REASON_LOSS instead of UF_CRM_1234567—critical for REST API and diagnostics.
  5. Order and mandatory fields. Required fields, stages, card blocks.

Field design reduces integration time by 2x compared to chaotic structure—our practice confirms this.

What Our Work Includes

  • Audit of all custom fields on the entity
  • Design of a new structure considering business processes
  • Data migration from old fields to new ones
  • API and integration documentation
  • Employee training on new fields
  • Access to a dedicated project manager
  • 30 days of post-implementation support

Case: Audit and Refactoring of Fields for a Manufacturing Company

Our client—a metal structures plant. 47 custom fields in the deal, created over 3 years. Task: bring order before ERP integration.

The audit revealed:

  • 11 fields of type 'string' containing enumerations (metal type, strength class, supply region)
  • 7 fields never filled (all NULL)
  • 4 fields duplicate each other ('Order volume' and 'Tonnage')
  • 2 fields with date stored as string

Result of refactoring: 47 → 28 fields. String fields converted to enumeration, data migrated via API. Duplicates merged. Unused fields removed after export to archive.

After normalization, ERP integration took half the time—clean field mapping instead of parsing arbitrary text.

Timeline

Audit and design for one entity—2–4 days. For the entire CRM (lead, deal, contact, company)—8–14 days including data migration and approvals.

Order field design and forget about reporting problems. Get a consultation through the form on the website.

CRM system on Wikipedia