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 | — |
| 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):
- Gets
data[FIELDS][ID]— contact ID. - Calls
crm.contact.getfor full data. - Sends an HTTP request to the 1C HTTP service with JSON contact data.
- 1C creates the counterparty and returns its ID.
- The handler writes the 1C ID into the Bitrix24 contact custom field
UF_CRM_1C_CONTACT_IDviacrm.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.

