Как связать WooCommerce с Telegram

Автор:vkuzyomko

Как связать WooCommerce с Telegram

Краткий ответ: WooCommerce можно связать с Telegram через Telegram-бота, bot token, chat_id и серверную отправку уведомлений из WordPress. Самый простой способ — поставить готовый плагин уведомлений. Более надёжный способ — сделать отдельный мини-плагин, который отправляет в Telegram новые заказы, смену статуса, оплату, отмену, низкий остаток товара и ошибки, не замедляя checkout.

Telegram в WooCommerce лучше использовать как быстрый канал уведомлений для менеджера. Он не должен заменять заказы в админке, email-уведомления и CRM. Правильная схема: заказ создаётся в WooCommerce, письмо остаётся резервным каналом, CRM хранит историю клиента, а Telegram быстро сообщает менеджеру о важном событии.

Причина

В WooCommerce письма о заказах часто приходят с задержкой, попадают в спам или теряются в почтовом ящике менеджера. Telegram решает другую задачу: он быстро показывает событие на телефоне — новый заказ, успешная оплата, отмена, возврат, смена статуса или низкий остаток товара.

Связка WooCommerce с Telegram нужна, когда магазин должен быстро реагировать на заказы.

  • менеджер не хочет постоянно проверять wp-admin;
  • письма WooCommerce приходят поздно или попадают в спам;
  • нужно уведомлять общий Telegram-чат отдела продаж;
  • нужно видеть новый заказ сразу после оформления;
  • нужно получать уведомления о смене статуса заказа;
  • нужно видеть оплату, отмену, возврат или ошибку заказа;
  • нужно контролировать товары с низким остатком;
  • нужно отправлять разные типы заказов в разные Telegram-чаты;
  • нужно дублировать важные заказы из WooCommerce в CRM и Telegram.

Если задача не только про заказы, а про обычные формы заявок, лучше сначала посмотреть отдельную схему: как отправлять заявки с WordPress в Telegram. Для WooCommerce логика сложнее, потому что нужно учитывать статусы заказов, оплату, доставку, checkout, сессии и производительность.

Что можно отправлять из WooCommerce в Telegram

Событие WooCommerce Что отправлять Когда полезно
Новый заказ Номер заказа, сумма, товары, клиент, телефон Быстрое уведомление менеджеру
Оплата завершена Номер заказа, сумма, способ оплаты Контроль оплаченных заказов
Смена статуса Старый статус, новый статус, номер заказа Контроль обработки заказов
Отмена заказа Заказ, клиент, причина или комментарий Контроль проблемных заказов
Возврат Сумма возврата, заказ, товар Финансовый контроль
Низкий остаток Товар, SKU, текущий остаток Контроль склада
Ошибка оплаты Заказ, gateway, статус, клиент Диагностика проблем с оплатой
Заказ на большую сумму Номер заказа, сумма, клиент Приоритетная реакция менеджера

Диагностика

Перед настройкой нужно проверить не только Telegram, но и сам WooCommerce. Если заказ не создаётся, Telegram ничего не отправит. Если заказ создаётся, но статус не меняется после оплаты, уведомление может уйти не в тот момент.

Что проверить сначала

  • создаются ли заказы в WooCommerce;
  • какой статус получает новый заказ;
  • меняется ли статус после оплаты;
  • работают ли email-уведомления WooCommerce;
  • есть ли ошибки в WooCommerce → Status → Logs;
  • есть ли ошибки в wp-content/debug.log;
  • какой платёжный плагин используется;
  • не зависает ли checkout после оформления;
  • нужны ли уведомления по всем заказам или только по выбранным статусам;
  • нужно ли отправлять уведомления в личный чат, группу или канал;
  • есть ли bot token и правильный chat_id;
  • может ли хостинг выполнять исходящие HTTPS-запросы к Telegram API.

Как понять, где проблема

