Міграція даних із amoCRM у Бітрікс24
amoCRM і Бітрікс24 — найближчі конкуренти, але їхні моделі даних суттєво різняться. amoCRM будується навколо угод (pipeline-центрична модель), Бітрікс24 — більш комплексна система з розділенням лідів, угод, контактів і компаній. Ця різниця визначає всю стратегію міграції.
Принципові відмінності моделей
| Аспект | amoCRM | Бітрікс24 |
|---|---|---|
| Центральна сутність | Угода (lead) | Лід → Контакт + Угода |
| Контакти | Прив'язані до угод | Самостійна сутність |
| Компанії | Прив'язані до угод | Самостійна сутність |
| Теги | На угодах і контактах | UF-поля або категорії |
| Воронки | Кілька, з етапами | Воронки (напрямки) зі статусами |
| Кастомні поля | Проста конфігурація | UF-поля з типізацією |
У amoCRM «угода» (lead) — це і лід, і угода одночасно. При міграції потрібно прийняти рішення: переносити все в угоди Бітрікс24, або розбити на ліди + конвертовані угоди.
Отримання даних із amoCRM
amoCRM надає REST API v4. Аутентифікація через OAuth 2.0. Ліміти API: не більше 7 запитів на секунду — при вивантаженні великої бази обов'язкова затримка між запитами.
Клієнт для посторінкового вивантаження контактів (250 записів за запит):
class AmoCrmClient {
public function getContacts(int $page = 1): array {
$url = "https://{$this->domain}.amocrm.ru/api/v4/contacts"
. "?page={$page}&limit=250&with=leads,companies";
$http = new \Bitrix\Main\Web\HttpClient();
$http->setHeader('Authorization', 'Bearer ' . $this->accessToken);
return json_decode($http->get($url)->getResult(), true);
}
}
Маппінг воронок і статусів
Воронки amoCRM → напрямки (воронки) Бітрікс24. Створюються заздалегідь через crm.category.add, потім для кожної воронки — статуси через crm.status.add.
Маппінг зберігається у файл або таблицю для використання при перенесенні угод:
$pipelineMapping[$pipeline['id']] = $b24CategoryId;
$statusMapping[$status['id']] = 'STAGE_' . $status['id'];
Кастомні поля: створення в Бітрікс24
У amoCRM кастомні поля створюються довільно. Перед міграцією — створити відповідні UF-поля в Бітрікс24 через crm.contact.userfield.add. Тип поля визначається за field_type з API amoCRM:
-
text→ рядок -
numeric→ ціле число -
date→ дата -
select→ список (enumeration)
Перенесення контактів
Кожен контакт amoCRM стає контактом у Бітрікс24. Телефони та email зберігаються в масивах PHONE / EMAIL із кодами WORK і MOBILE. Дата створення переноситься через поле DATE_CREATE.
Після створення контакту — зберігаємо маппінг amo_id → b24_id для прив'язки угод.
Перенесення угод із нотатками
Угоди — центральна частина міграції. Кожна угода amoCRM переноситься в Бітрікс24 через crm.deal.add з прив'язкою до контактів і компаній за маппінгом. Вихідний ID зберігається в користувацькому полі UF_CRM_AMO_ID — для звірення та налагодження.
Нотатки (notes) із amoCRM переносяться як timeline-коментарі через crm.timeline.comment.add. Це зберігає історію переговорів, видиму менеджеру в картці угоди.
Завдання та дзвінки
Завдання з amoCRM переносяться через tasks.task.add. Записи дзвінків (якщо підключена телефонія) — через crm.activity.add з типом CALL. Це цінна історична інформація для відновлення роботи з клієнтом.
Запобігання дублікатам
При повторних запусках скрипту міграції (при помилках і відновленні) потрібна перевірка: не створювати запис, якщо UF_CRM_AMO_ID вже існує в Бітрікс24.
$existing = $b24->call('crm.deal.list', [
'filter' => ['UF_CRM_AMO_ID' => $amoLead['id']],
'select' => ['ID'],
]);
if (!empty($existing['result'])) {
continue; // Вже перенесено
}
Валідація результатів
| Метрика | Спосіб перевірки |
|---|---|
| Кількість контактів | Порівняння amoCRM count vs Б24 crm.contact.list |
| Кількість угод | Порівняння по воронках |
| Кастомні поля | Вибіркова перевірка 50 записів |
| Нотатки | Хронологія для 10–15 угод |
Терміни виконання
| Обсяг даних | Термін |
|---|---|
| До 3 000 контактів і угод | 1–2 тижні |
| 3 000–20 000 записів + кастомні поля | 3–5 тижнів |
| 20 000+ записів + історія дзвінків і завдань | 2–3 місяці |
Перехід із amoCRM на Бітрікс24 — це зміна парадигми роботи команди. Паралельно з міграцією даних потрібне навчання новим бізнес-процесам — завдання не менш важливе, ніж технічне перенесення.







