Зв'язатись
CRM та інтеграції · WordPress

Webhook Watchdog для WooCommerce — сторож вебхуків

Завантажити безкоштовно
Версія
v1.0.0
Сумісність
WordPress 6.2+, WooCommerce 6.0+ (перевірено на WP 7.1 / Woo 10.7)
Платформа
WordPress
Webhook Watchdog для WooCommerce — сторож вебхуків

Що включено в ліцензії

Функція Free Pro
Знаходить вебхуки, які WooCommerce вимкнув після 5 невдалих доставок
Журнал інцидентів: топік, URL, кількість невдач, що зроблено, відповідь ендпоінта
Один дайджест на скан, а не лист на кожен вебхук
Скан за розкладом: 15 хв / година / двічі на добу / доба
Кнопка «Сканувати зараз»
Автоматичне ввімкнення назад після перевірки, що ендпоінт живий
Перевірка — HEAD/GET, ніколи не повтор невдалого payload
Скидання лічильника невдач разом зі статусом
Захист від «мигання»: ліміт відновлень на вебхук за добу
Ретенція журналу, до трьох років
Нічого не додає на вітрину і не сповільнює магазин
HPOS і блоковий кошик/чекаут — сумісність оголошена

WooCommerce веде лічильник невдалих доставок на кожному вебхуку. Після пʼятої поспіль він ставить вебхуку статус disabled — і не каже про це нікому. Ні листа, ні повідомлення в адмінці, ні запису там, куди власник магазину зазирає.

Історія завжди одна й та сама: інтеграція на тому кінці — Printful, CRM, склад, бухгалтерія — просто перестає отримувати замовлення, а магазин дізнається про це за кілька днів від клієнта або з ненадісланої посилки. На екрані вебхуків написано «Вимкнено», і ніде не пояснено ні коли, ні чому, ні скільки разів так уже було.

Цей модуль — та сама відсутня половина.

Живе демо

Тестовий стенд: test.catcode.com.ua (WordPress 7.1 + WooCommerce 10.7). У меню адмінки — Webhook Watchdog: кнопка «Сканувати зараз», час останнього проходу і журнал інцидентів.

Показово: на цьому ж стенді модуль одразу після встановлення знайшов реальний зламаний вебхук — «Синхронізація замовлень з CRM», 6 невдалих доставок, ендпоінт більше не існує. Про нього ніхто не знав.

Як це виглядає для покупця

Ніяк — і це правильно. Модуль не додає нічого на вітрину, не втручається в кошик, чекаут чи листи покупцям і не сповільнює жодної сторінки магазину. Він працює лише в адмінці й за розкладом.

Що отримує адмін

Журнал інцидентів із реального стенду: живий ендпоінт увімкнено назад (HTTP 200), два мертвих лишились вимкненими з точною причиною.
Журнал інцидентів із реального стенду: живий ендпоінт увімкнено назад (HTTP 200), два мертвих лишились вимкненими з точною причиною.

Перевірка вебхуків за розкладом — кожні 15 хвилин, щогодини, двічі на добу або раз на добу, на вибір. Плюс кнопка «Сканувати зараз», коли треба перевірити просто зараз.

Журнал інцидентів — окремий екран зі своєю таблицею: коли знайдено, який вебхук, топік, URL доставки, скільки доставок провалилось, що зроблено і що відповів ендпоінт. Фільтри за результатом: тільки повідомлено, відновлено, ендпоінт лежить, ліміт вичерпано, не вдалося.

Саме журнал відповідає на питання, на яке не відповідає ні WooCommerce, ні панель самої інтеграції: як довго ця інтеграція вже збоїть і як часто.

Лист — один дайджест на скан, а не лист на кожен вебхук. Коли лягає ендпоінт, він забирає з собою всі свої вебхуки одразу, і дванадцять однакових листів о третій ночі вчать фільтрувати відправника, а не лагодити ендпоінт.

Як це працює — крок за кроком

Налаштування: періодичність скану, що робити зі знайденим вебхуком, перевірка ендпоінта з таймаутом і захист від «мигання».
Налаштування: періодичність скану, що робити зі знайденим вебхуком, перевірка ендпоінта з таймаутом і захист від «мигання».
  1. За розкладом модуль питає WooCommerce, які вебхуки зараз у статусі disabled (за бажанням — ще й paused).
  2. На кожен такий вебхук пишеться інцидент: топік, URL, лічильник невдач, попередній статус.
  3. У режимі «тільки повідомити» на цьому все й завершується — стан магазину не змінюється, ви просто дізнаєтесь.
  4. У режимі відновлення модуль спершу перевіряє, чи ендпоінт узагалі відповідає: звичайний HEAD, з відкатом на GET, якщо HEAD віддає 405.
  5. Якщо відповіді нема або прийшло 5xx — вебхук лишається вимкненим, а в журналі й у листі пишеться точна причина (аж до тексту помилки cURL).
  6. Якщо ендпоінт живий — вебхук вмикається назад, і разом зі статусом скидається лічильник невдач.
  7. Записи інцидентів старші за заданий строк видаляються самі.

