ok:true не означає «дійшло»: прийом проти результату
Майже кожна інтеграція відповідає на запит чимось на кшталт ok:true. Програміст бачить успіх, пише в журнал «надіслано» і йде далі. Але цей ok майже ніколи не означає, що сталося те, заради чого запит робили. Він означає, що інша сторона прийняла запит в обробку. Між «прийнято» і «зроблено» лежить ціла система, яка може відмовити мовчки. Ми наступали на це в повідомленнях, в оплатах і в документах — і правило звідти одне.
Прийом і результат — два різні факти
Будь-яка зовнішня система відповідає на найдешевше питання: «чи прийняв я твій запит?». Питання, яке цікавить бізнес, — «чи отримав клієнт повідомлення», «чи запустився пост», «чи зареєстровано чек» — відповідається пізніше, іншим каналом, а іноді не відповідається взагалі, якщо його не запитати. Система, яка рахує перше як друге, звітує про успіх у день, коли частина роботи не виконана.
Приклад 1. Повідомлення клієнту чи співробітнику
У WhatsApp Business API відповідь «успішно» означає, що платформа взяла повідомлення. Далі його можуть не доставити: поза вікном 24 години вільний текст не проходить зовсім, а навіть затверджений шаблон платформа може притримати з кодом 131049 — вона сама обмежує, скільки повідомлень доходить до одного отримувача.
У нашій системі продажів через месенджер це видно на службових сповіщеннях. Поза вікном довгий текст підміняється шаблоном, у якому лишається лише перший змістовний рядок. А кілька сповіщень підряд одній людині вичерпують її ліміт — і наступні просто не доходять, хоча кожне отримало успішну відповідь. Звідси два правила: перший рядок будь-якого службового повідомлення має сам по собі нести суть, і замість трьох сповіщень підряд краще одне зведене.
Приклад 2. Оплата на автоматі
Еквайр підтвердив оплату — це факт про гроші, а не про послугу. Клієнт міг заплатити, а пост не запуститись: обрив звʼязку з контролером, збій живлення, помилка в команді запуску. У звірці це окрема категорія розбіжності: оплат більше, ніж запусків. Вона не менш важлива за недостачу, бо це клієнти, які заплатили дарма, і їхні скарги вже в дорозі.
Приклад 3. Фіскальний чек
Відправити чек і зареєструвати його — теж різні події. Те, що прийнято грошима, і те, що фіскалізовано, — два числа, і їхня різниця є індикатором здоровʼя всієї установки. Поки вона нуль, усе гаразд. Коли ні — щось зламалося, і краще дізнатися це з власної панелі, ніж із перевірки.
Як будувати перевірку результату
Записувати два статуси, а не один. «Прийнято» і «підтверджено результат» — окремі поля з окремими часовими мітками. Між ними — стан «чекаємо», який має свій строк.
Читати канал результату. Для повідомлень — вебхуки статусів доставки, для оплат — подію запуску від контролера, для чеків — відповідь фіскального сервера. Не код відповіді на відправку.
Логувати провал гучно. Мовчазна неуспішність — найдорожча. Якщо «не дійшло» видно лише тому, хто сам пішов шукати, його не побачить ніхто.
Звіряти підсумки. Раз на день: скільки відправлено, скільки підтверджено, скільки зависло. Різниця має бути або нулем, або списком з причинами.
Мати запасний шлях. Те, що не дійшло автоматично, має потрапити до людини, яка доведе справу вручну.
Чому це питання не лише техніки
За двадцять місяців наша система продажів у месенджері обробила 3 332 повідомлення, провела 260 замовлень і згенерувала 196 документів. На такому обсязі «майже все дійшло» означає конкретних людей, які чогось не отримали: клієнта, що не побачив рахунок, співробітника, що не знав про задачу. Звіт, який рахує прийняте як доставлене, приховує саме їх.
Часті питання
Чи можна довіряти коду 200 від API?
Що таке помилка 131049 у WhatsApp?
Як не засипати співробітників сповіщеннями і не втратити важливе?
Скільки коштує така перевірка?
Ще відповіді
Оновлено: 2026-10-10