Содержание
- Выберите топики, которые вправе вас отвлекать
- Шаг 1 — Создайте канал
- Шаг 2 — Добавьте вебхук в Shopify
- Шаг 3 — Вынесите в шаблон только те поля, которые вы читаете
- Шаг 4 — Маршрутизируйте по топику условием
- Будите меня только ради крупных заказов
- Чего это не делает
- Частые вопросы
- Нужно ли для этого приложение Shopify?
- Может ли склад видеть заказы, не видя моей админки Shopify?
- Стоит ли класть имена покупателей в уведомление?
- Можно получить звонок при чарджбэке?
- Итог
- Связанные материалы
Письма Shopify о заказах приходят тогда, когда почтовый клиент решит синхронизироваться, попадают в папку, на которую у вас настроен фильтр, и выглядят одинаково — что заказ на 12 €, что на 1200 €. Если магазин ведёте вы сами, это неправильная форма сигнала.
Вебхук это чинит. Shopify отправит каждый заказ POST-запросом на выбранный вами URL, а Echobell превратит этот POST в уведомление, громкость которого выбираете вы.
Выберите топики, которые вправе вас отвлекать
Типы событий вебхуков Shopify называет топиками. Этих четырёх хватает большинству магазинов, которые ведёт один человек:
| Топик | Что это значит | Срочность |
|---|---|---|
orders/create | Заказ оформлен. | Обычная |
orders/paid | Оплата прошла. Берите этот, если важны только реально пришедшие деньги. | Обычная |
orders/cancelled | Покупатель отменил. Полезно узнать до упаковки. | Срочная |
refunds/create | Оформлен возврат. | Срочная |
Подписывайтесь на orders/create или на orders/paid, но не на оба — если только вам правда не нужны два уведомления на одну продажу. Для большинства магазинов честнее orders/paid.
Шаг 1 — Создайте канал
Создайте в Echobell канал с названием вроде «Заказы Shopify», скопируйте его webhook-URL и включите Только POST. Shopify всегда отправляет POST.
Если хотите отдельный, более громкий канал для отмен и возвратов, создайте его сразу и переведите в срочный режим.
Шаг 2 — Добавьте вебхук в Shopify
В админке Shopify откройте Настройки → Уведомления → Вебхуки → Создать вебхук. Выберите топик, формат — JSON, вставьте URL канала.
При сохранении Shopify отправляет тестовый payload. Если телефон завибрировал, путь работает.
Шаг 3 — Вынесите в шаблон только те поля, которые вы читаете
Payload заказа в Shopify длинный — больше сотни полей на заказ. Вам нужны единицы:
Заголовок
Заказ #{{order_number}} · {{total_price}} {{currency}}
Текст
{{customer.first_name}} {{customer.last_name}}
{{line_items[0].title}}
line_items — массив, поэтому line_items[0] это первая позиция. Шаблоны Echobell умеют обращаться по индексу, но цикла нет: заказ из трёх позиций покажет первую и ничего больше. Если это важно, поставьте рядом количество:
{{line_items[0].title}} · всего {{line_items.length}} позиций
В отличие от Stripe, Shopify присылает total_price десятичной строкой — "49.00", а не 4900 — так что читается правильно без всякой арифметики.
Шаг 4 — Маршрутизируйте по топику условием
Если направить несколько топиков в один канал, Shopify сообщит в заголовке, какой именно пришёл:
header["x-shopify-topic"] == "orders/paid"
Это самый чистый способ развести поведение, не создавая в админке по вебхуку на канал.
Будите меня только ради крупных заказов
Схема, которой на самом деле хотят почти все владельцы магазинов: все заказы идут в тихий канал, и только те, что выше порога, — в громкий.
Создайте второй канал, переведите в срочный режим, направьте на него ещё один вебхук orders/paid и задайте условие:
total_price > 500
Теперь обычный день — фоновый гул, а заказ на 900 € — то, что вы почувствуете.
Чего это не делает
Без проверки HMAC. Shopify подписывает каждый вебхук заголовком X-Shopify-Hmac-Sha256. Echobell его не проверяет, поэтому URL канала — единственное, что не пускает посторонних. Держите его в секрете, оставьте Только POST включённым, а если поддельное уведомление о заказе нанесёт реальный ущерб, поставьте впереди собственный эндпоинт, проверяйте HMAC там и вызывайте Echobell уже оттуда.
Shopify может доставить один и тот же вебхук дважды. Он повторяет попытки при сбое, и повторы не дедуплицируются. Считайте уведомление поводом посмотреть заказ, а не счётчиком заказов. Источник истины — админка Shopify.
Инвентарные топики быстро становятся шумными. inventory_levels/update срабатывает на любое движение остатков, включая ваши собственные правки. Нужны оповещения о низком остатке — фильтруйте жёстко, иначе пожалеете ещё до обеда.
Частые вопросы
Нужно ли для этого приложение Shopify?
Нет. Вебхуки в разделе Настройки → Уведомления встроены в админку и не требуют ни приложения, ни партнёрского аккаунта, ни кода.
Может ли склад видеть заказы, не видя моей админки Shopify?
Да. Поделитесь с ними каналом. Они получат уведомления и ничего больше — без доступа в админку и без данных покупателей сверх того, что вы включили в шаблон.
Стоит ли класть имена покупателей в уведомление?
Это ваш выбор, и его стоит сделать осознанно. Всё, что попало в шаблон, показывается на заблокированном экране. Номера заказа и суммы обычно достаточно, чтобы решить, реагировать ли.
Можно получить звонок при чарджбэке?
Споры в Shopify Payments приходят топиком disputes/create в магазинах, использующих Shopify Payments. Направьте его в канал со звонком — это единственное заказное событие со сроком.
Итог
Один вебхук, один шаблон и условие, если нужна громкая версия. Занимает минут пять и заменяет обновление страницы заказов.
Скачайте Echobell для iPhone или возьмите в Google Play, затем оформите тестовый заказ и посмотрите, как он придёт раньше письма-подтверждения.