Как принять postback от партнерки чтобы сработала цель в Яндекс Метрике?

Ссылка скопирована
1 ответ

Уважаемые знатоки, подскажите пожалуйста, как принять postback от партнерки (приходит событие при успешной продаже товара) так, чтобы сработала цель в Яндекс Метрике и Google Ads? Может есть какие-то готовые решения или плагины для wordpress?

Дополнительно:

Популярный плагин "Insert Headers and Footers" позволяет легко вставлять код отслеживания и событий в заголовок или подвал сайта

  • LAVladis, не могу нигде найти что он может слушать постбэки. Можете дать больше подробностей где у него эта фича?
  • Денис Кудин, а вы где именно хотите применять постбэки? когда продали товар получается?
  • LAVladis, у ведора при совершении успешной продажи (клиент пришел по моей ссылке) от платежной системы приходит postback. Я его должен принят и засчитать конверсию (достижение цели).
  • Денис Кудин, смотрите, нашел готовое решение, мб получится. Создайте файл postback-handler.php и разместите его на серваке. В файле будет обрабатываться постбэк запрос и срабатывать события для я.метрики и гугл адс. В этот файл закидываете этот код:
    <?php // Получение параметров постбэк запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : '';  if (!empty($transactionId)) {     // Выполните здесь действия по обработке успешного постбэка и обновлению базы данных      // Срабатывание события в Я.Метрике     $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на свои данные     echo "<script>$yaMetrikaEventCode</script>";      // Срабатывание события в Гугл Адс     $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на свои данные     echo "<script>$googleAdsEventCode</script>";      // Возвращаем успешный ответ для платежной системы     echo 'OK'; } else {     // Если параметры постбэк отсутствуют или неверные     echo 'Invalid Postback Request'; }

    <?php // Получение параметров постбэк запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : ''; if (!empty($transactionId)) { // Выполните здесь действия по обработке успешного постбэка и обновлению базы данных // Срабатывание события в Я.Метрике $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на свои данные echo "<script>$yaMetrikaEventCode</script>"; // Срабатывание события в Гугл Адс $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на свои данные echo "<script>$googleAdsEventCode</script>"; // Возвращаем успешный ответ для платежной системы echo 'OK'; } else { // Если параметры постбэк отсутствуют или неверные echo 'Invalid Postback Request'; }

    В Я.Метрике my_conversion_goal это имя вашей цели, в Гугл Адс my_conversion_event это имя вашего события, также укажите соответствующие ID счетчиков там где Х-сы.

    Укажите урл обработчика постбэка (http://вашдомен.com/postback-handler.php) в настройках платежной системы, чтобы она отправляла постбэк запросы при успешных транзакциях.

    Попробуйте, должно помочь.

  • LAVladis, большое спасибо! Попробую! Странно, что нет ни одного готового плагина с таким функционалом для WordPress. Но такая функция есть почти у всех TDS.
  • LAVladis, Так, файл подготовил и закинул, платежная система успешно отправляет данные на этот обработчик. Теперь не могу сходу понять как передавать данные в Яндекс Метрику и Google Ads для срабатывания нужного собития. В коде идет обращение к скрипту и - подскажите пожалуйста что с этим делать и как дальше настроить? Что это за скрипты?
  • Денис Кудин, $yaMetrikaEventCode и $googleAdsEventCode представляют себе вставку js-кода в хтмл разметку с использованием пхп Это способ внедрения js-кода в страницу с помощью серверного скрипта. Когда вставляете этот код на вашу страницу, он будет выполнен браузером, как обычный js код, когда страница загружается у пользователя. Вместо $yaMetrikaEventCode и $googleAdsEventCode вам нужно подставить сами js'ы для срабатывания событий в Я.Метрике и Гугл адс.
    $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные echo "<script>$yaMetrikaEventCode</script>";

    $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные echo "<script>$yaMetrikaEventCode</script>";

    и

    $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные echo "<script>$googleAdsEventCode</script>";

    $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные echo "<script>$googleAdsEventCode</script>";

    Для срабатывания событий в Я.Метрике и Гугл адс на странице, должны вставить соответствующий код:

    <script> yaCounterXXXXXX.reachGoal('my_conversion_goal'); // Замените XXXXXX и 'my_conversion_goal' на ваши данные </script>

    <script> yaCounterXXXXXX.reachGoal('my_conversion_goal'); // Замените XXXXXX и 'my_conversion_goal' на ваши данные </script>

    и

    <script> gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'}); // Замените XXXXXXXX и 'my_conversion_event' на ваши данные </script>

    <script> gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'}); // Замените XXXXXXXX и 'my_conversion_event' на ваши данные </script>

    Вам нужно вставить этот код в тот момент, когда нужное событие должно срабатывать. Если событие происходит при успешной продаже через Постбэк, вставьте этот код в обработчик Постбэк на вашем сервере.

    Есть еще такой вариант, чуть измененный:

    <?php // Получение параметров Postback запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : '';  if (!empty($transactionId)) {     // Выполните здесь действия по обработке успешного Postback и обновлению базы данных      // Срабатывание события в Яндекс Метрике     $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные      // Срабатывание события в Google Ads (Google Ads счетчик)     $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные      // Возвращаем успешный ответ для платежной системы     echo 'OK';      // Вставляем JavaScript-код в HTML-ответ     echo "<script>$yaMetrikaEventCode</script>";     echo "<script>$googleAdsEventCode</script>"; } else {     // Если параметры Postback отсутствуют или неверные     echo 'Invalid Postback Request'; } ?>

    <?php // Получение параметров Postback запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : ''; if (!empty($transactionId)) { // Выполните здесь действия по обработке успешного Postback и обновлению базы данных // Срабатывание события в Яндекс Метрике $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные // Срабатывание события в Google Ads (Google Ads счетчик) $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные // Возвращаем успешный ответ для платежной системы echo 'OK'; // Вставляем JavaScript-код в HTML-ответ echo "<script>$yaMetrikaEventCode</script>"; echo "<script>$googleAdsEventCode</script>"; } else { // Если параметры Postback отсутствуют или неверные echo 'Invalid Postback Request'; } ?>

    В этом примере обработчика постбэк мы вставляем js код для срабатывания событий в Я Метрике и гугл прямо в хтмл ответ нашего сервера. После обработки постбэк и обновления базы данных, мы вставляем соответствующие js коды в ответ.

    Когда этот хтмл ответ с вставленным js отправляется обратно на клиентскую сторону, браузер выполнит этот код и события будут переданы в Я.Метрику и гугл.

  • LAVladis, благодарю! Постараюсь разобраться, пока не до конца понял какие именно js-скрипты нужно будет дополнительно прописать чтобы все работало, и как-то нужно адаптироваться для срабатывания и отправки события в Google Analytics 4й версии.
  • Денис Кудин, Как вы и писали "у ведора при совершении успешной продажи (клиент пришел по моей ссылке) от платежной системы приходит postback. Я его должен принят и засчитать конверсию (достижение цели)." Получается если событие происходит при успешной продаже через постбэк вам не нужно добавлять этот код непосредственно в хтмл на вашей странице. Вам нужно добавить этот код (который я привел снизу) в ваш обработчик постбэк на сервере (postback-handler.php), который будет запускаться при успешной продаже.
    <?php // Получение параметров Postback запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : '';  if (!empty($transactionId)) {     // Выполните здесь действия по обработке успешного Postback и обновлению базы данных      // Срабатывание события в Яндекс Метрике     $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные      // Срабатывание события в Google Ads (Google Ads счетчик)     $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные      // Возвращаем успешный ответ для платежной системы     echo 'OK';      // Вставляем JavaScript-код в HTML-ответ     echo "<script>$yaMetrikaEventCode</script>";     echo "<script>$googleAdsEventCode</script>"; } else {     // Если параметры Postback отсутствуют или неверные     echo 'Invalid Postback Request'; } ?>

    <?php // Получение параметров Postback запроса $transactionId = isset($_GET['transaction_id']) ? $_GET['transaction_id'] : ''; if (!empty($transactionId)) { // Выполните здесь действия по обработке успешного Postback и обновлению базы данных // Срабатывание события в Яндекс Метрике $yaMetrikaEventCode = "yaCounterXXXXXX.reachGoal('my_conversion_goal');"; // Замените XXXXXX и 'my_conversion_goal' на ваши данные // Срабатывание события в Google Ads (Google Ads счетчик) $googleAdsEventCode = "gtag('event', 'my_conversion_event', {'send_to': 'AW-XXXXXXXX'});"; // Замените XXXXXXXX и 'my_conversion_event' на ваши данные // Возвращаем успешный ответ для платежной системы echo 'OK'; // Вставляем JavaScript-код в HTML-ответ echo "<script>$yaMetrikaEventCode</script>"; echo "<script>$googleAdsEventCode</script>"; } else { // Если параметры Postback отсутствуют или неверные echo 'Invalid Postback Request'; } ?>

    Мне кажется этот код должен работать. Главное поменяйте все на свое.

  • LAVladis, Большое спасибо за ответ! Сейчас пытаюсь понять как передавать срабатывание конверсии в Яндекс. Вот что отвечает техподдержка Яндекс: "Дело в том, что без посетителя метод reachGoal не сработает, соответственно конверсии не будет. Вы можете передавать данные об оплатах через офлайн-конверсии. В обычной Метрике такая статистика не учитывается, счетчик собирает данные по визитам на сайт в режиме реального времени."
    Может какие-то еще обходные способы есть как засчитывать у Яндекс конверсию? Не очень понятно как на стороне Яндекс настроить достижение цели для данного сценария.
  • Денис Кудин, Хм, если яшка требует наличие посетителя для срабатывания метода reachGoal, а у нас есть постбэк сценарий когда конверсия происходит через пс без фактического посещения страницы, можно попробовать два варианта, но не факт что получится:

    Это получается офлайн конверсии (в яндексе у них в справке про них написано - Справака Яндекс), т.е если вы не можете сразу передать конверсию на странице, вы можете использовать офлайн конверсии. Получается что вы передаете информацию о совершенных конверсиях через API после того, как они произошли. Например, вы узнаете об успешной оплате через вашу платежную систему и затем передадите эту информацию в Яндекс Метрику.

    Либо можно попробовать симулировать визит на страницу с помощью скрипта и затем вызвать метод reachGoal. Создаем страницу допустим conversion.html которая будет вызываться скриптом после успешной оплаты, и на этой странице вызвать метод reachGoal. (Вот тут очень много полезной информации про цели - Цели Я метрики нас интересует раздел "Возвращение из платежной системы", он там почти в самом низу)

    Как то так можно код написать:

    <!DOCTYPE html> <html> <head>   <title>Conversion Page</title> </head> <body>   <script>     // Вызываем метод reachGoal, YOUR_METRIKA_ID - идентификатор Яндекс.М, а YOUR_GOAL_NAME имя цели     ym(YOUR_METRIKA_ID, 'reachGoal', 'YOUR_GOAL_NAME');   </script> </body> </html>

    <!DOCTYPE html> <html> <head> <title>Conversion Page</title> </head> <body> <script> // Вызываем метод reachGoal, YOUR_METRIKA_ID - идентификатор Яндекс.М, а YOUR_GOAL_NAME имя цели ym(YOUR_METRIKA_ID, 'reachGoal', 'YOUR_GOAL_NAME'); </script> </body> </html>

  • LAVladis, Вот да, ваш второй метод очень интересный! Большое спасибо, нужно попробовать!
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Postback от партнёрки нельзя «принять» через обычный код в header/footer. Это серверный запрос от внешней системы на ваш URL. Вам нужен endpoint в WordPress, который примет данные, проверит подпись/секрет, сохранит событие и уже потом отправит server-side событие в Метрику/Google Ads или отметит конверсию в своей базе.

    Для WordPress удобно сделать REST endpoint:

    add_action('rest_api_init', function () {
        register_rest_route('partner/v1', '/postback', [
            'methods'  => 'GET',
            'callback' => 'handle_partner_postback',
            'permission_callback' => '__return_true',
        ]);
    });
     
    function handle_partner_postback(WP_REST_Request $request) {
        $secret = $request->get_param('secret');
        if ($secret !== 'your-secret-key') {
            return new WP_REST_Response(['error' => 'forbidden'], 403);
        }
     
        $click_id = sanitize_text_field($request->get_param('click_id'));
        $amount = (float) $request->get_param('amount');
     
        // Сохранить событие в БД/лог и отправить в аналитику.
        return ['ok' => true];
    }

    add_action('rest_api_init', function () { register_rest_route('partner/v1', '/postback', [ 'methods' => 'GET', 'callback' => 'handle_partner_postback', 'permission_callback' => '__return_true', ]); }); function handle_partner_postback(WP_REST_Request $request) { $secret = $request->get_param('secret'); if ($secret !== 'your-secret-key') { return new WP_REST_Response(['error' => 'forbidden'], 403); } $click_id = sanitize_text_field($request->get_param('click_id')); $amount = (float) $request->get_param('amount'); // Сохранить событие в БД/лог и отправить в аналитику. return ['ok' => true]; }

    С Метрикой есть нюанс: обычная цель ym(...reachGoal) срабатывает в браузере пользователя. Postback приходит на сервер, браузера там нет. Для корректной склейки нужно заранее сохранять идентификаторы визита: yclid, ClientID, click_id партнёрки, UTM. Потом отправлять событие через Measurement Protocol/серверный API, если используемый инструмент это поддерживает.

    Для Google Ads также нужен идентификатор клика gclid или Enhanced Conversions/Offline Conversion Import. Поэтому сначала настройте сбор click_id при переходе пользователя, сохраните его в cookie/лиде/заказе, а postback используйте как подтверждение продажи. Без связки «клик → лид → продажа» цель будет технически приходить, но аналитика не сможет нормально атрибутировать её к рекламе.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно