Демо-проект
Связка сайта с amoCRM: заявка становится сделкой
Форма на сайте доводит заявку до карточки сделки в CRM: с проверками, повторами при сбое и журналом доставок.
интеграция и стенд · Node.js · amoCRM API · WordPress · PHP
в работеСумма сделки не приходит с формы

Задача
Заявка с сайта обычно живёт в почтовом ящике и в блокноте менеджера. Кто-то забыл перезвонить, у кого-то потерялся телефон, а к концу недели никто не скажет, сколько обращений вообще было и что с ними стало. Связка нужна для того, чтобы заявка с формы сама доезжала до карточки сделки в CRM и было видно, что доехало, а что застряло.
Проект демонстрационный. Компания «Волокно» вымышленная, аккаунт amoCRM пробный, открыт 27 августа 2026 года, услуги в демо-сделках взяты из прайса моего же демо-лендинга «ЧистоДом». Настоящих клиентских данных на стенде нет.
Решение
Заявка идёт по цепочке из трёх звеньев: форма на сайте, приёмник, amoCRM.
- Форма на WordPress сначала записывает заявку в свою таблицу и только потом пытается отправить. Если приёмник молчит, заявка не пропадает: она остаётся в очереди, и WP-Cron раз в пять минут забирает её на повтор - всего до пяти попыток, после чего заявка помечается как не доставленная. В журнале сайта у каждой заявки видно состояние: принята, доставлена, ожидает повтора, не доставлена.
- Приёмник проверяет заявку до обращения в CRM. Имя короче двух символов, неполный телефон, отсутствие согласия на обработку персональных данных - отказ с понятной причиной. В воронку такая заявка не попадает, менеджер не разбирает мусор.
- В amoCRM контакт и сделка создаются одним запросом, а тело заявки подшивается примечанием: имя, телефон, что нужно, страница, отметка о согласии, время обращения. Менеджер видит в карточке всё, что человек написал, а не голое «заявка с сайта».
- Поля «Источник» и «Комментарий» стенд заводит сам при первом запуске и в следующие находит по имени, а не создаёт заново.
Живой прогон 27 августа: приёмник CRM поднят на том же порту, куда плагин сайта уже слал заявки, форма «Волокно» отправляет заявку, и в amoCRM появляется сделка с примечанием и заполненными полями «Источник» и «Комментарий». Отдельный скрипт наполняет воронку вымышленными заявками: в прогоне десять заявок и десять созданных сделок, в журнале стенда их тридцать за три захода.
Детали, которые легко не заметить
- Сбой в журнале настоящий. Первая попытка одной заявки уходит на порт, где никто не слушает, вторая проходит на боевой адрес. Дорисованных строк нет: повтор в журнале стоит там, где он правда был.
- Между запросами держится пауза под ограничение amoCRM в семь запросов в секунду, а повторы идут с нарастающим ожиданием. Приёмник повторяет только сетевые сбои и ошибки сервера; ответ с кодом 4xx он не повторяет.
- Ответ приёмника различает три разных «не получилось»: тело не разобрано, заявка неполная, сделка не создана. Сайт код ответа сохраняет в своём журнале, но пока ставит повтор одинаково на любой из них.
- В журнале связки нет телефона и почты, только услуга, сумма, история попыток и номер сделки. Токен доступа не печатается нигде: со стенда снимаются кадры для портфолио.
- Приёмник совместим по формату с соседним стендом, который отправляет заявки в Telegram: те же поля, те же проверки. Порт приёмника задаётся переменной окружения, поэтому для прогона он занял порт телеграмного стенда, а плагин сайта не перенастраивался.
Что осталось
- Сделка с формы приходит с нулевой суммой. Форма не передаёт сумму заявки, и в таблице плагина такого поля пока нет, так что чинить надо от формы: посчитать сумму по прайсу и провести её через запись, отправку и приёмник.
- Подпись под отправленной формой на сайте по-прежнему говорит, что уведомление ушло мастеру в Телеграм: текст захардкожен в плагине и под связку с CRM не переписан.
- Сайт не разбирает причину отказа: заведомо неполную заявку он всё равно перепошлёт пять раз вместо того, чтобы сразу показать проблему.
- Не снят один кадр, где форма и получившаяся сделка видны рядом. Пробный аккаунт заканчивается около 10 сентября 2026 года, и после этого прогон на нём уже не повторить. Сам стенд от этого не ломается: он переносится на другой аккаунт заменой файла с адресом и токеном.
Скриншоты