Симптом Вероятная причина Что проверить
Заказ есть, Telegram молчит Не сработал hook или ошибка Telegram API debug.log, hook, token, chat_id
Telegram пишет только некоторые заказы Фильтр по статусу или способу оплаты Статусы, условия в коде, настройки плагина
Checkout стал дольше работать Отправка в Telegram выполняется синхронно Network, wc-ajax=checkout, timeout
Ошибка 401 Неверный bot token Токен из BotFather
Ошибка 403 Бот не имеет доступа к чату Бот в группе, права в канале
Ошибка 400 Неверный chat_id или HTML в сообщении chat_id, parse_mode, экранирование
Товаров нет в сообщении Неправильно получены items заказа wc_get_order(), get_items()
Дубли уведомлений Несколько hooks или повторные webhooks оплаты Логи, payment gateway, условия отправки

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Для WooCommerce лучше не отправлять Telegram-сообщение тяжёлым запросом прямо внутри checkout. Если Telegram API отвечает медленно, покупатель будет ждать. В простых магазинах можно отправлять сразу, но в рабочем магазине безопаснее ставить уведомление в очередь: заказ создан — событие записано — Telegram отправлен через WP-Cron или Action Scheduler.

Правильная схема интеграции

  • 1. Создать Telegram-бота. Получить bot token через BotFather.
  • 2. Получить chat_id. Для личного чата, группы или канала.
  • 3. Проверить тестовое сообщение. Бот должен писать в нужный чат.
  • 4. Выбрать события WooCommerce. Новый заказ, оплата, смена статуса, отмена, возврат, низкий остаток.
  • 5. Сформировать короткое сообщение. Не отправлять лишние персональные данные.
  • 6. Отправлять с сервера. Только через PHP, не через JavaScript.
  • 7. Логировать ошибки. Код ответа Telegram и тело ошибки без bot token.
  • 8. Не тормозить checkout. Для важных магазинов использовать очередь.
  • 9. Оставить email и CRM. Telegram — быстрый сигнал, не основное хранилище заказа.

Какие hooks WooCommerce использовать

Hook Когда срабатывает Для чего использовать
woocommerce_new_order Когда заказ создан Быстрое уведомление о новом заказе
woocommerce_checkout_order_processed После обработки checkout и создания заказа Уведомление после оформления
woocommerce_payment_complete После успешной оплаты Уведомление об оплате
woocommerce_order_status_changed При смене статуса заказа Контроль обработки заказов
woocommerce_low_stock Когда товар достиг низкого остатка Уведомление о складе

Если магазин уже тормозит на оформлении заказа, не добавляйте ещё один внешний запрос прямо в checkout. Сначала проверьте, почему WooCommerce долго оформляет заказ, а потом подключайте Telegram через очередь.

Код

Важно: код ниже работает с заказами WooCommerce и внешним Telegram API. Перед установкой сделайте бэкап, проверьте на staging-копии и не вставляйте bot token в JavaScript или HTML. Для постоянного решения лучше создать отдельный мини-плагин, а не хранить код в теме.

1. Хранение Telegram-настроек в wp-config.php

Куда вставлять: файл wp-config.php, перед строкой /* That’s all, stop editing! */.

define('SC_WC_TELEGRAM_BOT_TOKEN', 'PASTE_YOUR_BOT_TOKEN_HERE');
define('SC_WC_TELEGRAM_CHAT_ID', 'PASTE_YOUR_CHAT_ID_HERE');

2. Базовая функция отправки сообщения в Telegram

Куда вставлять: отдельный мини-плагин или временно functions.php дочерней темы.

<?php
if (!defined('ABSPATH')) {
    exit;
}

function sc_wc_tg_escape_html($text) {
    $text = (string) $text;

    return str_replace(
        array('&', '<', '>'),
        array('&amp;', '&lt;', '&gt;'),
        $text
    );
}