Проба навмисно ніколи не повторює той payload, який не дійшов. Повторно надіслати справжній вебхук замовлення на ендпоінт, стан якого невідомий, — це рівно той шлях, яким склад відвантажує те саме замовлення двічі. Проба відповідає лише на питання «чи хтось узагалі слухає за цією адресою», і саме воно вирішує, чи варто пробувати вмикати.

Будь-яка HTTP-відповідь, включно з 4xx, вважається ознакою життя: ендпоінт, який відхиляє голий GET, але приймає підписаний POST, — це абсолютно нормально, і це все одно доказ, що хост піднятий.

Що включено в ліцензії

Free — виявлення і журнал: скан за розкладом, повний запис інцидентів, дайджест на пошту, ручний скан, зберігання історії 30 днів, плюс до двох автоматичних відновлень на один вебхук за добу.

Pro — автоматичне ввімкнення вебхука назад як штатний режим, налаштовуваний захист від «мигання» (скільки разів на добу один вебхук можна відновлювати, 0 = без обмежень) і довше зберігання журналу (до трьох років).

Скільки коштує

Базова версія — безкоштовно. Pro — 990 грн на рік за домен. Тестовий період — 7 днів.

Технічні вимоги

  • WordPress 6.2+ (перевірено на 7.1).
  • WooCommerce 6.0+ (перевірено на 10.7).
  • PHP 7.4+.
  • Працює з HPOS (власні таблиці замовлень) і з блоковим кошиком та чекаутом — сумісність оголошена явно.
  • Для перевірки ендпоінта потрібні вихідні HTTP-запити з сайту (стандартний WP HTTP API).

Що під капотом

Штатна панель вебхуків WooCommerce: два з трьох вимкнено (мертві ендпоінти), і жодної історії — саме цього бракує, коли інтеграція тихо відвалюється.
Штатна панель вебхуків WooCommerce: два з трьох вимкнено (мертві ендпоінти), і жодної історії — саме цього бракує, коли інтеграція тихо відвалюється.
Один такий вебхук зблизька: WooCommerce сам перевів його у «Вимкнено» після кількох невдач доставки — рівно той стан, який Watchdog вмикає назад і за яким веде журнал.
Один такий вебхук зблизька: WooCommerce сам перевів його у «Вимкнено» після кількох невдач доставки — рівно той стан, який Watchdog вмикає назад і за яким веде журнал.

Власна таблиця інцидентів — рядок на кожен випадок, коли вебхук знайдено вимкненим, з тим, що з ним зробили. Це те, чого немає ні у WooCommerce, ні в панелі інтеграції: історія, за якою видно повторюваність.

Скидання failure_count при відновленні — не косметика. WooCommerce порівнює поточний лічильник із порогом, тож вебхук, увімкнений із лічильником, що лишився на пʼятірці, помирає знову на наступній же невдачі. Саме цю помилку роблять, коли вмикають вебхук руками.

Захист від «мигання» рахує саме відновлення, а не згадки: вебхук, про який десять разів повідомили, нічого з ліміту не витратив. Без цього обмеження вебхук, чий ендпоінт зламаний так, що проба цього не бачить, воскресав би вічно — по пʼять справжніх запитів за раз.

Проходження загорнуте так, що збій усередині не валить чергу завдань WordPress: сторожовий пес, який падає з фаталом, забирає з собою всі інші заплановані задачі магазину.

Модуль не чіпає таблиці замовлень і нічого нікуди не надсилає, крім листа на вашу власну адресу і проби на той URL доставки, який ви самі вказали у WooCommerce.

Як встановити

  1. Плагіни → Додати новий → Завантажити плагін → zip → активувати. WooCommerce має бути активним.
  2. У меню адмінки зʼявиться Webhook Watchdog.
  3. Лишіть режим «тільки повідомити» на кілька днів — щоб побачити, що насправді відбувається у вашому магазині.
  4. Після цього вирішуйте, чи вмикати автоматичне відновлення.

Історія версій

1.0.0 — перший реліз: скан за розкладом, журнал інцидентів, дайджест на пошту, ручний скан, автоматичне відновлення з попередньою пробою ендпоінта, скидання лічильника невдач, захист від «мигання», ретенція.

Часті питання

Чому мій вебхук узагалі вимикається?

WooCommerce збільшує лічильник невдач на кожній доставці без 2xx і після пʼятої ставить статус «вимкнено». Достатньо короткої аварії на боці отримувача.

Чи перешле він доставки, які загубились?

Ні. WooCommerce не зберігає payload невдалих доставок, а вигадувати заміну гірше за пропуск.

Чи не почне він вмикати вебхук, який я вимкнув навмисно?

Ні. Вручну поставлений paused за замовчуванням не чіпається — це окремий перемикач.

Скільки він навантажує сайт?

Один запит по індексу плюс одна легка HTTP-проба на кожен зламаний вебхук. Коли все справне — проб нема.

Що буде при видаленні плагіна?

Журнал видаляється тільки при повному видаленні, а не при деактивації.

Питання щодо модуля?

Пишіть у Telegram — відповімо протягом робочого дня. Допоможемо з налаштуванням, сумісністю та активацією ключа.

@catcode_support

Не той варіант, що шукаєте?

Ми робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.

Замовити кастомний модуль