Интеграция WooCommerce с amoCRM: передаем UTM-метки, статусы и чеки без потери данных - Компьюти
Logo КОМПЬЮТИ

Интеграция WooCommerce с amoCRM: передаем UTM-метки, статусы и чеки без потери данных

Время на прочтение: 5 мин.

Интеграция WooCommerce с amoCRM связывает магазин, продажи и маркетинг в одну систему. Вы сохраняете источник заказа, статус оплаты и данные чека. В статье разберем архитектуру такой связки и покажем, как избежать потери данных. Если нужна надежная интеграция, изучите подход и обратитесь в «Компьюти».

Зачем нужна интеграция WooCommerce с amoCRM

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

Проблемы начинаются при ручной передаче данных.

Менеджер видит новый заказ в WooCommerce. Затем он переносит данные в CRM. Маркетолог открывает аналитику отдельно. Бухгалтер проверяет оплату в другой системе.

Такой процесс создает лишнюю работу. Он также увеличивает риск ошибок.

Интеграция WooCommerce с amoCRM убирает ручные операции. Новый заказ автоматически создает или обновляет сделку. UTM-метки попадают в CRM. Статусы заказа синхронизируются. Данные оплаты и чека сохраняются в карточке клиента.

В результате бизнес получает единую цепочку:

реклама → сайт → заказ → CRM → оплата → чек → повторная продажа.

Это и есть основа сквозной аналитики.

Какие данные должна передавать интеграция WooCommerce с amoCRM

Простая передача номера заказа редко решает бизнес-задачу. Полезная интеграция WooCommerce с amoCRM должна переносить контекст заказа.

Данные клиента

В CRM обычно передают:

  • имя покупателя;
  • телефон;
  • email;
  • адрес доставки;
  • компанию;
  • комментарий клиента;
  • идентификатор пользователя WooCommerce.

Телефон и email лучше использовать как ключи поиска контакта.

Это помогает избежать дублей.

Данные заказа

В сделку можно передавать:

  • номер заказа;
  • сумму;
  • валюту;
  • состав корзины;
  • количество товаров;
  • скидку;
  • способ доставки;
  • способ оплаты;
  • дату создания;
  • ссылку на заказ.

Отдельно стоит передавать внутренний ID заказа WooCommerce.

Он помогает связать запись CRM с первоисточником.

UTM-метки

Маркетинговые параметры нельзя терять после оформления заказа.

Передавайте минимум:

  • utm_source;
  • utm_medium;
  • utm_campaign;
  • utm_content;
  • utm_term.

Также полезны gclid, yclid и другие идентификаторы рекламных систем.

Пример:

utm_source=google
utm_medium=cpc
utm_campaign=summer_sale
utm_content=banner_01
utm_term=купить+кроссовки

Если эти параметры не сохранить, маркетолог видит продажу. Но не видит ее источник.

Интеграция WooCommerce с amoCRM должна сохранять UTM-метки с момента первого визита. Нельзя записывать их только после оформления заказа.

Как сохранить UTM-метки в WooCommerce

Один из надежных подходов — сохранить параметры в cookie. Затем передать их в метаданные заказа.

Упрощенный пример для WordPress:

add_action('init', function () {
    $utm_keys = [
        'utm_source',
        'utm_medium',
        'utm_campaign',
        'utm_content',
        'utm_term'
    ];

    foreach ($utm_keys as $key) {
        if (!empty($_GET[$key])) {
            setcookie(
                $key,
                sanitize_text_field($_GET[$key]),
                time() + 60 * 60 * 24 * 30,
                COOKIEPATH,
                COOKIE_DOMAIN
            );
        }
    }
});

Затем параметры можно сохранить в заказе:

add_action('woocommerce_checkout_create_order', function ($order) {
    $utm_keys = [
        'utm_source',
        'utm_medium',
        'utm_campaign',
        'utm_content',
        'utm_term'
    ];

    foreach ($utm_keys as $key) {
        if (!empty($_COOKIE[$key])) {
            $order->update_meta_data(
                '_' . $key,
                sanitize_text_field($_COOKIE[$key])
            );
        }
    }
});

Это только базовая реализация.

В рабочем проекте нужно учитывать согласия пользователя, домены, кэширование и модель атрибуции. Также важно определить срок хранения UTM-данных.

Интеграция WooCommerce с amoCRM и статусы заказа

Статусы — одна из самых частых причин ошибок.

Допустим, клиент оформил заказ. WooCommerce присвоил ему статус processing. Затем платеж подтвердился. Заказ перешел в completed.

