{"_id":"57d698404340330e00953c7f","parentDoc":null,"__v":1,"project":"564f643f33082f0d001bb714","user":"564f641651f2ec0d001d6998","version":{"_id":"57d698404340330e00953c6c","project":"564f643f33082f0d001bb714","__v":2,"createdAt":"2016-09-12T11:57:52.437Z","releaseDate":"2016-09-12T11:57:52.437Z","categories":["57d698404340330e00953c6d","57d698404340330e00953c6e","57d698404340330e00953c6f","57d698404340330e00953c70","57d698404340330e00953c71","57d698404340330e00953c72","57d698404340330e00953c73","58a5711c79ac232f00cbadb5"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.1.0","version":"1.1"},"category":{"_id":"57d698404340330e00953c72","project":"564f643f33082f0d001bb714","version":"57d698404340330e00953c6c","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-12-10T19:30:55.729Z","from_sync":false,"order":5,"slug":"дополнительные-интеграции","title":"Интеграции DDM"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-12-10T19:41:10.791Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":5,"body":"[Digital Data Manager](https://github.com/driveback/digital-data-manager) позвляет реализовать интеграцию DDL с Google Analytics (в том числе и Enhanced Ecommerce) в один клик.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Инициализация\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"ddManger.initialize({\\n  \\\"integrations\\\": {\\n    {\\n    \\t\\\"Google Analytics\\\": {\\n        \\\"trackingId\\\": \\\"XXX\\\",\\n        \\\"doubleClick\\\": true,\\n        \\\"enhancedEcommerce\\\": true,\\n        \\\"defaultCurrency\\\": \\\"RUB\\\",\\n        \\\"sendUserId\\\": true,\\n        \\\"metrics\\\": {\\n          \\\"metric1\\\": {\\n          \\t\\\"type\\\": \\\"digitalData\\\",\\n            \\\"value\\\": \\\"user.visitsCount\\\"\\n          },\\n          \\\"metric2\\\": {\\n          \\t\\\"type\\\": \\\"product\\\",\\n            \\\"value\\\": \\\"stock\\\"\\n          },\\n        },\\n        \\\"dimensions\\\": {\\n          \\\"dimension1\\\": {\\n          \\t\\\"type\\\": \\\"event\\\",\\n            \\\"value\\\": \\\"user.gender\\\"\\n          },\\n          \\\"dimension2\\\": {\\n          \\t\\\"type\\\": \\\"product\\\",\\n            \\\"value\\\": \\\"color\\\"\\n          },\\n        },\\n        \\\"contentGroups\\\": {\\n          \\\"contentGroup1\\\": {\\n          \\t\\\"type\\\": \\\"digitalData\\\",\\n            \\\"value\\\": \\\"page.type\\\"\\n          }\\n        }\\n      }\\n    }\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Описание опций\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"trackingId\",\n    \"1-0\": \"doubleClick\",\n    \"2-0\": \"enhancedLinkAttribution\",\n    \"3-0\": \"enhancedEcommerce\",\n    \"4-0\": \"sendUserId\",\n    \"5-0\": \"anonymizeIp\",\n    \"7-0\": \"includeSearch\",\n    \"8-0\": \"siteSpeedSampleRate\",\n    \"10-0\": \"metrics\",\n    \"11-0\": \"dimensions\",\n    \"12-0\": \"contentGroups\",\n    \"0-1\": \"String\",\n    \"1-1\": \"Boolean\",\n    \"2-1\": \"Boolean\",\n    \"3-1\": \"Boolean\",\n    \"4-1\": \"Boolean\",\n    \"5-1\": \"Boolean\",\n    \"7-1\": \"Boolean\",\n    \"8-1\": \"Number\",\n    \"10-1\": \"Variable Mapping (digitalData | event | product)\",\n    \"11-1\": \"Variable Mapping (digitalData | event | product)\",\n    \"12-1\": \"Variable Mapping (digitalData | event)\",\n    \"0-2\": \"Tracking ID вашего сайта.\\n\\n**Обязательное поле** в формате \\\"/(UA|YT|MO)-\\\\d+-\\\\d+/\\\"\",\n    \"1-2\": \"Активация модуля DoubleClick.\\n\\n**Значение по умолчанию**: false\",\n    \"2-2\": \"Активация [улучшенной атрибуции ссылок](https://support.google.com/analytics/answer/2558867?hl=ru).\\n\\n**Значение по умолчанию**: false\",\n    \"3-2\": \"Активация модуля Enhanced Ecommerce.\\n\\n**Значение по умолчанию**: false\",\n    \"5-2\": \"Необходима ли [анонимизация IP-адресов](https://support.google.com/analytics/answer/2763052?hl=ru). \\n\\n**Значение по умолчанию**: false\",\n    \"4-2\": \"Необходимо ли отправлять User ID в GA. User ID позволяет идентифицировать сессии с разных устройств использую уникальный и постоянный идентификатор.\\n\\n**Значение по умолчанию**: true\",\n    \"7-2\": \"Анонимизация queryString. Включить ли queryString (часть URL после знака \\\"?\\\") в pageview.\\n\\n**Значение по умолчанию:** false\",\n    \"8-2\": \"Частота сэмплирования. Определяет, как часто будут отправляться маркеры отслеживания скорости загрузки сайта.\\n\\n**Значение по умолчанию**: 1 (1% пользователей). Строка из цифр.\",\n    \"10-2\": \"Специальные показатели.\\n\\nИспользуется для автоматической установки параметров metric1, metric2, metric3 ... metric200 и т.д. в GA на основе данных из DDL.\",\n    \"11-2\": \"Специальные параметры.\\n\\nИспользуется для автоматической установки параметров dimension1, dimension2, dimension2 ... dimension200 в GA на основе данных из DDL.\",\n    \"12-2\": \"Группа контента.\\n\\nИспользуется для автоматической установки параметров contentGroup1, contentGroup2, contentGroup3 ... contentGroup200 в GA на основе данных из DDL.\",\n    \"14-0\": \"noConflict\",\n    \"14-1\": \"Boolean\",\n    \"14-2\": \"Необходимо установить в значение true, если на сайте уже установлен тег Google Analytics. В этом случае тег не будет грузиться повторно, а также не будет повторно отправляться событие \\\"pageview\\\".\\n\\n**Значение по умолчанию:** false.\",\n    \"6-0\": \"domain\",\n    \"6-1\": \"String\",\n    \"6-2\": \"Домен сайта, для которого необходимо собирать данные. \\n\\nНапример site.com.\\n\\n**Значение по умолчанию:** 'auto'\",\n    \"9-0\": \"defaultCurrency\",\n    \"9-1\": \"String\",\n    \"9-2\": \"Валюта по умолчанию, используемая в Enhanced Ecommerce.\\n\\n**Значение по умолчанию**: 'RUB'\",\n    \"13-0\": \"namespace\",\n    \"13-1\": \"String\",\n    \"15-0\": \"checkoutOptions\",\n    \"15-1\": \"Array\"\n  },\n  \"cols\": 3,\n  \"rows\": 16\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание просмотров страниц (pageview)\"\n}\n[/block]\n**На всех страницах сайта:**\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Page',\\n  'page': digitalData.page\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n   'name': 'Viewed Page',\\n   'page': {\\n      'path': '/virtual/test',\\n     \\t'queryString': '?q=test',\\n      'title': 'Test Page',\\n   }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Важно!\",\n  \"body\": \"При загрузке новой страницы данное событие должно иметь максимальный приоритет и отправляться раньше других событий, связанных с просмотром страницы, таких как \\\"Viewed Product Detail\\\", \\\"Searched Products\\\", \\\"Viewed Product Category\\\" и так далее.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание транзакций\"\n}\n[/block]\nНа странице подтверждения заказа:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Completed Transaction',\\n  'transaction': digitalData.transaction // данные по транзакции берутся из DDL\\n})\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Completed Transaction',\\n  'transaction': {\\n    'orderId': '123',\\n    'affiliation': 'Google Store',\\n    'currency': 'RUB',\\n    'shippingCost': 300,\\n    'tax': 200,\\n    'total': 3500,\\n    'vouchers': ['COUPON1'],\\n    'lineItems': [\\n      {\\n        'product': {\\n          'id': '123',\\n          'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n          'unitPrice': 2000,\\n          'unitSalePrice': 1500,\\n          'name': 'Product 1',\\n          'skuCode': '0234PBS',\\n          'currency': 'RUB',\\n          'manufacturer': 'Brand Name',\\n          'variant': 'dark blue',\\n          'voucher': 'PROD_COUPON1'\\n        },\\n        'quantity': 2\\n      },\\n      {\\n        'product': {\\n          'id': '123',\\n          'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n          'unitPrice': 2000,\\n          'unitSalePrice': 1500,\\n          'name': 'Product 1',\\n          'skuCode': '0234PBS',\\n          'currency': 'RUB',\\n          'manufacturer': 'Brand Name',\\n          'variant': 'dark blue',\\n          'voucher': 'PROD_COUPON1'\\n        },\\n        'quantity': 2\\n      }\\n    ]\\n  }\\n})\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание событий\"\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Downloaded Tutorial',\\n  'category': 'Promo',\\n  'label': 'Новый каталог товаров 2016',\\n  'value': 1,\\n  'nonInteraction': true\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nПриведенный выше код эквивалентен следующему вызову GA:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"ga('send', 'event', 'Promo', 'Downoaded Tutorial', 'Новый каталог товаров 2016', 1, {\\n\\t'nonInteraction': true\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Использование специальных параметров и показателей\"\n}\n[/block]\nВсе специальные параметры (dimensions) и показатели (metrics) необходимо определить заранее при инициализации интеграции. \n\nНапример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"ddManger.initialize({\\n  'integrations': [\\n    {\\n    \\t'Google Analytics': {\\n        'trackingId': 'XXX',\\n        ...,\\n        ...,\\n        'dimensions': {\\n        \\t'dimension1': 'user.userId',\\n        \\t'dimension2': 'googleClientId',\\n        \\t'dimension3': 'user.isLoggedIn',\\n        \\t'dimension4': 'user.isSubscribed'\\n      \\t},\\n      \\t'metrics': {\\n          'metric1': 'timestamp',\\n          'metric2': 'user.visitCount'\\n        },\\n      \\t'contentGroups': {\\n        \\t'contentGroup1': 'page.type'\\n        }\\n      }\\n    }\\n  ]\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nДалее необходимо отправить событие (например \"Viewed Page\")\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Page',\\n  'page': {\\n  \\t'type': 'product'\\n  },\\n  'user': {\\n    'userId': '123123',\\n  \\t'isLoggedIn': true,\\n    'isSubscribed': false,\\n    'visitCount', 5\\n  },\\n  'googleClientId': '1899626312.1471280300',\\n  'timestamp': 1472290434140\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nИли в сокращенном виде при наличии необходимых данных в DDL:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Page',\\n  'page': digitalData.page,\\n  'user': digitalData.user,\\n  'googleClientId': digitalData.integrations.googleAnalytics.clientId,\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"Полезная информация\",\n  \"body\": \"Переменная 'timestamp' всегда автоматически отправляется с каждым событием.\"\n}\n[/block]\nПриведенный выше код будет эквивалентен следующему вызову GA:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"ga('send', 'pageview', {\\n\\t'dimension1': '123123',\\n  'dimension2': '1899626312.1471280300',\\n  'dimension3': 'true',\\n  'dimension4': 'false',\\n  'metric1': 1472290434140,\\n  'metric2': 5,\\n  'contentGroup1': 'product'\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание просмотра карточки товара\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nНа карточке товара:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.evens.push({\\n\\t'name': 'Viewed Product Detail',\\n  'product' digitalData.product //данные о продукте берутся из DDL\\n});\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nили:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.evens.push({\\n\\t'name': 'Viewed Product Detail',\\n  'product': {\\n    'id': '123',\\n    'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n    'unitPrice': 2000,\\n    'unitSalePrice': 1500,\\n    'name': 'Product 1',\\n    'skuCode': '0234PBS',\\n    'currency': 'RUB',\\n    'manufacturer': 'Brand Name',\\n    'variant': 'dark blue',\\n    'voucher': 'PROD_COUPON1'\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание показов товаров (Impressions)\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nКак только товар попал в зону видимости пользователя:\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Product',\\n  'listItems': [\\n    {\\n    \\t'product': '123', //данные о продукте берутся из DDL\\n      'listId': 'category_listing' //позиция в списке берется из DDL\\n    },\\n    {\\n    \\t'product': '234',\\n      'listId': 'category_listing'\\n    }\\n  ]\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Product',\\n  'listItems': [\\n    {\\n    \\t'product': {\\n        'id': '123',\\n        'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n        'unitPrice': 2000,\\n        'unitSalePrice': 1500,\\n        'name': 'Product 1',\\n        'skuCode': '0234PBS',\\n        'currency': 'RUB',\\n        'manufacturer': 'Brand Name',\\n        'variant': 'dark blue',\\n        'voucher': 'PROD_COUPON1'\\n      },\\n      'listId': 'category_listing',\\n      'position': 3\\n    },\\n    {\\n    \\t'product': {\\n        'id': '123',\\n        'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n        'unitPrice': 2000,\\n        'unitSalePrice': 1500,\\n        'name': 'Product 1',\\n        'skuCode': '0234PBS',\\n        'currency': 'RUB',\\n        'manufacturer': 'Brand Name',\\n        'variant': 'dark blue',\\n        'voucher': 'PROD_COUPON1'\\n      },\\n      'listId': 'category_listing'\\n    }\\n  ]\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Важно!\",\n  \"body\": \"Очень важно отправлять Impressions только тогда, когда товар листинга действительно попал в зону видимости пользователя. Например, если в листинге находится 30 товаров, но в зоне видимости пользователя находится толь 6 товаров, событие \\\"Viewed Product\\\" должно быть отправлено только для этих 6 товаров, остальные события должны отправляться по мере скролла.\"\n}\n[/block]\nЧтобы сделать отслеживание попадания в зону видимости более простым, рекомендуется разметить все товары в листингах соответствующим образом, например:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<div>\\n\\t<div class=\\\"ddl_product\\\" data-product-id=\\\"123\\\" data-list-id=\\\"main\\\">\\n    <img src=\\\"...\\\"/>\\n    <a href=\\\"/product_link\\\">Просмотреть товар</a>\\n  </div>\\n  \\n\\t<div class=\\\"ddl_product\\\" data-product-id=\\\"123\\\" data-list-id=\\\"main\\\">\\n  \\t<img src=\\\"...\\\"/>\\n    <a href=\\\"/product_link\\\">Просмотреть товар</a>\\n  </div>\\n  \\n\\t<div class=\\\"ddl_product\\\" data-product-id=\\\"123\\\" data-list-id=\\\"main\\\">\\n    <img src=\\\"...\\\"/>\\n    <a href=\\\"/product_link\\\">Просмотреть товар</a>\\n  </div>\\n  \\n\\t<div class=\\\"ddl_product\\\" data-product-id=\\\"123\\\" data-list-id=\\\"main\\\">\\n    <img src=\\\"...\\\"/>\\n    <a href=\\\"/product_link\\\">Просмотреть товар</a>\\n  </div>\\n  ...\\n</div>\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]\nДалее, использовать следующий код (на странице сайта, или в GTM):\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// получаем все элементы с классом ddl_product, которые попали в зону видимости пользователя\\nddListener.push(['on', 'view:.ddl_product', function(elements) {\\n\\tvar viewedListItems = [];\\n  \\n  // получаем id товара и id товарного списка для каждого элемента\\n\\tjQuery.each(elements, function() {\\n  \\tvar productId = jQuery(this).data('product-id');\\n    var listId = jQuery(this).data('list-id');\\n    viewedListItems.push({\\n    \\t'product': productId, //данные о продукте берутся из DDL\\n      'listId': listId\\n    });\\n  });\\n  \\n  // отправляем событие просмотра товаров\\n  digitalData.events.push({\\n    'name': 'Viewed Product',\\n    'listItems': viewedListItems\\n  });\\n}]);\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание кликов по ссылке на товар\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nПри клике на товар:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Clicked Product',\\n  'listItem': {\\n    'product': '123', //данные о продукте берутся из DDL\\n    'listId': 'category_listing' //позиция в списке берется из DDL\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Clicked Product',\\n  'listItem': {\\n    'product': {\\n      'id': '123',\\n      'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n      'unitPrice': 2000,\\n      'unitSalePrice': 1500,\\n      'name': 'Product 1',\\n      'skuCode': '0234PBS',\\n      'currency': 'RUB',\\n      'manufacturer': 'Brand Name',\\n      'variant': 'dark blue',\\n      'voucher': 'PROD_COUPON1'\\n    },\\n    'listId': 'category_listing',\\n    'position': 3\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание добавления товара в корзину\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nПри добавлении нового товара в корзину:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Added Product',\\n  'product': '123' // данные о продукте берутся из DDL\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Added Product',\\n  'product': {\\n    'id': '123',\\n    'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n    'unitPrice': 2000,\\n    'unitSalePrice': 1500,\\n    'name': 'Product 1',\\n    'skuCode': '0234PBS',\\n    'currency': 'RUB',\\n    'manufacturer': 'Brand Name',\\n    'variant': 'dark blue',\\n    'voucher': 'PROD_COUPON1'\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание удаления товара из корзины\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nПри удалении товара из корзины:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Removed Product',\\n  'product': '123' // данные о продукте берутся из DDL\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Removed Product',\\n  'product': {\\n    'id': '123',\\n    'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\\n    'unitPrice': 2000,\\n    'unitSalePrice': 1500,\\n    'name': 'Product 1',\\n    'skuCode': '0234PBS',\\n    'currency': 'RUB',\\n    'manufacturer': 'Brand Name',\\n    'variant': 'dark blue',\\n    'voucher': 'PROD_COUPON1'\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание показа внутренней рекламы\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nКак только товар попал в зону видимости пользователя:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Campaign',\\n  'campaign': '123' // данные о компании берутся из DDL по ID\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Campaign',\\n  'campaigns': [\\n    {\\n    \\t'id': 'PROMO123',\\n      'name': 'Распродажа летней коллекции',\\n      'description': 'Описание акции/баннера',\\n      'category': 'Баннер',\\n      'subcategory': 'Скидки',\\n      'design': 'Синий вариант',\\n      'position': 'top'\\n    },\\n    {\\n    \\t'id': 'PROMO123',\\n      'name': 'Распродажа летней коллекции',\\n      'description': 'Описание акции/баннера',\\n      'category': 'Баннер',\\n      'subcategory': 'Скидки',\\n      'design': 'Синий вариант',\\n      'position': 'top'\\n    },\\n  ]\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Важно!\",\n  \"body\": \"Очень важно отправлять Impressions только тогда, когда внутреннее промо действительно попало в зону видимости пользователя. Например, если на странице находится слайдер из 10 баннеров, событие \\\"Viewed Campaign\\\" необходимо отправлять только в тот момент, когда слайдер прокрутился и показал новый баннер, который при этом попал в зону видимости экрана.\"\n}\n[/block]\nЧтобы сделать отслеживание попадания в зону видимости более простым, рекомендуется разметить все кампании соответствующим образом, например:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<div class=\\\"ddl_campaign\\\" data-campaign-id=\\\"123\\\">\\n\\t<a href=\\\"/promo-sale-link\\\">\\n    <img src=\\\"...\\\" />\\n  <a>\\n</div>\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]\nДалее, использовать следующий код (на странице сайта, или в GTM):\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// получаем все элементы с классом ddl_campaign, которые попали в зону видимости пользователя\\nddListener.push(['on', 'view:.ddl_campaign', function(elements) {\\n  var viewedCampaigns = [];\\n  \\n  // получаем id кампании для каждого элемента\\n\\tjQuery.each(elements, function() {\\n  \\tvar campaignId = jQuery(this).data('campaign-id');\\n    viewedCampaigns.push(campaignId);\\n  });\\n  \\n  // отправляем событие просмотра кампании (impressions)\\n  digitalData.events.push({\\n    'name': 'Viewed Campaign',\\n    'campaigns': viewedCampaigns // данные о компании берутся из DDL по ID\\n  });\\n}]);\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание клика по внутренней рекламе\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Требует включенного модуля Enhanced Ecommerce\"\n}\n[/block]\nКак только товар попал в зону видимости пользователя:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Clicked Campaign',\\n  'campaign': '123' // данные о компании берутся из DDL по ID\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nили\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Clicked Campaign',\\n  'campaign': {\\n    'id': 'PROMO123',\\n    'name': 'Распродажа летней коллекции',\\n    'description': 'Описание акции/баннера',\\n    'category': 'Баннер',\\n    'subcategory': 'Скидки',\\n    'design': 'Синий вариант',\\n    'position': 'top'\\n  }\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание этапов оформления покупки\"\n}\n[/block]\nДля передачи данных в Google Analytics вам нужно будет установить соответствующий код отслеживания на каждом шаге оформления покупки.\n\n**Поле step (этап)**\n\nУкажите значение step для каждого этапа оформления покупки. Оно используется для привязки действий к ярлыкам, которые вы присвоили каждому этапу оформления покупки в разделе Настройки электронной торговли.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Если процесс оформления состоит из одного шага, или вы не определили последовательность покупки в разделе Настройки электронной торговли, то указывать значение в поле step необязательно.\",\n  \"title\": \"Примечание\"\n}\n[/block]\n**Поле option (вариант)**\n\nЧтобы получать дополнительную информацию об определенном этапе, задайте значение поля option. Например, способ оплаты по умолчанию, выбранный пользователем (допустим, кредитная карта Visa).\n\nСледующий код отслеживает первый шаг в процессе оформления покупки одного товара и получает дополнительную информацию о способе оплаты:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Checkout Step',\\n  'step': 1,\\n  'option': 'Visa'\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Примечание\",\n  \"body\": \"Вместо параметра 'option' можно использовать параметр (или несколько параметров) с любым другим названием. Для этого необходимо предварительно настроить параметр 'checkoutOptions' во время инициализации интеграции.\"\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"ddManger.initialize({\\n  'integrations': [\\n    {\\n    \\t'Google Analytics': {\\n        'trackingId': 'XXX',\\n        ...,\\n        ...,\\n        'checkoutOptions': ['shippingMethod', 'paymentMethod']\\n      }\\n    }\\n  ]\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Checkout Step',\\n  'step': 1,\\n  'shippingMethod': 'FedEx',\\n  'paymentMethod': 'Visa'\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nПриведенный выше код эквивалентен следующему коду:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Viewed Checkout Step',\\n  'step': 1,\\n  'option': 'FedEx Visa'\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Отслеживание вариантов оформления покупки\"\n}\n[/block]\nВы можете получать дополнительную информацию, которая становится доступна после выбора определенного варианта (например, способа доставки) пользователем на данном этапе оформления покупки.\n\nДля отслеживания варианта оформления покупки используйте событие \"Completed Checkout Step\", чтобы указать option. Включите номер этапа и описание варианта.\n\nОбычно выбор варианта регистрируется при переходе пользователя на следующий этап оформления покупки. \n\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"digitalData.events.push({\\n\\t'name': 'Completed Checkout Step',\\n  'step': 2,\\n  'option': 'FedEx'\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Вместо параметра 'option' можно использовать параметр (или несколько параметров) с любым другим названием. Для этого необходимо предварительно настроить параметр 'checkoutOptions' во время инициализации интеграции (как описано выше).\",\n  \"title\": \"Примечание\"\n}\n[/block]","excerpt":"","slug":"google-analytics","type":"basic","title":"Google Analytics"}
[Digital Data Manager](https://github.com/driveback/digital-data-manager) позвляет реализовать интеграцию DDL с Google Analytics (в том числе и Enhanced Ecommerce) в один клик. [block:api-header] { "type": "basic", "title": "Инициализация" } [/block] [block:code] { "codes": [ { "code": "ddManger.initialize({\n \"integrations\": {\n {\n \t\"Google Analytics\": {\n \"trackingId\": \"XXX\",\n \"doubleClick\": true,\n \"enhancedEcommerce\": true,\n \"defaultCurrency\": \"RUB\",\n \"sendUserId\": true,\n \"metrics\": {\n \"metric1\": {\n \t\"type\": \"digitalData\",\n \"value\": \"user.visitsCount\"\n },\n \"metric2\": {\n \t\"type\": \"product\",\n \"value\": \"stock\"\n },\n },\n \"dimensions\": {\n \"dimension1\": {\n \t\"type\": \"event\",\n \"value\": \"user.gender\"\n },\n \"dimension2\": {\n \t\"type\": \"product\",\n \"value\": \"color\"\n },\n },\n \"contentGroups\": {\n \"contentGroup1\": {\n \t\"type\": \"digitalData\",\n \"value\": \"page.type\"\n }\n }\n }\n }\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Описание опций" } [/block] [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "trackingId", "1-0": "doubleClick", "2-0": "enhancedLinkAttribution", "3-0": "enhancedEcommerce", "4-0": "sendUserId", "5-0": "anonymizeIp", "7-0": "includeSearch", "8-0": "siteSpeedSampleRate", "10-0": "metrics", "11-0": "dimensions", "12-0": "contentGroups", "0-1": "String", "1-1": "Boolean", "2-1": "Boolean", "3-1": "Boolean", "4-1": "Boolean", "5-1": "Boolean", "7-1": "Boolean", "8-1": "Number", "10-1": "Variable Mapping (digitalData | event | product)", "11-1": "Variable Mapping (digitalData | event | product)", "12-1": "Variable Mapping (digitalData | event)", "0-2": "Tracking ID вашего сайта.\n\n**Обязательное поле** в формате \"/(UA|YT|MO)-\\d+-\\d+/\"", "1-2": "Активация модуля DoubleClick.\n\n**Значение по умолчанию**: false", "2-2": "Активация [улучшенной атрибуции ссылок](https://support.google.com/analytics/answer/2558867?hl=ru).\n\n**Значение по умолчанию**: false", "3-2": "Активация модуля Enhanced Ecommerce.\n\n**Значение по умолчанию**: false", "5-2": "Необходима ли [анонимизация IP-адресов](https://support.google.com/analytics/answer/2763052?hl=ru). \n\n**Значение по умолчанию**: false", "4-2": "Необходимо ли отправлять User ID в GA. User ID позволяет идентифицировать сессии с разных устройств использую уникальный и постоянный идентификатор.\n\n**Значение по умолчанию**: true", "7-2": "Анонимизация queryString. Включить ли queryString (часть URL после знака \"?\") в pageview.\n\n**Значение по умолчанию:** false", "8-2": "Частота сэмплирования. Определяет, как часто будут отправляться маркеры отслеживания скорости загрузки сайта.\n\n**Значение по умолчанию**: 1 (1% пользователей). Строка из цифр.", "10-2": "Специальные показатели.\n\nИспользуется для автоматической установки параметров metric1, metric2, metric3 ... metric200 и т.д. в GA на основе данных из DDL.", "11-2": "Специальные параметры.\n\nИспользуется для автоматической установки параметров dimension1, dimension2, dimension2 ... dimension200 в GA на основе данных из DDL.", "12-2": "Группа контента.\n\nИспользуется для автоматической установки параметров contentGroup1, contentGroup2, contentGroup3 ... contentGroup200 в GA на основе данных из DDL.", "14-0": "noConflict", "14-1": "Boolean", "14-2": "Необходимо установить в значение true, если на сайте уже установлен тег Google Analytics. В этом случае тег не будет грузиться повторно, а также не будет повторно отправляться событие \"pageview\".\n\n**Значение по умолчанию:** false.", "6-0": "domain", "6-1": "String", "6-2": "Домен сайта, для которого необходимо собирать данные. \n\nНапример site.com.\n\n**Значение по умолчанию:** 'auto'", "9-0": "defaultCurrency", "9-1": "String", "9-2": "Валюта по умолчанию, используемая в Enhanced Ecommerce.\n\n**Значение по умолчанию**: 'RUB'", "13-0": "namespace", "13-1": "String", "15-0": "checkoutOptions", "15-1": "Array" }, "cols": 3, "rows": 16 } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание просмотров страниц (pageview)" } [/block] **На всех страницах сайта:** [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Page',\n 'page': digitalData.page\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n 'name': 'Viewed Page',\n 'page': {\n 'path': '/virtual/test',\n \t'queryString': '?q=test',\n 'title': 'Test Page',\n }\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "danger", "title": "Важно!", "body": "При загрузке новой страницы данное событие должно иметь максимальный приоритет и отправляться раньше других событий, связанных с просмотром страницы, таких как \"Viewed Product Detail\", \"Searched Products\", \"Viewed Product Category\" и так далее." } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание транзакций" } [/block] На странице подтверждения заказа: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Completed Transaction',\n 'transaction': digitalData.transaction // данные по транзакции берутся из DDL\n})", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Completed Transaction',\n 'transaction': {\n 'orderId': '123',\n 'affiliation': 'Google Store',\n 'currency': 'RUB',\n 'shippingCost': 300,\n 'tax': 200,\n 'total': 3500,\n 'vouchers': ['COUPON1'],\n 'lineItems': [\n {\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n },\n 'quantity': 2\n },\n {\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n },\n 'quantity': 2\n }\n ]\n }\n})", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание событий" } [/block] Пример: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Downloaded Tutorial',\n 'category': 'Promo',\n 'label': 'Новый каталог товаров 2016',\n 'value': 1,\n 'nonInteraction': true\n});", "language": "javascript" } ] } [/block] Приведенный выше код эквивалентен следующему вызову GA: [block:code] { "codes": [ { "code": "ga('send', 'event', 'Promo', 'Downoaded Tutorial', 'Новый каталог товаров 2016', 1, {\n\t'nonInteraction': true\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Использование специальных параметров и показателей" } [/block] Все специальные параметры (dimensions) и показатели (metrics) необходимо определить заранее при инициализации интеграции. Например: [block:code] { "codes": [ { "code": "ddManger.initialize({\n 'integrations': [\n {\n \t'Google Analytics': {\n 'trackingId': 'XXX',\n ...,\n ...,\n 'dimensions': {\n \t'dimension1': 'user.userId',\n \t'dimension2': 'googleClientId',\n \t'dimension3': 'user.isLoggedIn',\n \t'dimension4': 'user.isSubscribed'\n \t},\n \t'metrics': {\n 'metric1': 'timestamp',\n 'metric2': 'user.visitCount'\n },\n \t'contentGroups': {\n \t'contentGroup1': 'page.type'\n }\n }\n }\n ]\n});", "language": "javascript" } ] } [/block] Далее необходимо отправить событие (например "Viewed Page") [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Page',\n 'page': {\n \t'type': 'product'\n },\n 'user': {\n 'userId': '123123',\n \t'isLoggedIn': true,\n 'isSubscribed': false,\n 'visitCount', 5\n },\n 'googleClientId': '1899626312.1471280300',\n 'timestamp': 1472290434140\n});", "language": "javascript" } ] } [/block] Или в сокращенном виде при наличии необходимых данных в DDL: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Page',\n 'page': digitalData.page,\n 'user': digitalData.user,\n 'googleClientId': digitalData.integrations.googleAnalytics.clientId,\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "success", "title": "Полезная информация", "body": "Переменная 'timestamp' всегда автоматически отправляется с каждым событием." } [/block] Приведенный выше код будет эквивалентен следующему вызову GA: [block:code] { "codes": [ { "code": "ga('send', 'pageview', {\n\t'dimension1': '123123',\n 'dimension2': '1899626312.1471280300',\n 'dimension3': 'true',\n 'dimension4': 'false',\n 'metric1': 1472290434140,\n 'metric2': 5,\n 'contentGroup1': 'product'\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание просмотра карточки товара" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] На карточке товара: [block:code] { "codes": [ { "code": "digitalData.evens.push({\n\t'name': 'Viewed Product Detail',\n 'product' digitalData.product //данные о продукте берутся из DDL\n});", "language": "json" } ] } [/block] или: [block:code] { "codes": [ { "code": "digitalData.evens.push({\n\t'name': 'Viewed Product Detail',\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание показов товаров (Impressions)" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] Как только товар попал в зону видимости пользователя: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Product',\n 'listItems': [\n {\n \t'product': '123', //данные о продукте берутся из DDL\n 'listId': 'category_listing' //позиция в списке берется из DDL\n },\n {\n \t'product': '234',\n 'listId': 'category_listing'\n }\n ]\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Product',\n 'listItems': [\n {\n \t'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n },\n 'listId': 'category_listing',\n 'position': 3\n },\n {\n \t'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n },\n 'listId': 'category_listing'\n }\n ]\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "warning", "title": "Важно!", "body": "Очень важно отправлять Impressions только тогда, когда товар листинга действительно попал в зону видимости пользователя. Например, если в листинге находится 30 товаров, но в зоне видимости пользователя находится толь 6 товаров, событие \"Viewed Product\" должно быть отправлено только для этих 6 товаров, остальные события должны отправляться по мере скролла." } [/block] Чтобы сделать отслеживание попадания в зону видимости более простым, рекомендуется разметить все товары в листингах соответствующим образом, например: [block:code] { "codes": [ { "code": "<div>\n\t<div class=\"ddl_product\" data-product-id=\"123\" data-list-id=\"main\">\n <img src=\"...\"/>\n <a href=\"/product_link\">Просмотреть товар</a>\n </div>\n \n\t<div class=\"ddl_product\" data-product-id=\"123\" data-list-id=\"main\">\n \t<img src=\"...\"/>\n <a href=\"/product_link\">Просмотреть товар</a>\n </div>\n \n\t<div class=\"ddl_product\" data-product-id=\"123\" data-list-id=\"main\">\n <img src=\"...\"/>\n <a href=\"/product_link\">Просмотреть товар</a>\n </div>\n \n\t<div class=\"ddl_product\" data-product-id=\"123\" data-list-id=\"main\">\n <img src=\"...\"/>\n <a href=\"/product_link\">Просмотреть товар</a>\n </div>\n ...\n</div>", "language": "html" } ] } [/block] Далее, использовать следующий код (на странице сайта, или в GTM): [block:code] { "codes": [ { "code": "// получаем все элементы с классом ddl_product, которые попали в зону видимости пользователя\nddListener.push(['on', 'view:.ddl_product', function(elements) {\n\tvar viewedListItems = [];\n \n // получаем id товара и id товарного списка для каждого элемента\n\tjQuery.each(elements, function() {\n \tvar productId = jQuery(this).data('product-id');\n var listId = jQuery(this).data('list-id');\n viewedListItems.push({\n \t'product': productId, //данные о продукте берутся из DDL\n 'listId': listId\n });\n });\n \n // отправляем событие просмотра товаров\n digitalData.events.push({\n 'name': 'Viewed Product',\n 'listItems': viewedListItems\n });\n}]);", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание кликов по ссылке на товар" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] При клике на товар: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Clicked Product',\n 'listItem': {\n 'product': '123', //данные о продукте берутся из DDL\n 'listId': 'category_listing' //позиция в списке берется из DDL\n }\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Clicked Product',\n 'listItem': {\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n },\n 'listId': 'category_listing',\n 'position': 3\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание добавления товара в корзину" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] При добавлении нового товара в корзину: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Added Product',\n 'product': '123' // данные о продукте берутся из DDL\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Added Product',\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание удаления товара из корзины" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] При удалении товара из корзины: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Removed Product',\n 'product': '123' // данные о продукте берутся из DDL\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Removed Product',\n 'product': {\n 'id': '123',\n 'category': ['Category 1', 'Subcategory 1', 'Subcategory 2'],\n 'unitPrice': 2000,\n 'unitSalePrice': 1500,\n 'name': 'Product 1',\n 'skuCode': '0234PBS',\n 'currency': 'RUB',\n 'manufacturer': 'Brand Name',\n 'variant': 'dark blue',\n 'voucher': 'PROD_COUPON1'\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание показа внутренней рекламы" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] Как только товар попал в зону видимости пользователя: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Campaign',\n 'campaign': '123' // данные о компании берутся из DDL по ID\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Campaign',\n 'campaigns': [\n {\n \t'id': 'PROMO123',\n 'name': 'Распродажа летней коллекции',\n 'description': 'Описание акции/баннера',\n 'category': 'Баннер',\n 'subcategory': 'Скидки',\n 'design': 'Синий вариант',\n 'position': 'top'\n },\n {\n \t'id': 'PROMO123',\n 'name': 'Распродажа летней коллекции',\n 'description': 'Описание акции/баннера',\n 'category': 'Баннер',\n 'subcategory': 'Скидки',\n 'design': 'Синий вариант',\n 'position': 'top'\n },\n ]\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "warning", "title": "Важно!", "body": "Очень важно отправлять Impressions только тогда, когда внутреннее промо действительно попало в зону видимости пользователя. Например, если на странице находится слайдер из 10 баннеров, событие \"Viewed Campaign\" необходимо отправлять только в тот момент, когда слайдер прокрутился и показал новый баннер, который при этом попал в зону видимости экрана." } [/block] Чтобы сделать отслеживание попадания в зону видимости более простым, рекомендуется разметить все кампании соответствующим образом, например: [block:code] { "codes": [ { "code": "<div class=\"ddl_campaign\" data-campaign-id=\"123\">\n\t<a href=\"/promo-sale-link\">\n <img src=\"...\" />\n <a>\n</div>", "language": "html" } ] } [/block] Далее, использовать следующий код (на странице сайта, или в GTM): [block:code] { "codes": [ { "code": "// получаем все элементы с классом ddl_campaign, которые попали в зону видимости пользователя\nddListener.push(['on', 'view:.ddl_campaign', function(elements) {\n var viewedCampaigns = [];\n \n // получаем id кампании для каждого элемента\n\tjQuery.each(elements, function() {\n \tvar campaignId = jQuery(this).data('campaign-id');\n viewedCampaigns.push(campaignId);\n });\n \n // отправляем событие просмотра кампании (impressions)\n digitalData.events.push({\n 'name': 'Viewed Campaign',\n 'campaigns': viewedCampaigns // данные о компании берутся из DDL по ID\n });\n}]);", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание клика по внутренней рекламе" } [/block] [block:callout] { "type": "info", "title": "Требует включенного модуля Enhanced Ecommerce" } [/block] Как только товар попал в зону видимости пользователя: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Clicked Campaign',\n 'campaign': '123' // данные о компании берутся из DDL по ID\n});", "language": "javascript" } ] } [/block] или [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Clicked Campaign',\n 'campaign': {\n 'id': 'PROMO123',\n 'name': 'Распродажа летней коллекции',\n 'description': 'Описание акции/баннера',\n 'category': 'Баннер',\n 'subcategory': 'Скидки',\n 'design': 'Синий вариант',\n 'position': 'top'\n }\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание этапов оформления покупки" } [/block] Для передачи данных в Google Analytics вам нужно будет установить соответствующий код отслеживания на каждом шаге оформления покупки. **Поле step (этап)** Укажите значение step для каждого этапа оформления покупки. Оно используется для привязки действий к ярлыкам, которые вы присвоили каждому этапу оформления покупки в разделе Настройки электронной торговли. [block:callout] { "type": "info", "body": "Если процесс оформления состоит из одного шага, или вы не определили последовательность покупки в разделе Настройки электронной торговли, то указывать значение в поле step необязательно.", "title": "Примечание" } [/block] **Поле option (вариант)** Чтобы получать дополнительную информацию об определенном этапе, задайте значение поля option. Например, способ оплаты по умолчанию, выбранный пользователем (допустим, кредитная карта Visa). Следующий код отслеживает первый шаг в процессе оформления покупки одного товара и получает дополнительную информацию о способе оплаты: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Checkout Step',\n 'step': 1,\n 'option': 'Visa'\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "info", "title": "Примечание", "body": "Вместо параметра 'option' можно использовать параметр (или несколько параметров) с любым другим названием. Для этого необходимо предварительно настроить параметр 'checkoutOptions' во время инициализации интеграции." } [/block] Пример: [block:code] { "codes": [ { "code": "ddManger.initialize({\n 'integrations': [\n {\n \t'Google Analytics': {\n 'trackingId': 'XXX',\n ...,\n ...,\n 'checkoutOptions': ['shippingMethod', 'paymentMethod']\n }\n }\n ]\n});", "language": "javascript" } ] } [/block] [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Checkout Step',\n 'step': 1,\n 'shippingMethod': 'FedEx',\n 'paymentMethod': 'Visa'\n});", "language": "javascript" } ] } [/block] Приведенный выше код эквивалентен следующему коду: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Viewed Checkout Step',\n 'step': 1,\n 'option': 'FedEx Visa'\n});", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Отслеживание вариантов оформления покупки" } [/block] Вы можете получать дополнительную информацию, которая становится доступна после выбора определенного варианта (например, способа доставки) пользователем на данном этапе оформления покупки. Для отслеживания варианта оформления покупки используйте событие "Completed Checkout Step", чтобы указать option. Включите номер этапа и описание варианта. Обычно выбор варианта регистрируется при переходе пользователя на следующий этап оформления покупки. Пример: [block:code] { "codes": [ { "code": "digitalData.events.push({\n\t'name': 'Completed Checkout Step',\n 'step': 2,\n 'option': 'FedEx'\n});", "language": "javascript" } ] } [/block] [block:callout] { "type": "info", "body": "Вместо параметра 'option' можно использовать параметр (или несколько параметров) с любым другим названием. Для этого необходимо предварительно настроить параметр 'checkoutOptions' во время инициализации интеграции (как описано выше).", "title": "Примечание" } [/block]