@vincemasuka
дизайнер

Как в Wordpress ловить UTM-метки и отдавать всё в таблицы Google?

Приветствую.

Необычная задача прилетела мне );
Есть лендинг, сделанный на Wordpress. Заказчик утверждает, что всем ссылкам, по которым приходят люди на сайт присваивается установленная им utm метка.

Раньше лендинг был на tilda и там всё это отлавливалось и складывалось в табличку Google, а сейчас всё на Wordpress.

Так вот задачи 2
Клиент хочет понимать откуда пришёл посетитель, который в итоге купил билет. При этом ссылка на покупку ведет на другой сайт.
А вторая задача - эти данные отправлять в таблицы Google.

Дайте пожалуйста советов - как такое реализовать? Может быть есть готовые решения?

Спасибо заранее)
  • Вопрос задан
  • 884 просмотра
Пригласить эксперта
Ответы на вопрос 1
насчет отлова меток не знаю, а вот в google таблице отправлять данные это просто
Принцип такой: Собираете данные, делаете POST запрос в google. Этот запрос отлавливает Ваш скрипт и разбирает данные по ячейкам таблицы.

для этого
В google таблице заходите в "Инструменты->Редактор скриптов" и пишите код приема
function doPost(e) {
    
  if(typeof e !== 'undefined')
    var par = JSON.parse(e.postData.contents);

  PutDataInSheet(par);
  return ContentService.createTextOutput("ok");  
}


function PutDataInSheet(e) {
  // в кавычках ключ вашей таблицы, его взять в адресной строке, когда вы находитесь в вашей таблице
  var wbk = SpreadsheetApp.openById("1Q3yDiWwOMosybBho_attZYW6roT4SOP4-oHPDARzA_s");  // таблица - февраль 2018
 
  // далее идет разбор данных и раскладка по ячейкам
  var wks = wbk.getSheetByName("сайт");
  var row = wks.getLastRow()+1;
  var d = new Date(); 
  wks.getRange("A"+row).setValue(e['updated_at']);
  wks.getRange("B"+row).setValue(e['id']);
  wks.getRange("C"+row).setValue(e['billing_address']['last_name'] + ' ' + e['billing_address']['first_name']);
  // Убираем все символы кроме цифр из номера телефона
  var phn = e['billing_address']['phone'];
  phn = phn.replace(/[^\d]/g, "");  
  wks.getRange("D"+row).setValue(phn);
  wks.getRange("E"+row).setValue(e['billing_address']['address_1']);
  wks.getRange("G"+row).setValue(parseFloat(e['subtotal']));
  for (i in e['line_items']) {
    var item = e['line_items'][i];
    wks.getRange("J"+row).setValue(item['sku']);
    wks.getRange("K"+row).setValue(item['quantity']);
    wks.getRange("L"+row).setValue(parseFloat(item['subtotal']));
    wks.getRange('A' + row + ':L' + row).setBackground('#d9ead3');
    row ++;
  }
}


Сохраняете проект и выбираете "Опубликовать->Развернуть как веб приложение". Получите ссылку для доступа к приложению. Ее надо скопировать и вставить в серверный код

Далее надо написать серверный код для отправки

/**
     * выполняет отправку заказа в google таблицы 
     */
    public static function SendOdrerToGoogleSheet($order_id){
        // собираем данные в массив
        $order = self::getOrderDetailById($order_id);

        
        // ссылка на WEB приложение
		$url = 'https://script.google.com/macros/s/AKfycby_0wdvKJuWbRZEdJUY1xeRWXmUiRTOuX584HhAxtde4y8ZKJ4/exec';
                    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24");
        curl_setopt($ch, CURLOPT_POST, 1); // Do a regular HTTP POST
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($order)); // Set POST data

        $response = curl_exec($ch);
        curl_close($ch);
    }


Ну вот и все. Код взят с рабочего инструмента.

Единственное что я так и не разобрался как настроить CURL на асинхронную передачу. Ну что бы не ждал ответа. Данные то отправляем в одностороннем порядке, зачем тормозить сервер ожиданием
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы