Flow Lab

Починка сценария Make.com · демо‑кейс

Почти все запуски выглядели нормально. А заявки всё равно терялись.

Форма заявки на сайте передаёт данные в сценарий Make: записать заявку, найти зону обслуживания, предупредить дежурного мастера о срочном вызове, остальные заявки отправить письмом в отдел продаж. В истории запусков почти всё выглядит нормально. Аудит нашёл 11 проблем, и из-за 6 из них о заявке никто не узнаёт или она приходит с пустыми полями.

Демо-сценарий собран для этого кейса по образцу типичного потока заявок компании бытовых услуг. Это не сценарий клиента.

11проблем найдено: 9 автоматической проверкой, 2 при ручном разборе
6из них: о заявке никто не узнаёт или в уведомлении пустые поля
0проблем находят те же автоматические проверки после исправления

Сценарий

Что было не так и как исправлено

ВЫСОКИЙ · потерянные заявки

Одна ошибка выключала весь сценарий

Настройка «Allow storing of incomplete executions» (хранить незавершённые запуски) была выключена. Если Google Sheets, Slack или Gmail давали сбой, запуск останавливался с ошибкой и повторить его было уже нельзя: сайт форму заново не отправляет. Хуже того, при настройках ошибок по умолчанию Make выключает сценарий с запуском от webhook сразу после первой ошибки, и все следующие заявки пропадали, пока кто-нибудь этого не замечал.

Исправление: незавершённые запуски включены, а на шагах Sheets, Slack и Gmail стоят обработчики Break с автоматическим повтором. Теперь шаг со сбоем ждёт и пробует снова, а не останавливает всё.

ВЫСОКИЙ · пустые поля

Ошибки API принимались за ответы

В поиске зоны по индексу (старый модуль HTTP) была выключена настройка «Evaluate all states as errors». Когда API отвечал ошибкой 401 или 500, Make шёл дальше и принимал текст ошибки за зону обслуживания, а поле «Area:» в уведомлениях оставалось пустым.

Исправление: переход на актуальный модуль HTTP «Make a request» с включённой настройкой «Return error if HTTP request fails» и обработчик Resume, который пишет «area lookup failed, check ZIP» (зону найти не удалось, проверьте индекс). Заявка всё равно доходит до продаж с понятной пометкой.

ВЫСОКИЙ · безопасность

Рабочий ключ API лежал прямо в адресе модуля

Ключ получал каждый, к кому попадала выгрузка сценария (blueprint): фрилансер или тот, с кем поделились шаблоном.

Исправление: ключ перенесён в хранилище ключей Make (keychain, вход по ключу API в модуле HTTP) и в выгрузку больше не попадает, а старый ключ заменён на новый.

ВЫСОКИЙ · пустые поля

Два поля брали данные из шагов, которые не выполнялись

Уведомление в Slack брало «Quote #» (номер заявки) из модуля Gmail на другом маршруте, а письмо в отдел продаж брало поле из модуля, который уже удалили. Оба поля всегда были пустыми.

Исправление: оба поля теперь берут номер строки Google Sheets из шага «Log request» (запись заявки), который на любом пути выполняется до развилки.

СРЕДНИЙ · лишние письма и пропуски

Продажи получали письмо на каждую услугу или ни одного

Iterator по списку услуг передавал данные прямо в Gmail. Клиент отмечал три услуги, и приходили три почти одинаковых письма. При ручном разборе нашлось ещё: если клиент не отметил ни одной услуги, письма не было вовсе, потому что из пустого списка iterator ничего дальше не передаёт.

Исправление: iterator убран. Письмо перечисляет услуги через join(), а при пустом списке пишет «не указано»: одна заявка, всегда одно письмо.

ВЫСОКИЙ · найдено при ручном разборе

«Urgent» не совпадало с «urgent»

Фильтры развилки сравнивали «urgent» и «standard» точно, с учётом регистра букв. Если форма присылала «Urgent» или пустое значение, не подходил ни один маршрут. Строка в таблицу уже записалась, но запасного маршрута не было, и о заявке никто не узнавал.

Исправление: «urgent» сравнивается без учёта регистра, а маршрут продаж стал запасным (fallback): всё, что не срочно, доходит до продаж.

НИЗКИЙ · мелочи

Настройки помельче

Строки в Sheets записывались как простой текст, поэтому даты и числа не сортировались и не фильтровались.

Исправление: valueInputOption: USER_ENTERED.

До и после

СитуацияДоПосле
Gmail или Sheets на минуту недоступныЗапуск падает, сценарий выключаетсяШаг повторяется, сценарий работает
API индексов отвечает ошибкойПустое поле «Area», без предупрежденияЗаявка уходит с пометкой «check ZIP» (проверьте индекс)
Форма присылает «Urgent» с большой буквыНи один маршрут не подходит, никто не получает уведомленияДежурный мастер получает уведомление
Клиент выбрал 3 услуги / ни одной3 письма / ни одногоВсегда 1 письмо
Номер заявки в уведомленияхВсегда пустойНомер строки в таблице
Выгрузку сценария кому-то отправилиВместе с ней уходит ключ APIСекретов внутри нет

Отчёт аудита

Сначала автоматическая проверка выгрузки сценария (blueprint): ничего не запускается, доступ к вашим аккаунтам не нужен. Потом ручной разбор логики, и каждый пункт проверяется в редакторе, прежде чем что-то менять. Отрывок:

Разбор сценария Make: Quote requests → Sheet → Sales alerts (ДО)
7 модулей, запуск: мгновенный (webhook).

1. ВЫСОКИЙ - Настройки сценария: «Allow storing of incomplete executions» выключено, а сценарий запускается от webhook. Если любой модуль падает, запуск останавливается и заявка пропадает. При настройках по умолчанию Make выключает сценарий с мгновенным запуском сразу после первой ошибки.
2. ВЫСОКИЙ - «ZIP → service area» [3]: «Evaluate all states as errors» выключено: ответ 4xx/5xx считается успехом.
4. ВЫСОКИЙ - «Alert on-call tech» [5]: берёт поле из «Email sales» [7], а этот модуль не стоит на пути до него. Здесь всегда пусто.
...
ПОСЛЕ: автоматические проверки проблем не нашли. (Ручной разбор: сделан.)

Файлы сценариев написаны вручную для этого демо: они показывают, как устроено исправление, и в Make не импортировались. Настройки модулей условные. В настоящей работе каждое изменение делается и проверяется в вашем аккаунте.

Как проходит починка

  1. Вы выгружаете сценарий: в редакторе … (More) → Export Blueprint, и присылаете файл .json. Для первого просмотра входить в ваш аккаунт не нужно.
  2. В тот же день: понятный список того, что сломано, во что это вам обходится и что я бы изменила.
  3. Вы соглашаетесь, я исправляю сценарий в вашем аккаунте, прогоняю тестовые заявки по каждому маршруту и показываю результат.
  4. По желанию ежемесячная поддержка: слежу за ошибками сценария и исправляю новые, пока из-за них не потерялись заявки.