сцепление dataLayer для отслеживания показов из-за отложенной загрузки - PullRequest
0 голосов
/ 21 января 2020

Я хочу реализовать отслеживание показов по видимости элемента. Я следую указаниям simo ahava

https://www.simoahava.com/analytics/true-view-impressions-google-tag-manager/

Теперь я не могу воспроизвести этот пример, потому что он должен запустить весь продукт один раз в dataLayer, но в моем случае я выполняю ленивую загрузку и мне нужно pu sh продукт в пакетном режиме в dataLayer. К сожалению, делая это каждый раз, когда мы помещаем какой-либо элемент в слой данных, он принимает только последние значения события pu sh в менеджере тегов Google, поэтому вполне возможно, что продукт станет видимым, но больше не будет доступен в dataLayer. .

Вот более подробное объяснение

Шаг 1: У нас есть два pu sh в слой данных для цели отложенной загрузки 1a. первый pu sh при загрузке первой порции

dataLayer=[];

dataLayer.push({
 event: 'eec.impressionView',
  "ecommerce": {
    "currencyCode": "USD",
    "impressions": [{
      "id": "9bdd2",
      "name": "Compton T-Shirt",
      "price": "44.00",
      "brand": "Compton",
      "category": "T-Shirts",
      "position": 0,
      "list": "shirts you may like"
    },
    {
      "id": "239b5",
      "name": "Pigzart T-Shirt",
      "price": "82.00",
      "brand": "Pigzart",
      "category": "T-Shirts",
      "position": 1,
      "list": "shirts you may like"
    }
    ],
  }
});

1b. второй pu sh из-за ленивой загрузки

dataLayer.push({
 event: 'eec.impressionView',
  "ecommerce": {
    "currencyCode": "USD",
    "impressions": [
    {
      "id": "7w9e0",
      "name": "Masons T-Shirt",
      "price": "31.00",
      "brand": "Masons",
      "category": "T-Shirts",
      "position": 2,
      "list": "shirts you may like"
    },
    {
      "id": "57b9d",
      "name": "Kiosk T-Shirt",
      "price": "55.00",
      "brand": "Kiosk",
      "category": "T-Shirts",
      "position": 3,
      "list": "shirts you may like"
    }
    ],
  }
});

2 - Теперь предположим, что у клиента есть триггер видимости элемента, который происходит после второго puLayer pu sh в продукте "Compton T-Shirt" , Он не сможет узнать, что это за информация

Итак, мои вопросы, есть ли способ объединить события ee c .impressionView в одно на стороне GTM или есть лучший способ? чтобы справиться с этим типом проблемы, чтобы иметь возможность захватить впечатление

1 Ответ

0 голосов
/ 21 января 2020

То, с чем вы сталкиваетесь, называется «Рекурсивное слияние», поэтому продукты, которые вы добавляете в слой данных, объединяются с существующими продуктами во внутренней модели данных, а не добавляются к ней.

Самый простой способ избежать рекурсивного слияния - в вашем dataLayer pu sh.

Вместо того, чтобы делать полный dataLayer pu sh для ваших последующих показов

dataLayer.push({
 event: 'eec.impressionView',
  "ecommerce": {
    "currencyCode": "USD",
    "impressions": [
    {
      "id": "7w9e0",
      "name": "Masons T-Shirt",
      "price": "31.00",
      "brand": "Masons",
      "category": "T-Shirts",
      "position": 2,
      "list": "shirts you may like"
    },
    {
      "id": "57b9d",
      "name": "Kiosk T-Shirt",
      "price": "55.00",
      "brand": "Kiosk",
      "category": "T-Shirts",
      "position": 3,
      "list": "shirts you may like"
    }
    ],
  }
});

Это работает, если Вы можете использовать это для последующих нажатий dataLayer.

dataLayer.push(['ecommerce.impressions.push',
    {
      "id": "7w9e0",
      "name": "Masons T-Shirt",
      "price": "31.00",
      "brand": "Masons",
      "category": "T-Shirts",
      "position": 2,
      "list": "shirts you may like"
    },
    {
      "id": "57b9d",
      "name": "Kiosk T-Shirt",
      "price": "55.00",
      "brand": "Kiosk",
      "category": "T-Shirts",
      "position": 3,
      "list": "shirts you may like"
    }]);

Это предотвратит перезапись существующими значениями второго pu sh, и поскольку вы используете триггеры видимости, нет необходимости повторять событие, и все остальное будет таким же в модели данных.

В качестве альтернативы вы можете использовать пользовательский тег HTML и запускать его при каждом событии для сохранения показов в отдельном объекте JS и ссылаться на него, а не на dataLayer в настройках Enhanced Ecommerce.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...