function sc_wc_send_telegram_message($message) {
    if (!defined('SC_WC_TELEGRAM_BOT_TOKEN') || !defined('SC_WC_TELEGRAM_CHAT_ID')) {
        error_log('SC WC Telegram error: token or chat_id is missing.');
        return false;
    }

    $bot_token = SC_WC_TELEGRAM_BOT_TOKEN;
    $chat_id = SC_WC_TELEGRAM_CHAT_ID;

    if (empty($bot_token) || empty($chat_id) || empty($message)) {
        return false;
    }

    $api_url = 'https://api.telegram.org/bot' . $bot_token . '/sendMessage';

    $response = wp_remote_post($api_url, array(
        'timeout' => 10,
        'body' => array(
            'chat_id' => $chat_id,
            'text' => $message,
            'parse_mode' => 'HTML',
            'disable_web_page_preview' => true,
        ),
    ));

    if (is_wp_error($response)) {
        error_log('SC WC Telegram wp_remote_post error: ' . $response->get_error_message());
        return false;
    }

    $response_code = wp_remote_retrieve_response_code($response);
    $response_body = wp_remote_retrieve_body($response);

    if ($response_code !== 200) {
        error_log('SC WC Telegram response code: ' . $response_code);
        error_log('SC WC Telegram response body: ' . $response_body);
        return false;
    }

    return true;
}

3. Формирование сообщения по заказу WooCommerce

Код использует wc_get_order(), поэтому подходит для обычного хранения заказов и для HPOS-совместимой логики WooCommerce.

<?php
function sc_wc_build_order_telegram_message($order_id, $event_title = 'Новый заказ WooCommerce') {
    if (!function_exists('wc_get_order')) {
        return '';
    }

    $order = wc_get_order($order_id);

    if (!$order) {
        return '';
    }

    $items_text = '';

    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        $sku = '';

        if ($product) {
            $sku = $product->get_sku();
        }

        $items_text .= '- ' . $item->get_name();

        if (!empty($sku)) {
            $items_text .= ' [' . $sku . ']';
        }

        $items_text .= ' x ' . $item->get_quantity();
        $items_text .= ' = ' . wc_price($item->get_total(), array('currency' => $order->get_currency()));
        $items_text .= "n";
    }

    $billing_name = trim($order->get_billing_first_name() . ' ' . $order->get_billing_last_name());
    $billing_phone = $order->get_billing_phone();
    $billing_email = $order->get_billing_email();
    $payment_method = $order->get_payment_method_title();
    $shipping_method = $order->get_shipping_method();
    $admin_order_url = method_exists($order, 'get_edit_order_url') ? $order->get_edit_order_url() : '';

    $message = '';
    $message .= '<b>' . sc_wc_tg_escape_html($event_title) . "</b>n";
    $message .= 'Заказ: #' . sc_wc_tg_escape_html($order->get_order_number()) . "n";
    $message .= 'Статус: ' . sc_wc_tg_escape_html(wc_get_order_status_name($order->get_status())) . "n";
    $message .= 'Сумма: ' . sc_wc_tg_escape_html(wp_strip_all_tags($order->get_formatted_order_total())) . "n";
    $message .= 'Клиент: ' . sc_wc_tg_escape_html($billing_name) . "n";
    $message .= 'Телефон: ' . sc_wc_tg_escape_html($billing_phone) . "n";
    $message .= 'Email: ' . sc_wc_tg_escape_html($billing_email) . "n";

    if (!empty($payment_method)) {
        $message .= 'Оплата: ' . sc_wc_tg_escape_html($payment_method) . "n";
    }

    if (!empty($shipping_method)) {
        $message .= 'Доставка: ' . sc_wc_tg_escape_html($shipping_method) . "n";
    }

    if (!empty($items_text)) {
        $message .= "n<b>Товары:</b>n";
        $message .= sc_wc_tg_escape_html($items_text);
    }

    if (!empty($admin_order_url)) {
        $message .= "nАдминка: " . sc_wc_tg_escape_html($admin_order_url);
    }

    return $message;
}

4. Отправка нового заказа в Telegram через очередь WP-Cron

Важно: этот вариант безопаснее для checkout, чем прямой внешний запрос во время оформления заказа. WP-Cron должен нормально работать на сайте. Если WP-Cron отключён, нужно настроить системный cron на хостинге.

<?php
add_action('woocommerce_checkout_order_processed', 'sc_wc_schedule_new_order_telegram', 20, 3);