Если CRM получила только первое событие, менеджер увидит устаревшую информацию.

Поэтому интеграция WooCommerce с amoCRM должна работать с изменениями статуса.

Пример обработчика:

add_action(
    'woocommerce_order_status_changed',
    function ($order_id, $old_status, $new_status) {

        $order = wc_get_order($order_id);

        if (!$order) {
            return;
        }

        // Здесь вызывается функция синхронизации с CRM.
        sync_order_to_amocrm(
            $order_id,
            $old_status,
            $new_status
        );
    },
    10,
    3
);

В CRM можно создать соответствие:

WooCommerceamoCRM
pendingНовый заказ
processingВ обработке
on-holdОжидает оплаты
completedУспешно реализован
cancelledОтменен
refundedВозврат

Названия этапов зависят от бизнес-процесса.

Не стоит копировать статусы механически. Сначала определите, что должен делать менеджер на каждом этапе.

Как передавать чеки и информацию об оплате

Чек содержит важные данные о покупке. Но CRM не всегда должна хранить сам фискальный документ.

Чаще разумнее передавать:

  • статус оплаты;
  • сумму;
  • дату платежа;
  • идентификатор платежа;
  • ссылку на чек;
  • статус фискализации.

Например:

{
  "order_id": 15482,
  "payment_status": "paid",
  "amount": 12990,
  "receipt_status": "issued",
  "receipt_url": "https://example.ru/receipt/15482"
}

Такой подход уменьшает объем данных в CRM.

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

Если CRM должна хранить файл, потребуется отдельная логика загрузки. Здесь важно учитывать ограничения API и права доступа.

Интеграция WooCommerce с amoCRM должна четко разделять данные заказа и фискальные данные.

Архитектура надежной интеграции

На практике есть два основных подхода.

Прямая интеграция

WooCommerce напрямую обращается к API amoCRM.

Схема выглядит так:

WooCommerce
     ↓
Webhook / PHP
     ↓
API amoCRM
     ↓
Сделка и контакт

Плюсы:

  • простая архитектура;
  • меньше компонентов;
  • быстрый запуск.

Минусы:

  • ошибки API сложнее обрабатывать;
  • повторные запросы нужно проектировать отдельно;
  • массовые операции могут создавать нагрузку.

Интеграция через промежуточный сервер

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

WooCommerce
     ↓
Webhook
     ↓
Интеграционный сервер
     ↓
Очередь
     ↓
amoCRM

Такой слой принимает события. Затем он обрабатывает их независимо от сайта.

Если CRM временно недоступна, событие не пропадает.

Оно остается в очереди.

Именно такой принцип особенно полезен для интернет-магазинов с большим количеством заказов.

Что делать при ошибке API

Представим типовой сценарий.

Вы столкнулись с проблемой: WooCommerce создал заказ, но amoCRM не ответила.

Мы решаем ее: сохраняем событие и повторяем отправку.

Результат: заказ не теряется из-за временного сбоя.

Пример простой логики повторной отправки:

function send_with_retry($payload, $attempt = 1)
{
    $response = send_to_amocrm($payload);

    if ($response->is_success()) {
        return true;
    }

    if ($attempt >= 3) {
        save_failed_event($payload);
        return false;
    }

    sleep($attempt * 2);

    return send_with_retry($payload, $attempt + 1);
}

В реальной системе лучше использовать очередь. sleep() подходит только для демонстрации принципа.

Также полезно вести журнал событий:

event_id
order_id
event_type
status
attempts
created_at
updated_at
error_message

Так разработчик быстро находит причину сбоя.

Идемпотентность: защита от дублей

Это критически важная часть.

Webhook может прийти повторно. Пользователь может повторить запрос. CRM может временно не подтвердить ответ.

Без защиты система создаст две сделки.

Поэтому событию нужен уникальный идентификатор.

Например:

woocommerce:order:15482:status:completed

Перед созданием сделки интеграция проверяет этот идентификатор.

Если событие уже обработано, повторную операцию выполнять не нужно.

Так интеграция WooCommerce с amoCRM становится устойчивой к повторным запросам.

Что выбрать: готовый коннектор или индивидуальную разработку

Готовые решения подходят для простых сценариев.

Они удобны, когда нужно:

  • создать сделку;
  • передать контакт;
  • отправить сумму;
  • получить базовый статус.

Индивидуальная разработка нужна при сложной логике.

Например:

  • несколько воронок;
  • разные магазины;
  • сложная атрибуция;
  • кастомные поля;
  • передача чеков;
  • синхронизация возвратов;
  • повторная обработка ошибок;
  • связь нескольких заказов с одним клиентом.
