Как принять postback от партнерки чтобы сработала цель в Яндекс Метрике?
Уважаемые знатоки, подскажите пожалуйста, как принять postback от партнерки (приходит событие при успешной продаже товара) так, чтобы сработала цель в Яндекс Метрике и Google Ads? Может есть какие-то готовые решения или плагины для wordpress?
Дополнительно:
Популярный плагин "Insert Headers and Footers" позволяет легко вставлять код отслеживания и событий в заголовок или подвал сайта
<?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) в настройках платежной системы, чтобы она отправляла постбэк запросы при успешных транзакциях.
Попробуйте, должно помочь.
$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 отправляется обратно на клиентскую сторону, браузер выполнит этот код и события будут переданы в Я.Метрику и гугл.
<?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'; } ?>
Мне кажется этот код должен работать. Главное поменяйте все на свое.
Может какие-то еще обходные способы есть как засчитывать у Яндекс конверсию? Не очень понятно как на стороне Яндекс настроить достижение цели для данного сценария.
Это получается офлайн конверсии (в яндексе у них в справке про них написано - Справака Яндекс), т.е если вы не можете сразу передать конверсию на странице, вы можете использовать офлайн конверсии. Получается что вы передаете информацию о совершенных конверсиях через 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>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
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]; }
С Метрикой есть нюанс: обычная цель
ym(...reachGoal)срабатывает в браузере пользователя. Postback приходит на сервер, браузера там нет. Для корректной склейки нужно заранее сохранять идентификаторы визита:yclid, ClientID, click_id партнёрки, UTM. Потом отправлять событие через Measurement Protocol/серверный API, если используемый инструмент это поддерживает.Для Google Ads также нужен идентификатор клика
gclidили Enhanced Conversions/Offline Conversion Import. Поэтому сначала настройте сбор click_id при переходе пользователя, сохраните его в cookie/лиде/заказе, а postback используйте как подтверждение продажи. Без связки «клик → лид → продажа» цель будет технически приходить, но аналитика не сможет нормально атрибутировать её к рекламе.