function sc_wc_schedule_new_order_telegram($order_id, $posted_data, $order) {
    $order_id = (int) $order_id;

    if ($order_id <= 0) {
        return;
    }

    if (!wp_next_scheduled('sc_wc_send_order_telegram_event', array($order_id, 'new_order'))) {
        wp_schedule_single_event(time() + 10, 'sc_wc_send_order_telegram_event', array($order_id, 'new_order'));
    }
}

add_action('sc_wc_send_order_telegram_event', 'sc_wc_send_order_telegram_event_handler', 10, 2);

function sc_wc_send_order_telegram_event_handler($order_id, $event_type) {
    $order_id = (int) $order_id;

    if ($order_id <= 0) {
        return;
    }

    $event_title = 'Новый заказ WooCommerce';

    if ($event_type === 'payment_complete') {
        $event_title = 'Заказ оплачен';
    }

    if ($event_type === 'status_changed') {
        $event_title = 'Статус заказа изменён';
    }

    $message = sc_wc_build_order_telegram_message($order_id, $event_title);

    if (empty($message)) {
        error_log('SC WC Telegram error: empty message for order ' . $order_id);
        return;
    }

    $sent = sc_wc_send_telegram_message($message);

    if (!$sent) {
        error_log('SC WC Telegram error: message not sent for order ' . $order_id);
    }
}

5. Уведомление об успешной оплате

Этот hook полезен, если менеджеру важны только оплаченные заказы, а не все созданные заказы.

<?php
add_action('woocommerce_payment_complete', 'sc_wc_schedule_payment_complete_telegram');

function sc_wc_schedule_payment_complete_telegram($order_id) {
    $order_id = (int) $order_id;

    if ($order_id <= 0) {
        return;
    }

    if (!wp_next_scheduled('sc_wc_send_order_telegram_event', array($order_id, 'payment_complete'))) {
        wp_schedule_single_event(time() + 10, 'sc_wc_send_order_telegram_event', array($order_id, 'payment_complete'));
    }
}

6. Уведомление о смене статуса заказа

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

<?php
add_action('woocommerce_order_status_changed', 'sc_wc_send_status_change_telegram', 20, 4);

function sc_wc_send_status_change_telegram($order_id, $old_status, $new_status, $order) {
    $allowed_statuses = array(
        'processing',
        'completed',
        'cancelled',
        'failed',
        'refunded',
    );

    if (!in_array($new_status, $allowed_statuses, true)) {
        return;
    }

    $order_id = (int) $order_id;

    if ($order_id <= 0) {
        return;
    }

    $old_status_name = wc_get_order_status_name($old_status);
    $new_status_name = wc_get_order_status_name($new_status);

    $message = sc_wc_build_order_telegram_message(
        $order_id,
        'Статус заказа изменён: ' . $old_status_name . ' → ' . $new_status_name
    );

    if (empty($message)) {
        return;
    }

    sc_wc_send_telegram_message($message);
}

7. Уведомление о низком остатке товара

Куда вставлять: в тот же мини-плагин. Работает, если в WooCommerce включён складской учёт и настроены пороги остатка.

<?php
add_action('woocommerce_low_stock', 'sc_wc_send_low_stock_telegram');

function sc_wc_send_low_stock_telegram($product) {
    if (!$product || !is_a($product, 'WC_Product')) {
        return;
    }

    $message = '';
    $message .= "<b>Низкий остаток товара</b>n";
    $message .= 'Товар: ' . sc_wc_tg_escape_html($product->get_name()) . "n";
    $message .= 'SKU: ' . sc_wc_tg_escape_html($product->get_sku()) . "n";
    $message .= 'Остаток: ' . sc_wc_tg_escape_html($product->get_stock_quantity()) . "n";
    $message .= 'ID товара: ' . sc_wc_tg_escape_html($product->get_id());

    sc_wc_send_telegram_message($message);
}

Результат

После правильной настройки менеджер получает в Telegram понятное уведомление: номер заказа, сумма, статус, клиент, телефон, способ оплаты, доставка, товары и ссылка на заказ в админке.

