2017-01-12 5 views
0

Я пытаюсь настроить отслеживание электронной торговли Google, используя стороннюю систему бронирования для ресторана. Я могу только добавить html или javascript (в данном случае код Google Analytics) в определенное место на странице благодарности после данных транзакции.Как передать переменные для отслеживания электронной торговли Google?

Мой вопрос в том, как я могу передавать данные с выхода системы бронирования на переменные отслеживания электронной торговли Google?

Выход из системы бронирования:

<script type="text/javascript"> 
    var dataLayer = typeof dataLayer === "undefined" ? [] : dataLayer; 

     dataLayer.push({ 
      "email": "[email protected]", 
      "idRestaurant": "202072", 
      "nbReservation": "", 
      "nbPAX": "5", 
      "date": "2017-01-13 18:30:00", 
      "event": "booking", 
      "idCampaignHash": "15271-59f", 
      "caBrut": "10", 
      "idResa": "75655429", 
      "typePromo": "Enkel reservation" 
     }); 
     var mediaLayer = [].concat(dataLayer); 
     for(var i=0;i<mediaLayer.length;i++){ 
      if(mediaLayer[i]['event']&&mediaLayer[i]['event'].match(/^gtm\./)){ 
       mediaLayer.splice(i, 1); 
      } 
     } 
         mediaLayer.push({ 
       "email": "[email protected]", 
       "event": "nouveauLead" 
      }); 
      dataLayer.push({ 
       "aboTypeLabel": "Offers", 
       "event": "inscritNewsletter" 
      }); 
      dataLayer.push({ 
       "aboTypeLabel": "Info", 
       "event": "inscritNewsletter" 
      }); 



         dataLayer.push({ 
     'typeModule': "MRG" 
    }); 

    var pageCategory = 'Thank_you_normal'; 
    dataLayer.push({ 
     'pageCategory': pageCategory 
    }); 
</script> 
<script type="text/javascript"> 
    var dataLayer = typeof dataLayer === "undefined" ? [] : dataLayer; 
    dataLayer.push({ 
     'idRestaurant': "12345", 
     "nameRestaurant": "Test Restaurant", 
     "nameProvider": "", 
     "idCampaignHash": "15271-59f" 
    }); 
    dataLayer.push({ 
     'typeModule': "MRG" 
    }); 
</script> 

Мой Javascript (Analytics код отслеживания) после того, как приведенный выше код:

<script> 
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-11111-1', 'auto'); 
    ga('send', 'pageview'); 
    ga('require', 'ecommerce'); 

    ga('ecommerce:addTransaction', { 
    'id': '[idResa]',  // Booking id 
    'quantity': '[nbPAX]', // Number of people. 

typePromo 
}); 
ga('ecommerce:addItem', { 
    'id': '[idResa]',   // Booking id 
    'name': '[typePromo]', // Type of menu 
}); 
ga('ecommerce:send'); 
</script> 

ответ

0

Похоже dataLayer является глобальной переменной, так что вы можете легко получить доступ к хранящимся в нем данным: взять первый элемент dataLayer[0] или перебрать элементы и найти то, что вам нужно (путем проверки, если nbPAX поле существует или т.п.)

ОБНОВЛЕНО

Вот несколько примеров:

1, чтобы пройти индивидуальные параметры первого элемента dataLayer массива

ga('ecommerce:addTransaction', { quantity : dataLayer[0].nbPAX, id : dataLayer[0].idResa }) 

ga('ecommerce:addItem', { id: dataLayer[0].idResa, name : dataLayer[0].typePromo }); 

ga('ecommerce:send'); 

2 Или если вы не уверены, что первый элемент содержит необходимую информацию, вы можете фильтровать элементы и отправлять информацию в Google Analytics для каждого из них для пример

//i.e. get all items with parameter idResa 
let items = dataLayer.filter(function(item){ return item && item.idResa }) 

items.forEach(function(item){ 

    ga('ecommerce:addTransaction', { quantity : item.nbPAX, id : item.idResa }) 
    ga('ecommerce:addItem', { id: item.idResa, name : item.typePromo }); 
    ga('ecommerce:send'); 

}) 
+0

Не могли бы вы привести пример кода? – Chris

+0

, верните ответ, я привел несколько примеров. –

0

Результат системы бронирования фактически находится в формате Менеджера тегов Google. Это требует некоторой настройки на вашей стороне.

См. https://www.google.com/tagmanager/ для получения дополнительной информации. Вы также можете комбинировать его с аналитикой.

После этого вы можете добавить скрипт Диспетчера тегов на свою страницу, и ваши теги должны быть перенесены в Диспетчер тегов.

+0

Не будет ли проблема, что GTM-код появится после системы вывода заявок? Прочитайте что-нибудь об этом здесь: https://www.optimizesmart.com/implementing-e-commerce-tracking-google-tag-manager/ – Chris

+0

Ну, насколько я знаю, вы сначала заполняете datalayer, а затем добавляете код GTM на страницу. Это объясняется здесь в dev-руководстве: https://developers.google.com/tag-manager/devguide – Kontsnor

Смежные вопросы