ЗадачаГотовый коннекторИндивидуальная интеграция
Новый заказ✓✓
Контакт клиента✓✓
UTM-меткиИногда✓
Сложные статусыОграниченно✓
ЧекиЗависит от решения✓
Очередь событийРедко✓
ЛогированиеОграниченно✓
Нестандартная бизнес-логикаОграниченно✓

Выбор зависит не только от бюджета.

Важнее стоимость ошибки и потерянных данных.

Типовые ошибки при интеграции

Передача UTM только из URL

После перехода пользователя на другую страницу параметры исчезают.

Решение: сохранять UTM на уровне браузера или сессии.

Поиск клиента только по имени

У двух клиентов может быть одинаковое имя.

Решение: использовать телефон или email.

Отсутствие повторной отправки

Ошибка API превращается в потерянный заказ.

Решение: очередь и retry-механизм.

Создание сделки при каждом webhook

Повторное событие создает дубль.

Решение: использовать идемпотентность.

Передача только суммы заказа

Менеджер теряет информацию о составе покупки.

Решение: передавать товары или ссылку на заказ.

Игнорирование возвратов

CRM показывает успешную продажу после возврата.

Решение: синхронизировать возвраты и отмены.

Как проверить интеграцию перед запуском

Перед публикацией нужно провести тестирование.

Чек-лист:

  • Создается новый контакт.
  • Не создаются дубли.
  • Создается нужная сделка.
  • Передается номер заказа.
  • Передается сумма.
  • Передаются товары.
  • Сохраняются UTM-метки.
  • Работают все статусы.
  • Передается информация об оплате.
  • Передается ссылка на чек.
  • Обрабатывается отмена.
  • Обрабатывается возврат.
  • Повторный webhook не создает дубль.
  • Ошибка CRM попадает в журнал.
  • Событие повторно отправляется после сбоя.
  • Менеджер видит понятную информацию в CRM.

По данным исследований о надежности распределенных систем, повторная доставка сообщений — нормальный сценарий. Поэтому интеграцию нужно проектировать с учетом повторов, а не рассчитывать на единственную доставку.

Сколько времени занимает интеграция WooCommerce с amoCRM

Срок зависит от количества сценариев.

Простая связка обычно требует:

  1. анализа полей;
  2. настройки API;
  3. передачи заказов;
  4. настройки статусов;
  5. тестирования.

Сложный проект добавляет:

  • UTM-атрибуцию;
  • чеки;
  • возвраты;
  • очереди;
  • логи;
  • несколько воронок;
  • нестандартные поля.

Поэтому сначала нужно описать карту данных.

Например:

WooCommerce order.id
        ↓
amoCRM deal.custom_order_id

WooCommerce billing.phone
        ↓
amoCRM contact.phone

WooCommerce _utm_source
        ↓
amoCRM deal.utm_source

WooCommerce receipt_url
        ↓
amoCRM deal.receipt_url

Такая карта показывает пробелы еще до разработки.

Как «Компьюти» выстраивает интеграцию

Мы начинаем не с кода.

Сначала разбираем бизнес-процесс.

Вы сталкиваетесь с проблемой: заказы есть в WooCommerce, но CRM не показывает полную историю клиента.

Мы решаем ее: проектируем карту данных, события и правила синхронизации.

Результат: менеджер получает актуальную сделку. Маркетолог видит источник. Бизнес сохраняет историю заказа.

Обычно процесс выглядит так:

1. Аудит

Изучаем WooCommerce, amoCRM и текущие интеграции.

2. Карта данных

Определяем обязательные поля и связи.

3. Архитектура

Выбираем прямую интеграцию или промежуточный сервер.

4. Разработка

Настраиваем API, webhooks и обработчики событий.

5. Защита от ошибок

Добавляем логи, повторы и идемпотентность.

6. Тестирование

Проверяем реальные сценарии заказа.

7. Запуск

Переводим интеграцию в рабочий режим.

8. Контроль

Следим за ошибками и корректностью синхронизации.

Вывод

Интеграция WooCommerce с amoCRM — это не просто перенос заказов в CRM. Надежная система сохраняет UTM-метки, статусы, оплату и данные чека. Она также защищает бизнес от дублей и потери событий.

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

В «Компьюти» мы проектируем интеграцию WooCommerce с amoCRM под конкретную бизнес-логику. Оставьте заявку, если хотите связать магазин, CRM и маркетинговую аналитику в единую систему.


Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0