Хороший результат

  • новые заказы приходят в Telegram без входа в wp-admin;
  • оплаченные заказы можно выделить отдельным уведомлением;
  • смена статуса не создаёт хаос из лишних сообщений;
  • bot token не виден на фронтенде;
  • ошибки Telegram API пишутся в debug.log;
  • checkout не тормозит из-за Telegram-запроса;
  • уведомления не дублируются;
  • заказы WooCommerce остаются основным источником данных;
  • email-уведомления WooCommerce остаются резервом;
  • при необходимости заказ дальше передаётся в CRM.

Дополнительные способы

Вариант 1: Готовый WooCommerce Telegram-плагин

Подходит, если нужно быстро получать уведомления о новых заказах, статусах и остатках без разработки.

Плюсы: быстрое подключение, настройки в админке, тестовое сообщение, меньше ручного кода.

Минусы: ограниченная структура сообщений, зависимость от поддержки плагина, не всегда есть нужные условия и логи.

Вариант 2: Универсальный Telegram-плагин для WordPress

Подходит, если нужно получать не только WooCommerce-заказы, но и формы, регистрации, комментарии, ошибки сайта и другие уведомления WordPress.

Плюсы: много событий в одном месте.

Минусы: может быть слишком много настроек и лишних уведомлений.

Вариант 3: Кастомный мини-плагин

Подходит, если нужна точная логика: разные чаты для разных статусов, отдельные уведомления для оплаченных заказов, логи, очередь, фильтр по сумме, товарам или способу доставки.

Плюсы: полный контроль над логикой и сообщениями.

Минусы: нужно тестировать checkout, оплату, статусы и ошибки Telegram API.

Вариант 4: WooCommerce → CRM → Telegram

Подходит, если Telegram — только быстрый сигнал, а вся обработка заказа идёт через CRM. В этом случае WooCommerce передаёт заказ в CRM, а CRM или WordPress отправляет уведомление менеджеру.

Плюсы: меньше риск потерять заказ, есть статусы и история обработки.

Минусы: сложнее архитектура, нужна нормальная интеграция WordPress с CRM/API.

Вариант 5: No-code через n8n, Make, Zapier

Подходит, если нужно быстро связать WooCommerce, Telegram, Google Sheets и CRM без написания PHP.

Плюсы: удобно для бизнес-автоматизации.

Минусы: внешний сервис, тарифы, задержки, зависимость от WooCommerce REST API и webhook.

Безопасность

WooCommerce-заказ содержит персональные данные клиента. Поэтому Telegram-уведомления нужно делать аккуратно: отправлять только нужную информацию и только в закрытые рабочие чаты.

Что нельзя делать

  • нельзя вставлять bot token в JavaScript;
  • нельзя показывать token в HTML-коде страницы;
  • нельзя отправлять платёжные данные клиента;
  • нельзя отправлять заказы в публичный канал;
  • нельзя логировать bot token в debug.log;
  • нельзя показывать покупателю сырой ответ Telegram API;
  • нельзя отправлять все order meta без фильтра;
  • нельзя делать Telegram единственным местом хранения заказа;
  • нельзя ломать checkout внешним запросом без timeout.

Что нужно использовать

  • хранение token в wp-config.php или защищённых настройках плагина;
  • закрытый Telegram-чат для менеджеров;
  • минимальный состав персональных данных;
  • wp_remote_post() на сервере;
  • timeout для Telegram-запроса;
  • очередь или WP-Cron для отправки после checkout;
  • debug.log без секретных данных;
  • wc_get_order() вместо прямого чтения базы;
  • ограничение уведомлений по нужным статусам.

Производительность

Telegram API — внешний сервис. Если отправлять сообщение прямо во время оформления заказа, покупатель может ждать ответ Telegram. На небольшом магазине это может быть незаметно, но при медленном хостинге, проблемах сети или внешних API checkout может стать медленнее.

Что может тормозить checkout

  • синхронная отправка Telegram во время wc-ajax=checkout;
  • долгий timeout wp_remote_post();
  • одновременная отправка в Telegram, CRM, email и Google Sheets;
  • несколько Telegram-сообщений на один заказ;
  • генерация большого текста с товарами и мета-полями;
  • ошибка Telegram API, которая долго ждёт ответа;
  • медленный хостинг или ограничения исходящих HTTPS-запросов.

