Bitrix24-1C Contact Sync: Deduplication & Normalization

Imagine: 5,000 contacts in Bitrix24 and 4,000 counterparties in 1C. Only 30% match—the rest are duplicates, data loss, and manual reconciliation every week. Managers spend up to 10 hours transferring new contacts, and phone entry errors result in lost leads. Bitrix24 stores numbers in +7 (XXX) XXX-X

Our competencies:

Frequently Asked Questions

Latest works

  • B2B ADVANCE company website development
    B2B ADVANCE company website development
    1460
  • Website development for FIXPER company
    Website development for FIXPER company
    1019
  • Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Development based on 1C Enterprise for MIRSANBEL
    Development based on 1C Enterprise for MIRSANBEL
    882
  • Website development on CRM Bitrix24 for DOLBIMBY
    Website development on CRM Bitrix24 for DOLBIMBY
    810
  • Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1166

Imagine: 5,000 contacts in Bitrix24 and 4,000 counterparties in 1C. Only 30% match—the rest are duplicates, data loss, and manual reconciliation every week. Managers spend up to 10 hours transferring new contacts, and phone entry errors result in lost leads. Bitrix24 stores numbers in +7 (XXX) XXX-XX-XX format, 1C in arbitrary form. Without normalization, even the same number may not match during deduplication. Our team, with 12 years of experience in CRM 1C integration, counterparty exchange, and turnkey exchange setup, provides Bitrix24 1C contact exchange and synchronization. We solve this in 3–7 days: setting up automatic contact exchange without duplicates, with full normalization and deduplication. The result is a unified customer database updated in real time.

In this article, we'll break down the technical details: webhooks, PHP and 1C handlers, two-way synchronization algorithm, and initial import. You'll get a ready algorithm adaptable to your configuration.

What Gets Synchronized

Contacts (individuals): Bitrix24 crm.contact ↔ 1C "Individual" or "Counterparty-Individual". Companies: Bitrix24 crm.company ↔ 1C "Counterparty-Organization".

Bitrix24 1C Matching Key
NAME, LAST_NAME First Name, Last Name Email or Phone
PHONE Phone
EMAIL Email Primary key
UF_CRM_INN TIN For legal entities
COMPANY_ID Counterparty
ASSIGNED_BY_ID Responsible Manager

We also map custom fields: for example, UF_CRM_1C_ID to store the identifier from 1C.

Synchronization Options

Three scenarios are possible: Bitrix24 as master, 1C as master, or two-way. The choice depends on where contacts are most frequently edited.

Scenario Direction Duplicate Risk Latency
Bitrix24 → 1C Only from CRM to accounting Low Seconds
1C → Bitrix24 Only from accounting to CRM Low Up to a minute
Two-way Both directions Requires deduplication Seconds

If managers work actively in CRM, the first option is optimal. For accounting managing the database in 1C, the second works. Two-way synchronization provides full accuracy but needs careful deduplication setup. With one-way exchange, the risk of duplicates is 80% lower, but with two-way, you get a unified database without losses.

How Deduplication Works in Two-Way Exchange

The main challenge in two-way synchronization is duplicates when a contact is created in both systems independently. The algorithm:

  • Upon receiving a new contact, check for existence by email/phone in the other system.
  • If exists, update the existing record; do not create a new one.
  • If not, create and record mutual IDs.

For searching in Bitrix24, we use crm.duplicate.findbycomm — a method to find duplicates by phone and email. In 1C, we check the "Counterparties" catalog. API-based deduplication is 10 times faster than manual reconciliation and eliminates human error.

The Importance of Phone Normalization

Different phone formats are a common cause of errors during duplicate search. Bitrix24 stores numbers as +7 (XXX) XXX-XX-XX, 1C in free form. Without normalization, the same number may not match. We automatically convert numbers to the international E.164 format before any comparison. If a contact has multiple phones, we use the first as the primary and transfer it to 1C. Phone normalization reduces deduplication errors by 3 times.

Implementation: Bitrix24 → 1C (Webhooks)

When a contact is created in Bitrix24, an outgoing webhook fires. Bitrix24 sends a POST to the registered URL with event data. The webhook handler (PHP script):

  1. Gets data[FIELDS][ID] — contact ID.
  2. Calls crm.contact.get for full data.
  3. Sends an HTTP request to the 1C HTTP service with JSON contact data.
  4. 1C creates the counterparty and returns its ID.
  5. The handler writes the 1C ID into the Bitrix24 contact custom field UF_CRM_1C_CONTACT_ID via crm.contact.update.

Implementation: 1C → Bitrix24 (HTTP Service)

In 1C, we create a handler (subscribing to the ПриЗаписиКонтрагента event). When a new or modified counterparty is saved:

Request = New HTTPRequest; Request.SetBodyFromString(JSONData); Connection = New HTTPConnection("portal.bitrix24.ru"); Response = Connection.Submit(Request, "/rest/.../crm.contact.add"); 

The response contains the ID of the new Bitrix24 contact — we store it in the 1C counterparty's attribute for future identification.

Initial Batch Synchronization

When first launching the integration, existing databases must be synchronized. Steps:

  • Export all contacts from Bitrix24 via crm.contact.list (paginated by 50 records).
  • For each, search for a match in 1C by email.
  • Matched ones — update mutual IDs, do not duplicate.
  • Unmatched ones — create in 1C.
  • Contacts existing in 1C but absent in Bitrix24 — create in Bitrix24.

This is a one-time operation performed before starting two-way exchange.

What's Included in Turnkey Setup

  • Analysis of current contact structure in Bitrix24 and 1C.
  • Configuration of outgoing webhooks and HTTP services.
  • Development of PHP handlers for Bitrix24 and 1C configurations.
  • Setup of deduplication and priority rules.
  • Initial synchronization of existing databases.
  • Testing on a test environment.
  • Documentation and access handover.
  • Training of responsible employees.
  • 30-day guarantee of correct operation.
Detailed field mapping We provide a comprehensive mapping for all custom fields.

Common pitfalls: different phone formats (we normalize before comparison), multiple phones per contact (use first as primary), mapping of responsible managers (we create a lookup table).

Timelines and Savings

Typical setup takes 3 to 7 working days. Cost is calculated individually based on the complexity of the 1C configuration and the number of custom fields. Typical setup costs range from $1,500 to $3,000, yielding monthly savings of $2,000 in reduced manual work. Managers save up to 20 hours per week. Significant reduction in operational expenses by eliminating manual reconciliation.

Get a consultation for your configuration — we'll assess your project for free and suggest the optimal solution. Order integration setup and forget about duplicates.

Learn more about Bitrix24 REST API and the CommerceML protocol.