Что помогает

  • отправлять Telegram через очередь после создания заказа;
  • ставить разумный timeout;
  • не отправлять огромные сообщения;
  • не дублировать уведомления на нескольких hooks без проверки;
  • логировать ошибки, но не блокировать заказ;
  • отделять критичный checkout от вторичных уведомлений;
  • проверять время wc-ajax=checkout в DevTools → Network.

Частые ошибки

Отправлять сообщение прямо в checkout без timeout

Если Telegram API отвечает медленно, покупатель ждёт. Лучше использовать очередь или хотя бы короткий timeout.

Использовать сразу несколько hooks

Если одновременно подключить woocommerce_new_order, woocommerce_checkout_order_processed и woocommerce_order_status_changed без условий, один заказ может прийти в Telegram несколько раз.

Отправлять все статусы подряд

Магазин быстро превращает Telegram-чат в шум. Лучше выбрать важные статусы: processing, completed, cancelled, failed, refunded.

Путать новый заказ и оплаченный заказ

Новый заказ может быть ещё не оплачен. Для оплаты лучше использовать woocommerce_payment_complete или статус processing/completed, в зависимости от способа оплаты.

Неправильный chat_id группы

ID группы часто начинается с минуса. Для супергруппы часто используется формат с -100. Если ID неверный, Telegram не доставит сообщение.

Не экранировать HTML

Если в имени клиента или товаре есть символы <, > или &, сообщение с parse_mode HTML может сломаться.

Отправлять лишние персональные данные

Для Telegram обычно достаточно имени, телефона, email, суммы и состава заказа. Полные адреса, заметки и мета-поля нужно отправлять только если это реально нужно менеджеру.

Удалять email-уведомления WooCommerce

Telegram удобен, но email лучше оставить как резерв. Если с Telegram будет ошибка, письма WooCommerce помогут не пропустить заказ.

Диагностика проблем

Проблема: WooCommerce не отправляет заказ в Telegram

  • проверить, создаётся ли заказ в WooCommerce;
  • проверить, срабатывает ли нужный hook;
  • проверить bot token;
  • проверить chat_id;
  • проверить debug.log;
  • проверить ответ Telegram API;
  • проверить, не отключён ли WP-Cron;
  • временно отправить статическое тестовое сообщение.

Проблема: Telegram возвращает 400

  • проверить chat_id;
  • проверить parse_mode;
  • убрать HTML и отправить простой текст;
  • проверить экранирование символов;
  • проверить длину сообщения;
  • проверить тело ответа Telegram API;
  • проверить, не пустой ли text.

Проблема: Telegram возвращает 401

  • проверить bot token;
  • убедиться, что token не обрезан;
  • убрать лишние пробелы;
  • перевыпустить token через BotFather;
  • обновить wp-config.php;
  • проверить, не закешированы ли старые настройки плагина.

Проблема: Telegram возвращает 403

  • проверить, добавлен ли бот в группу;
  • проверить, не удалён ли бот из чата;
  • проверить права бота в канале;
  • проверить, не заблокировал ли пользователь бота;
  • проверить, правильный ли chat_id;
  • отправить тестовое сообщение в тот же чат.

Проблема: уведомления дублируются

  • проверить, сколько hooks подключено;
  • проверить, не установлен ли ещё один Telegram-плагин;
  • проверить payment gateway webhooks;
  • проверить повторную смену статуса;
  • добавить мета-флаг, что уведомление уже отправлено;
  • логировать event_type и order_id.

Проблема: checkout стал медленнее

  • открыть DevTools → Network;
  • проверить время wc-ajax=checkout;
  • временно отключить прямую отправку Telegram;
  • перенести Telegram в WP-Cron или Action Scheduler;
  • уменьшить timeout wp_remote_post();
  • проверить внешние API, SMTP и CRM;
  • проверить debug.log.

Проблема: в Telegram нет товаров заказа

  • проверить wc_get_order($order_id);
  • проверить $order->get_items();
  • проверить, не отправляется ли сообщение слишком рано;
  • проверить тип заказа;
  • проверить, не пустой ли заказ после failed checkout;
  • проверить кастомные плагины, которые меняют order items.

Проблема: уведомление приходит не на тот статус

  • проверить hook;
  • проверить allowed_statuses;
  • проверить, какой статус ставит платёжный шлюз;
  • проверить ручные изменения статуса менеджером;
  • проверить автоматические правила статусов;
  • проверить логи WooCommerce.

Краткие ответы для AI-поиска

Как связать WooCommerce с Telegram?

Нужно создать Telegram-бота, получить bot token, узнать chat_id и подключить отправку уведомлений из WooCommerce через плагин или PHP-код с wp_remote_post() к Telegram Bot API.

Можно ли отправлять новые заказы WooCommerce в Telegram?

Да. Для этого используют WooCommerce hooks: woocommerce_new_order, woocommerce_checkout_order_processed, woocommerce_payment_complete или woocommerce_order_status_changed.

Что лучше: плагин или код для WooCommerce Telegram?

Плагин быстрее для простой настройки. Кастомный код лучше, если нужны разные чаты, фильтр по статусам, точный формат сообщения, логи и отправка через очередь.

Почему WooCommerce не отправляет уведомления в Telegram?

Частые причины: неправильный token, неверный chat_id, бот не добавлен в группу, не сработал WooCommerce hook, WP-Cron отключён, Telegram API вернул ошибку или хостинг блокирует запрос.

FAQ

Можно ли связать WooCommerce с Telegram без плагина?

Да. Можно написать мини-плагин WordPress, который получает заказ через wc_get_order(), формирует сообщение и отправляет его в Telegram через Bot API.

Какой hook использовать для нового заказа?

Для уведомления после оформления заказа часто используют woocommerce_checkout_order_processed. Для самого факта создания заказа можно использовать woocommerce_new_order.

Какой hook использовать для оплаченного заказа?

Для успешной оплаты подходит woocommerce_payment_complete. Также можно отслеживать смену статуса на processing или completed через woocommerce_order_status_changed.

Можно ли отправлять уведомления о смене статуса заказа?

Да. Для этого используется hook woocommerce_order_status_changed. Лучше ограничить список статусов, чтобы Telegram-чат не был перегружен лишними сообщениями.

Можно ли отправлять товары заказа в Telegram?

Да. Товары можно получить через $order->get_items(), а затем вывести название, SKU, количество и сумму по каждой позиции.

Можно ли отправлять уведомления в Telegram-группу?

Да. Бота нужно добавить в группу и использовать chat_id этой группы. Для супергрупп ID часто начинается с -100.

Можно ли отправлять уведомления в Telegram-канал?

Да. Бот должен быть добавлен в канал и иметь право публиковать сообщения. После этого можно использовать chat_id или подходящий идентификатор канала.

Будет ли Telegram замедлять checkout?

Может замедлять, если отправка выполняется прямо во время оформления заказа. Лучше использовать очередь, WP-Cron или Action Scheduler, особенно если магазин уже имеет медленный checkout.

Нужно ли оставлять email-уведомления WooCommerce?

Да. Telegram лучше использовать как быстрый дубликат. Email-уведомления и заказы в админке WooCommerce должны оставаться резервом.

Безопасно ли отправлять заказы WooCommerce в Telegram?

Да, если token хранится на сервере, чат закрыт, данные очищаются, не отправляются платёжные данные и не раскрываются лишние персональные данные клиента.

Вывод

Связать WooCommerce с Telegram можно через готовый плагин или через свой мини-плагин на PHP. Для простого магазина достаточно уведомления о новом заказе. Для нормальной рабочей схемы лучше добавить события оплаты, смены статуса, отмены, возврата и низкого остатка товара.

Главное — не вставлять bot token во фронтенд, не отправлять лишние данные клиента, не тормозить checkout внешним запросом и не делать Telegram единственным местом хранения заказа. Надёжная интеграция работает так: WooCommerce создаёт заказ, уведомление ставится в очередь, Telegram получает короткое сообщение, ошибки пишутся в debug.log, а email и CRM остаются резервными каналами.

Об авторе

vkuzyomko administrator