{"_id":"57d698414340330e00953c8a","category":{"_id":"57d698404340330e00953c6f","version":"57d698404340330e00953c6c","__v":0,"project":"564f643f33082f0d001bb714","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-11-22T17:55:44.357Z","from_sync":false,"order":2,"slug":"полная-спецификация","title":"Полная спецификация"},"user":"564f641651f2ec0d001d6998","parentDoc":null,"__v":1,"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"},"project":"564f643f33082f0d001bb714","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-11-22T17:58:20.889Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Пространство имен\"\n}\n[/block]\nДля переменной DDL используется пространство имен **window.digitalData.***.\n\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"window.digitalData = {};\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Version\"\n}\n[/block]\nИспользуется для определения, какая версия спецификации используется.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"window.digitalData = {\\n  \\\"version\\\" : \\\"1.1.1\\\"\\n  ...\\n}\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Объект digitalData\"\n}\n[/block]\nОбъект ditigalData может содержать (но не ограничен ими) следующие свойства:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"1-0\": \"page\",\n    \"2-0\": \"user\",\n    \"3-0\": \"product\",\n    \"4-0\": \"cart\",\n    \"5-0\": \"transaction\",\n    \"6-0\": \"listing\",\n    \"7-0\": \"recommendation\",\n    \"10-0\": \"events\",\n    \"11-0\": \"version\",\n    \"1-1\": \"[Page](#page) object\",\n    \"2-1\": \"[User](#user) object\",\n    \"3-1\": \"[Product](#product) object\",\n    \"4-1\": \"[Cart](#cart) object\",\n    \"5-1\": \"[Transaction](#transaction) object\",\n    \"6-1\": \"[Listing](#listing) object\",\n    \"7-1\": \"[Recommendation](#recommendation) object или Array of [Recommendation](#recommendation) objects\",\n    \"10-1\": \"Array of [Event](#event) objects\",\n    \"11-1\": \"String\",\n    \"1-2\": \"Текущая просматриваемая страница.\",\n    \"2-2\": \"Посетитель или авторизованный пользователь.\",\n    \"3-2\": \"Товар, отображаемый на странице в случае, если страница содержит один конкретный товар (к примеру, карточка товара).\",\n    \"4-2\": \"Состояние покупательской корзины.\",\n    \"5-2\": \"Транзакция, которая была **только что** завершена (отображается первой странице после завершения транзакции).\",\n    \"6-2\": \"Список товаров, отображенных на странице за исключением рекомендаций (к примеру, результаты поиска, страница товарной категории и т.д.).\",\n    \"7-2\": \"Список товаров, рекомендованных для пользователя на данной странице.\",\n    \"10-2\": \"Содержит события, которые были опубликованы на данной странице.\",\n    \"11-2\": \"Версия спецификации, которая используется.\",\n    \"8-0\": \"campaigns\",\n    \"8-1\": \"Array of [Campaign](#campaign) objects\",\n    \"8-2\": \"Список всех маркетинговых кампаний, промо, видео, акций и баннеров, запущенных на данной странице.\",\n    \"9-0\": \"context\",\n    \"9-1\": \"[Context](#context) object\",\n    \"9-2\": \"**Заполняется автоматически DDM** Данные об окружении и контексте текущего посещения.\",\n    \"0-0\": \"website\",\n    \"0-1\": \"[Website](#website)\",\n    \"0-2\": \"Глобальная информация о сайте\"\n  },\n  \"cols\": 3,\n  \"rows\": 12\n}\n[/block]\nПример объекта digitalData в общем виде:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"window.digitalData = {\\n  \\\"version\\\": \\\"1.1.1\\\",\\n  \\\"website\\\": {...},\\t\\t\\t\\t\\t//Глобальная информация о сайте\\n  \\\"page\\\": {...},\\t\\t\\t\\t\\t\\t//Текущая просматриваемая страница\\n  \\\"user\\\": {...},\\t\\t\\t\\t\\t\\t//Посетитель или авторизованный пользователь\\n  \\\"product\\\": {...},\\t\\t\\t\\t\\t//Товар, отображаемый на странице\\n  \\\"cart\\\": {...},\\t\\t\\t\\t\\t\\t//Состояние покупательской корзины\\n  \\\"transaction\\\": {...},\\t\\t\\t//Транзакция, которая была только что завершена \\n  \\\"listing\\\": {...},\\t\\t\\t\\t\\t//Список товаров, отображенных на странице\\n  \\\"recommendation\\\": [...],\\t//Список товаров, рекомендованных для пользователя\\n  \\\"campaigns\\\": [...],\\t\\t\\t\\t//Список всех маркетинговых кампаний\\n  \\\"events\\\": [...]\\t\\t\\t\\t\\t\\t//События, опубликованные на данной странице\\n}\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Какие переменные внутри DDL должны быть заполнены?\"\n}\n[/block]\nДля каждой страницы должны быть заданы те части Digital Data Layer, которые формируют опыт просмотра конкретной страницы в конкретное время.\n\n **Объект User должен быть включен** всегда, когда доступна хоть какая-то информация о пользователе, даже если текущий посетитель не авторизован.\n\n**Объект Cart должен быть заполнен** тогда, когда это возможно: это включает также страницы, где \"корзина\" не является основной функцией страницы, такие как карточка продукта, категория или главная страница.\n\n**Если какая-то информация неизвестна** - не стоит заполнять поля значением \"null\" или пустыми строками. К примеру, если вам не известен Facebook ID пользователя, необходимо вовсе исключить это поле из DDL. Точно так же, если на странице нет рекомендаций к товару, объект window.digitalData.recommendation даже не должен быть объявлен.\n\nСамый простой пример digitalData может выглядеть так:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"window.digitalData = {\\n  \\\"user\\\": {\\n    \\\"isReturning\\\": true\\n  },\\n  \\\"page\\\": {\\n    \\\"type\\\": \\\"home\\\"\\n  },\\n  \\\"version\\\": \\\"1.1.1\\\"\\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:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Website\"\n}\n[/block]\nСодержит глобальную информацию о сайте\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"region\",\n    \"2-0\": \"type\",\n    \"3-0\": \"language\",\n    \"0-1\": \"String\",\n    \"2-1\": \"String\",\n    \"3-1\": \"String\",\n    \"0-2\": \"Если на сайте присутствует возможность выбора города или региона - данная переменная должна быть заполнена.\\nПример: \\\"Москва\\\"\",\n    \"2-2\": \"Тип сайта, показанный пользователю. \\n  * \\\"mobile\\\" - версия для мобильных телефонов / смартфонов;\\n  * \\\"tablet\\\" - версия для планшетов;\\n  * \\\"desktop\\\" - классический сайт (доступ через стандартный компьютер).\\n\\nК примеру, в случае если пользователь зашёл на основную и единственную версию вашего сайта (выше названную \\\"классической\\\") с планшета или мобильного телефона - должен быть передан тип \\\"desktop\\\". Это же правило касается и responsive-сайтов.\",\n    \"3-2\": \"Выбранный пользователем язык. Должен быть представлен IETF-совместимой строкой, к примеру 'en-US', 'en-GB', 'ru'. EITF код начинается с ISO 639-1 представления языка и дополняется регионом.\",\n    \"1-0\": \"regionId\",\n    \"1-1\": \"String\",\n    \"1-2\": \"Уникальный идентификатор региона\",\n    \"5-0\": \"environment\",\n    \"5-1\": \"String\",\n    \"5-2\": \"Название окружения, для которого был создан Digital Data Layer, к примеру: \\\"development\\\", \\\"testing\\\", \\\"production\\\".\",\n    \"4-0\": \"currency\",\n    \"4-1\": \"String\",\n    \"4-2\": \"Валюта, используемая на сайте по умолчанию, в формате ISO 4217 (USD, EUR, RUB)\"\n  },\n  \"cols\": 3,\n  \"rows\": 6\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"website\\\": {\\n  \\\"region\\\": \\\"Москва\\\",\\n  \\\"regionId\\\": 12,\\n  \\\"type\\\": \\\"desktop\\\",\\n  \\\"language\\\": \\\"ru\\\",\\n  \\\"environment\\\": \\\"production\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Page\"\n}\n[/block]\nСодержит информацию о текущей странице. Главное назначение заключается в категоризации просмотров, что делает аналитику и оптимизацию проще. Для того, чтобы работать с понятными категориями, вместо системных URL.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**type**\",\n    \"1-0\": \"breadcrumb\",\n    \"0-1\": \"String\",\n    \"1-1\": \"Array of String\",\n    \"0-2\": \"**Обязательное поле.** Тип страницы в воронке  взаимодействия с интернет-магазином. Используется в случае, если какие-то теги необходимо таргетировать на определенные страницы, к примеру страницу оформления заказа или карточку товара.\\n\\nДля традиционных интернет-магазинов мы рекомендуем следующие типы страниц:\\n  * home\\n  * category\\n  * product\\n  * search\\n  * cart\\n  * checkout\\n  * confirmation\\n  * content\\nДля других вертикалей, таких как туризм или финансы, могут быть использованы другие типы.\",\n    \"1-2\": \"Многоуровневая категоризация текущей страницы в структуре сайта. Представлена как массив, где элемент 0 - это самый высокий уровень категории, а последний элемент массива - самый низкий (зачастую это название самой страницы). На многих сайтах будет эквивалентен навигационному элементу breadcrumb, исключая первую ссылку на \\\"Главную\\\" страницу.\\n\\nСтруктура категорий должна сохраняться на всем сайте.\\n\\nНе нужно включать данный элемент на страницах, где нет никакой иерархии (к примеру \\\"Главная\\\" страница или \\\"Корзина\\\").\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\nСледующие поля заполняются автоматически с помощью DDM. Приведены для ознакомления. Их заполнять не нужно.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"1-1\": \"String\",\n    \"2-1\": \"String\",\n    \"3-1\": \"String\",\n    \"4-1\": \"String\",\n    \"5-1\": \"String\",\n    \"1-0\": \"hash\",\n    \"2-0\": \"path\",\n    \"3-0\": \"queryString\",\n    \"4-0\": \"referrer\",\n    \"5-0\": \"title\",\n    \"1-2\": \"URL хеш\",\n    \"2-2\": \"URL path\",\n    \"3-2\": \"строка запроса URL\",\n    \"4-2\": \"HTTP referer\",\n    \"5-2\": \"заголовок страницы\",\n    \"0-0\": \"url\",\n    \"0-1\": \"String\",\n    \"0-2\": \"URL страницы\",\n    \"h-3\": \"Пример\",\n    \"0-3\": \"http://website.com/men/suites?sortBy=price#classical\",\n    \"1-3\": \"classical\",\n    \"2-3\": \"/men/suites\",\n    \"3-3\": \"?sortBy=price\",\n    \"4-3\": \"http://referrer.com/\",\n    \"5-3\": \"Интернет магазин westite.com - Классические костюмы\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\nПример страницы товарной категории с тремя уровнями:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"page\\\": {\\n  \\\"type\\\": \\\"category\\\",\\n  \\\"breadcrumb\\\": [\\n    \\\"Мужская одежда\\\",\\n    \\\"Костюмы\\\",\\n    \\\"Классические костюмы\\\"\\n  ]\\n}\\n\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nПример текстовой страницы:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"page\\\": {\\n  \\\"type\\\": \\\"content\\\",\\n  \\\"breadcrumb\\\": [\\n    \\\"О компании\\\",\\n    \\\"Условия доставки\\\",\\n    \\\"Доставка по России\\\"\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nПример страницы оформления заказа:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"page\\\": {\\n  \\\"type\\\": \\\"checkout\\\",\\n  \\\"breadcrumb\\\" : [\\n    \\\"Платежная информация\\\"\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nГлавная страница:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"page\\\": {\\n  \\\"type\\\": \\\"home\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"User\"\n}\n[/block]\nСодержит информацию о текущем пользователе. Данный объект должен быть заполнен **вне зависимости от того, авторизован ли пользователь или нет**. Если пользователь не авторизован - переменная должна быть заполнена известными параметрами о данном посетителе, к примеру user.language.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Важно!\",\n  \"body\": \"Если не доступно никакой информации о пользователе, переменная все равно должна присутствовать, но быть равна пустому объекту:\\nuser: {}\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**userId**\",\n    \"1-0\": \"**email**\",\n    \"6-0\": \"isReturning\",\n    \"8-0\": \"hasTransacted\",\n    \"12-0\": \"facebookId\",\n    \"13-0\": \"twitterId\",\n    \"0-1\": \"String\",\n    \"1-1\": \"String\",\n    \"6-1\": \"Boolean\",\n    \"8-1\": \"Boolean\",\n    \"12-1\": \"String\",\n    \"13-1\": \"String\",\n    \"0-2\": \"**Обязательное поле, если пользователь авторизован.** Внутренний уникальный идентификатор пользователя (зачастую берется из базы данных). По желанию, может быть заполнен даже если пользователь не авторизован, но у сайта есть cookies, при помощи которых можно идентифицировать пользователя.\",\n    \"1-2\": \"**Обязательно поле, если пользователь авторизован. ** Email пользователя. По желанию, может быть заполнен даже если пользователь не авторизован, но у сайта есть cookies, при помощи которых можно идентифицировать пользователя.\",\n    \"6-2\": \"False - для новых пользователей, которые ранее никогда не были на сайте, true - для пользователей, которые уже посещали сайт ранее.\",\n    \"8-2\": \"True - если пользователь когда-либо уже совершал покупки (во время текущего сеанса или во время прошлых).\",\n    \"12-2\": \"Идентификатор Facebook ID, которые возвращает Facebook API.\",\n    \"13-2\": \"Идентификатор пользователя в Twitter.\",\n    \"7-0\": \"isSubscribed\",\n    \"7-1\": \"Boolean\",\n    \"7-2\": \"False - для пользователей, которые не подписаны на рассылку, true - для пользователей, которые подписаны на рассылку.\",\n    \"9-0\": \"lastTransactionDate\",\n    \"9-1\": \"String\",\n    \"9-2\": \"Дата последней транзакции в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)\",\n    \"14-0\": \"segments\",\n    \"14-1\": \"Array of String\",\n    \"14-2\": \"Сегменты, к которым принадлежит пользователь.\\nПример: [\\\"vip users\\\", \\\"at churn risk\\\", \\\"hight LTV\\\"]\",\n    \"2-0\": \"**isLoggedIn**\",\n    \"2-1\": \"Boolean\",\n    \"2-2\": \"**Обязательное поле, если на сайте есть авторизация** True - если пользователь авторизован на сайте, false - если не авторизован.\",\n    \"3-0\": \"firstName\",\n    \"3-1\": \"String\",\n    \"3-2\": \"Имя пользователя\",\n    \"4-0\": \"lastName\",\n    \"4-1\": \"String\",\n    \"4-2\": \"Фамилия пользователя\",\n    \"10-0\": \"lastDeliveryDate\",\n    \"10-1\": \"String\",\n    \"10-2\": \"Дата последней отгрузки товара в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)\",\n    \"11-0\": \"birthDate\",\n    \"11-1\": \"String\",\n    \"11-2\": \"Дата рождения пользователя [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)\",\n    \"5-0\": \"phone\",\n    \"5-1\": \"String\",\n    \"5-2\": \"Телефон пользователя\"\n  },\n  \"cols\": 3,\n  \"rows\": 15\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"user\\\": {\\n  \\\"name\\\": \\\"John Doe\\\",\\n  \\\"userId\\\": \\\"12134124\\\",\\n  \\\"email\\\": \\\"jdoe:::at:::example.com\\\",\\n  \\\"isLoggedIn\\\": true,\\n  \\\"isReturning\\\": true,\\n  \\\"isSubscribed\\\": false,\\n  \\\"facebookId\\\": 1234566778,\\n  \\\"twitterId\\\": \\\"johnthedoe\\\",\\n  \\\"hasTransacted\\\": true,\\n  \\\"lastTransactionDate\\\": \\\"2015-12-01T09:00Z\\\",\\n  \\\"segments\\\": [\\\"vip users\\\", \\\"at churn risk\\\", \\\"high LTV\\\"]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Product\"\n}\n[/block]\nОбъект Product описывает информацию об одном конкретном товаре.\n\nМожет быть использован:\n\n* Внутри глобального объекта digitalData в случае, если на странице показан один товар (к примеру, карточка товара).\n* Внутри другого объекта Product для описания \"связанных\" товаров (см. ниже).\n* Внутри объекта Listing в случае, если на странице отображено множество товаров.\n* Внутри объекта Recommendation в случае, если страница содержит рекомендации.\n* Внутри объекта LineItem для объектов Cart и Transaction.\n\nВ интернете существует множество различных типов товаров. Ниже будут приведены свойства, которые потенциально могут быть использованы для любого типа товаров. Далее - свойства, которые могут быть применены к определенным типам товаров. В любом случае, все свойства, приведенные ниже, не являются обязательными.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Быстрый просмотр товаров\",\n  \"body\": \"Если посетитель сайта динамически просматривает определенные товары (к примеру, в лайтбоксе) вы можете динамически изменять/заполнять объект product для каждого просмотра.\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**id**\",\n    \"9-0\": \"url\",\n    \"10-0\": \"imageUrl\",\n    \"11-0\": \"thumbnailUrl\",\n    \"12-0\": \"description\",\n    \"13-0\": \"manufacturer\",\n    \"14-0\": \"linkedProducts\",\n    \"15-0\": \"reviews\",\n    \"0-1\": \"String\",\n    \"9-1\": \"String\",\n    \"10-1\": \"String\",\n    \"11-1\": \"String\",\n    \"12-1\": \"String\",\n    \"13-1\": \"String\",\n    \"14-1\": \"Array of [Product](#product) objects\",\n    \"15-1\": \"Array of [Review](#review) objects\",\n    \"0-2\": \"**Обязательно поле.** Уникальный идентификатор товара, используемый на сайте (внутри базы данных). Это не обязательно должен быть SKU (Stock Keeping Unit).\",\n    \"9-2\": \"URL данного товара.\",\n    \"10-2\": \"URL картинки данного товара.\",\n    \"11-2\": \"URL миниатюры данного товара.\",\n    \"12-2\": \"Краткое описание товара.\",\n    \"13-2\": \"Производитель / бренд.\",\n    \"14-2\": \"Товары, напрямую связанные с текущим товаром или являющиеся его частью (не путать с товарными рекомендациями).\\n\\nИспользуется для продуктов, которые представляют набор, где linkedProducts это части товара.\",\n    \"15-2\": \"Отзывы покупателей (или сотрудников магазина) о товаре.\",\n    \"1-0\": \"**name**\",\n    \"1-1\": \"String\",\n    \"1-2\": \"**Обязательно поле.** Название товара.\",\n    \"2-0\": \"**currency**\",\n    \"2-1\": \"String\",\n    \"2-2\": \"**Обязательно поле.** Валюта товара в формате  ISO 4217 (USD, EUR, RUB)\",\n    \"4-0\": \"**unitSalePrice**\",\n    \"4-1\": \"Number\",\n    \"4-2\": \"**Обязательно поле.** Стоимость товара, которую в итоге заплатит покупатель, включая все скидки и акции. Если на товар нет никаких акций - значение должно быть идентично unitPrice.\",\n    \"3-0\": \"**unitPrice**\",\n    \"3-1\": \"Number\",\n    \"3-2\": \"**Обязательно поле.** Стоимость единицы товара, без учета скидок и акций.\",\n    \"5-0\": \"**category**\",\n    \"5-1\": \"Array of Strings\",\n    \"5-2\": \"**Обязательно поле.** Иерархия категорий для данного продукта. Например, [\\\"Мужская одежда\\\", \\\"Обувь\\\", \\\"Ботинки\\\"]\",\n    \"6-0\": \"categoryId\",\n    \"6-1\": \"String\",\n    \"6-2\": \"ID товарной категории данного товара.\",\n    \"7-0\": \"groupId\",\n    \"7-1\": \"String\",\n    \"7-2\": \"Идентификатор товарной группы, внутри которой товары фактически идентичны, за исключением каких-то определенных атрибутов (цвет, размер и т.д.)\",\n    \"8-0\": \"groupProductIds\",\n    \"8-1\": \"Array of Strings\",\n    \"8-2\": \"Идентификатор всех товаров, которые относятся к данной товарной группе.\"\n  },\n  \"cols\": 3,\n  \"rows\": 16\n}\n[/block]\n**Дополнительные свойства для товаров, требующих складского учета**\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"skuCode\",\n    \"1-0\": \"stock\",\n    \"0-1\": \"String\",\n    \"1-1\": \"Number\",\n    \"0-2\": \"SKU (Stock Keeping Unit) код товара.\",\n    \"1-2\": \"Наличие на складе.\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\n**Дополнительные свойства для акционных товаров**\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"voucher\",\n    \"0-1\": \"String\",\n    \"0-2\": \"Код купона, примененного пользователем, который изменил цену данного продукта. Если примененный купон не связан с конкретным продуктом - вместо объекта [Product](#product) он должен быть применен к объекту [Transaction](#transaction) или [Cart](#cart).\"\n  },\n  \"cols\": 3,\n  \"rows\": 1\n}\n[/block]\n**Дополнительные свойства для товаров с различными вариантами**\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"color\",\n    \"1-0\": \"size\",\n    \"0-1\": \"String\",\n    \"1-1\": \"String\",\n    \"0-2\": \"Выбранный цвет товара.\",\n    \"1-2\": \"Выбранный размер товара.\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Произвольные свойства\",\n  \"body\": \"Данный список может быть расширен любыми другими свойствами товаров, применимыми к вашему бизнесу.\"\n}\n[/block]\nПример заполненного объекта Product:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"product\\\": {\\n  \\\"id\\\": \\\"1234567890\\\",\\n  \\\"url\\\": \\\"http://website.com/product.html\\\",\\n  \\\"imageUrl\\\": \\\"http://website.com/image.png\\\",\\n  \\\"thumbnailUrl\\\": \\\"http://website.com/image_thump.png\\\",\\n  \\\"name\\\": \\\"Ботинки Timberland\\\",\\n  \\\"description\\\": \\\"Описание данного товара\\\",\\n  \\\"manufacturer\\\": \\\"Timberland\\\",\\n  \\\"category\\\": [\\n    \\\"Обувь\\\",\\n    \\\"Ботинки\\\"\\n  ],\\n  \\\"categoryId\\\": \\\"123\\\",\\n  \\\"currency\\\": \\\"RUB\\\",\\n  \\\"unitPrice\\\": 12990,\\n  \\\"unitSalePrice\\\": 10990,\\n  \\\"skuCode\\\": \\\"TBL6065RW\\\",\\n  \\\"stock\\\": 21,\\n  \\\"voucher\\\": \\\"MYVOUCHER1\\\",\\n  \\\"color\\\": \\\"желто-бежевый\\\",\\n  \\\"size\\\": \\\"41\\\",\\n  \\\"linkedProducts\\\": [Product, Product, Product, ...]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"LineItem\"\n}\n[/block]\nОбъект LineItem определяет количество товаров. Может быть использован внутри объектов [Transaction](#transaction) и [Cart](#cart).\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**product**\",\n    \"0-1\": \"[Product](#product) object\",\n    \"1-0\": \"**quantity**\",\n    \"2-0\": \"subtotal\",\n    \"4-0\": \"shippingMethod\",\n    \"5-0\": \"shippingCost\",\n    \"1-1\": \"Number\",\n    \"2-1\": \"Number\",\n    \"4-1\": \"String\",\n    \"5-1\": \"Number\",\n    \"0-2\": \"**Обязательное поле**. Товар, который был добавлен в корзину или куплен.\",\n    \"1-2\": \"**Обязательное поле**. Количество товаров данного типа, добавленных в корзину или купленных.\",\n    \"2-2\": \"Суммарная стоимость LineItem, которая вычисляется как product.unitSalePrice * quantity.\",\n    \"4-2\": \"**Необязательное поле**. Обычно shippingMethod определяется для корзины, однако если предоставляется возможность выбора различных методов доставки для разных товаров, данное свойство может быть использовано тут, вместо корзины.\",\n    \"5-2\": \"**Необязательное поле**. Используете в случае, если применима логика, описанная логика для shippingMethod.\",\n    \"3-0\": \"totalDiscount\",\n    \"3-1\": \"Number\",\n    \"3-2\": \"Суммарная скидка для текущего LineItem от примененных купонов к конкретному товару или же от акций, связанных с количеством покупаемых товаров, вроде \\\"купи 2, получи 1 бесплатно\\\".\"\n  },\n  \"cols\": 3,\n  \"rows\": 6\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"product\\\": {\\n    \\\"id\\\": \\\"1234567890\\\",\\n    \\\"url\\\": \\\"http://website.com/product.html\\\",\\n    \\\"imageUrl\\\": \\\"http://website.com/image.png\\\",\\n    \\\"thumbnailUrl\\\": \\\"http://website.com/image_thump.png\\\",\\n    \\\"name\\\": \\\"Ботинки Timberland\\\",\\n    \\\"description\\\": \\\"Описание данного товара\\\",\\n    \\\"manufacturer\\\": \\\"Timberland\\\",\\n    \\\"category\\\": [\\n      \\\"Обувь\\\",\\n      \\\"Ботинки\\\"\\n    ],\\n    \\\"currency\\\": \\\"RUB\\\",\\n    \\\"unitPrice\\\": 12990,\\n    \\\"unitSalePrice\\\": 10990,\\n    \\\"skuCode\\\": \\\"TBL6065RW\\\",\\n  },\\n  \\\"quantity\\\": 2,\\n  \\\"subtotal\\\": 10990,\\n  \\\"shippingMethod\\\": \\\"Почта России\\\",\\n  \\\"shippingCost\\\": 800\\n},\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Cart\"\n}\n[/block]\nСодержит информацию о товарах в корзине. Данный объект должен быть заполнен на всех страницах, кроме страницы подтверждения покупки (confirmation page).\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**currency**\",\n    \"1-0\": \"**subtotal**\",\n    \"5-0\": \"vouchers\",\n    \"6-0\": \"voucherDiscount\",\n    \"7-0\": \"shippingCost\",\n    \"8-0\": \"shippingMethod\",\n    \"0-1\": \"String\",\n    \"5-1\": \"Array\",\n    \"8-1\": \"String\",\n    \"1-1\": \"Number\",\n    \"6-1\": \"Number\",\n    \"7-1\": \"Number\",\n    \"0-2\": \"**Обязательное поле**. Валюта корзины в формате  ISO 4217 (USD, EUR, RUB).\",\n    \"1-2\": \"**Обязательное поле**. Сумма корзины, не включая доставку и скидки, примененные к корзине.\",\n    \"5-2\": \"Купон(ы), которые были применены к корзине.\",\n    \"6-2\": \"Суммарная скидка после применения всех купонов.\",\n    \"7-2\": \"Суммарная стоимость доставки для текущей корзины.\",\n    \"8-2\": \"Метод доставки, выбранный для текущей корзины.\",\n    \"2-0\": \"**total**\",\n    \"2-1\": \"Number\",\n    \"2-2\": \"**Обязательное поле**. Суммарная стоимость корзины, включая налог, скидки и стоимость доставки.\",\n    \"3-0\": \"**lineItems**\",\n    \"3-1\": \"Array of [LineItem](#lineitem) objects\",\n    \"3-2\": \"**Обязательное поле**. Товары (и их количество), представленные в корзине. Один объект LineItem для каждой разновидности товаров.\",\n    \"4-0\": \"id\",\n    \"4-1\": \"String\",\n    \"4-2\": \"Уникальный идентификатор корзины.\"\n  },\n  \"cols\": 3,\n  \"rows\": 9\n}\n[/block]\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"cart\\\": {\\n  \\\"id\\\": \\\"CART2203\\\",\\n  \\\"currency\\\": \\\"RUB\\\",\\n  \\\"subtotal\\\": 25000,\\n  \\\"subtotalIncludeTax\\\": false,\\n  \\\"vouchers\\\": [\\n    \\\"MYVOUCHER1\\\"\\n  ],\\n  \\\"voucherDiscount\\\": 500,\\n  \\\"tax\\\": 0,\\n  \\\"shippingCost\\\": 1500,\\n  \\\"shippingMethod\\\": \\\"Доставка курьером\\\",\\n  \\\"total\\\": 26000,\\n  \\\"lineItems\\\": [LineItems, LineItem, LineItem, ...]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"Убедитесь, что объект cart доступен на всех страницах вашего сайта, даже если в корзине нет ни одного товара! В этом случае **total** и **subtotal** будут равны 0, а массив **lineItems** будет пустым.\\nИсключением являются страницы с типом **confirmation**. На этих страницах объекта cart быть не должно.\",\n  \"title\": \"Важно!\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Transaction\"\n}\n[/block]\nОбъект Transaction содержит информацию о совершенной покупке, которая может быть включена на странице подтверждения заказа или на странице с квитанцией к покупке. Большинство полей объекта Transaction такие же, как в объекте [Cart](#cart).\n\nПоля, уникальные для объекта Transaction:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"**orderId**\",\n    \"2-0\": \"isReturning\",\n    \"0-1\": \"String\",\n    \"2-1\": \"Boolean\",\n    \"0-2\": \"**Обязательно поле. **Уникальный идентификатор заказа.\",\n    \"2-2\": \"False -  если пользователь только совершил заказ и впервые видит подтверждение. True - если пользователь совершил заказ ранее, а сейчас вернулся, чтобы повторно просмотреть заказ или отследить его статус (к примеру в своем профиле или в разделе \\\"прошлые покупки\\\").\",\n    \"3-0\": \"isFirst\",\n    \"3-1\": \"Boolean\",\n    \"3-2\": \"True - если пользователь никогда не покупал ранее, и это его первая покупка. False - если пользовать уже покупал ранее.\",\n    \"1-0\": \"cartId\",\n    \"1-1\": \"String\",\n    \"1-2\": \"Уникальный идентификатор корзины.\"\n  },\n  \"cols\": 3,\n  \"rows\": 4\n}\n[/block]\nВсе остальные поля, такие же, как и в объекте [Cart](#cart).\n\nПример:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"transaction\\\": {\\n \\n  \\\"orderId\\\": \\\"123456\\\",\\n  \\\"isFirst\\\": true,\\n  \\n  //Поля из объекта Сart\\n  \\\"currency\\\": \\\"RUB\\\",\\n  \\\"subtotal\\\": 25000,\\n  \\\"vouchers\\\": [\\n    \\\"MYVOUCHER1\\\"\\n  ],\\n  \\\"voucherDiscount\\\": 500,\\n  \\\"shippingCost\\\": 1500,\\n  \\\"shippingMethod\\\": \\\"Доставка курьером\\\",\\n  \\\"total\\\": 26000,\\n  \\\"lineItems\\\": [LineItem, LineItem, LineItem, ...]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Listing\"\n}\n[/block]\nОбъект Listing содержит список объектов [Product](#product), которые могут быть отображены, к примеру, на странице поиска или странице товарной категории.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"1-0\": \"**items**\",\n    \"6-0\": \"pagesCount\",\n    \"8-0\": \"sortBy\",\n    \"9-0\": \"layout\",\n    \"1-1\": \"Array of [Product](#product) objects\",\n    \"6-1\": \"Number\",\n    \"8-1\": \"String\",\n    \"9-1\": \"String\",\n    \"h-3\": \"Примеры\",\n    \"6-3\": \"22\",\n    \"8-3\": \"price_desc\\nprice_asc\",\n    \"9-3\": \"list\\ngrid\\nmap\",\n    \"1-3\": \"[Product, Product, Product ... ]\",\n    \"1-2\": \"**Обязательное поле.** Список товаров, отображенных на данной странице\",\n    \"6-2\": \"Количество страниц с товарами (если присутствует пагинация)\",\n    \"8-2\": \"Какая сортировка применена к списку.\",\n    \"9-2\": \"Как тип оформления списка отображен пользователю.\",\n    \"0-0\": \"**listName**\",\n    \"0-1\": \"String\",\n    \"0-3\": \"\\\"search-results\\\", \\\"category-listing\\\"\",\n    \"0-2\": \"**Обязательное поле.** Название списка.\",\n    \"4-0\": \"query\",\n    \"4-1\": \"String\",\n    \"4-2\": \"Если список товаров - это результат поиска, то должен быть указан введенный запрос.\",\n    \"4-3\": \"\\\"ботинки бежевые\\\"\",\n    \"7-0\": \"currentPage\",\n    \"7-1\": \"Number\",\n    \"7-2\": \"Номер страницы, на который находится пользователь (если присутствует пагинация)\",\n    \"7-3\": \"1\",\n    \"5-0\": \"resultCount\",\n    \"5-1\": \"Number\",\n    \"5-2\": \"Количество всех товаров в данной категории или количество всех найденных товаров.\",\n    \"5-3\": \"110\",\n    \"2-0\": \"**categoryId**\",\n    \"2-1\": \"String\",\n    \"2-2\": \"**Обязательное поле для страниц с типом category** Идентификатор товарной категории. Данный элемент необходимо включать только на страницах товарных категорий (страницы, где значение digitalData.page.type равно \\\"category\\\").\",\n    \"2-3\": \"121352\",\n    \"3-0\": \"**category**\",\n    \"3-1\": \"Array of String\",\n    \"3-2\": \"**Обязательное поле для страниц с типом category** Иерархия категорий для данной категории. Это поле необходимо заполнять только на страницах товарных категорий (страницы, где значение digitalData.page.type = \\\"category\\\").\",\n    \"3-3\": \"[\\\"Мужская одежда\\\", \\\"Обувь\\\", \\\"Ботинки\\\"]\"\n  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"listing\\\": {\\n  \\\"listName\\\": \\\"search-results\\\",\\n  \\\"query\\\": \\\"ботики бежевые\\\",\\n  \\\"items\\\": [Product, Product, Product, ...],\\n  \\\"sortBy\\\": \\\"price_asc\\\",\\n  \\\"resultCount\\\": 20,\\n  \\\"pagesCount\\\": 13,\\n  \\\"currentPage\\\": 2,       \\n  \\\"layout\\\": \\\"grid\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Recommendation\"\n}\n[/block]\nОбъект Recommendation содержит товары, которые были рекомендованы на данной странице (используют алгоритмы рекомендаций). \n[block:parameters]\n{\n  \"data\": {\n    \"1-0\": \"**items**\",\n    \"1-1\": \"Array of [Product](#product) objects\",\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"1-2\": \"**Обязательное поле.** Товары, которые были рекомендованы на данной странице.\",\n    \"0-0\": \"**listName**\",\n    \"0-1\": \"String\",\n    \"0-2\": \"**Обязательное поле.** Название списка.\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\nПример нескольких списков рекомендаций:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"recommedation\\\": [\\n  {\\n    \\\"listName\\\": \\\"related-products\\\",\\n    \\\"items\\\": [Product, Product, Product, ...]\\n  },\\n  {\\n    \\\"listName\\\": \\\"most-popular-products\\\",\\n    \\\"items\\\": [Product, Product, Product, ...]\\n  }\\n]\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Campaign\"\n}\n[/block]\nОбъект Campaign описывает любые маркетинговые кампании, видео, промо или баннеры, запущенные на данной странице.\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**id**\",\n    \"0-1\": \"String\",\n    \"1-0\": \"name\",\n    \"2-0\": \"description\",\n    \"3-0\": \"category\",\n    \"3-1\": \"String\",\n    \"3-2\": \"Краткое описание типа маркетинговой кампании, к примеру: \\\"video\\\", \\\"banner\\\", \\\"promo\\\". Либо вендора: \\\"Driveback\\\", \\\"Giftery\\\", и т.д.\",\n    \"4-0\": \"subcategory\",\n    \"4-1\": \"String\",\n    \"4-2\": \"Краткое описание подкатегории маркетинговой кампании, к примеру \\\"Привлечение подписчиков\\\", \\\"Распродажа\\\", \\\"Товары на акции\\\".\",\n    \"6-0\": \"position\",\n    \"6-1\": \"String\",\n    \"6-2\": \"Где и как данная кампания отображается, к примеру: \\\"lightbox\\\", \\\"top\\\", \\\"bottom\\\", \\\"side(right)\\\", \\\"after-navigation\\\", \\\"slot12\\\".\",\n    \"5-0\": \"design\",\n    \"5-1\": \"String\",\n    \"5-2\": \"Название креатива, к примеру \\\"Картинка с ребенком и мамой\\\".\",\n    \"1-1\": \"String\",\n    \"2-1\": \"String\",\n    \"2-2\": \"Краткое описание маркетинговой кампании.\",\n    \"0-2\": \"**Обязательное поле.** Уникальный идентификатор кампании.\",\n    \"1-2\": \"Название кампании.\"\n  },\n  \"cols\": 3,\n  \"rows\": 7\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"id\\\": \\\"PROMO123\\\",\\n  \\\"name\\\": \\\"Распродажа летней коллекции\\\",\\n  \\\"description\\\": \\\"Описание акции/баннера\\\",\\n  \\\"category\\\": \\\"Баннер\\\",\\n  \\\"subcategory\\\": \\\"Скидки\\\",\\n  \\\"design\\\": \\\"Синий вариант\\\",\\n  \\\"position\\\": \\\"top\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Context\"\n}\n[/block]\nОбъект Context содержит информацию об окружении и контексте текущего посещения.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"0-0\": \"userAgent\",\n    \"0-1\": \"String\",\n    \"0-2\": \"Информация о браузере пользователя. **Данное поле заполняется автоматически.**\",\n    \"1-0\": \"campaign\",\n    \"1-1\": \"Object\",\n    \"1-2\": \"Информация об атрибуции посещения. Зачастую напрямую связана с UTM-метками, по которым пользователь попал на сайт во время последнего непрямого захода.\",\n    \"2-0\": \"* name\",\n    \"3-0\": \"* source\",\n    \"4-0\": \"* medium\",\n    \"2-1\": \"String\",\n    \"3-1\": \"String\",\n    \"4-1\": \"String\",\n    \"5-0\": \"* term\",\n    \"6-0\": \"* content\",\n    \"5-1\": \"String\",\n    \"6-1\": \"String\",\n    \"2-2\": \"Название рекламной кампании. Чаще всего соответствует метке utm_campaign.\",\n    \"3-2\": \"Рекламная площадка. Чаще всего соответствует метке utm_source.\",\n    \"4-2\": \"Тип реклама. Чаще всего соответствует метке utm_medium.\",\n    \"5-2\": \"Ключевая фраза. Чаще всего соответствует метке utm_term.\",\n    \"6-2\": \"Контейнер для дополнительной информации о рекламной кампании. Чаще всего соответствует метке utm_content.\",\n    \"7-0\": \"ip\",\n    \"7-1\": \"String\",\n    \"7-2\": \"IP-адрес пользователя\"\n  },\n  \"cols\": 3,\n  \"rows\": 8\n}\n[/block]\nНиже приведен пример заполнения объекта Context для пользователя, использующего браузер Mozilla, ip-адрес 46.250.135.5 и пришедшего на сайт по ссылке http://website.com/?utm_campaign=sale_05_06_2016&utm_medium=cpc&utm_source=criteo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"context\\\": {\\n\\t\\\"userAgent\\\": \\\"Mozilla/5.0 (Macintosh) Gecko/20100101 Firefox/46.0\\\",\\n  \\\"campaign\\\": {\\n\\t\\t\\\"name\\\": \\\"sale_05_06_2016\\\",\\n  \\t\\\"medium\\\": \\\"cpc\\\",\\n  \\t\\\"source\\\": \\\"criteo\\\"\\n\\t},\\n\\t\\\"ip\\\": \\\"46.250.135.5\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Review\"\n}\n[/block]\nОбъект Review содержит отзывы к данному товару.\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"body\",\n    \"1-0\": \"rating\",\n    \"0-1\": \"String\",\n    \"1-1\": \"Number\",\n    \"0-2\": \"Текст отзыва.\",\n    \"1-2\": \"Оценка товара, соответствующая данному отзыву. К примеру 5 или 3.5.\",\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"reviews\\\": [\\n  {\\n    \\\"body\\\": \\\"Отличные ботинки!\\\",\\n    \\\"rating\\\": 5.0\\n  },\\n  {\\n    \\\"body\\\": \\\"Довольно неплохие в холодную погоду\\\",\\n    \\\"rating\\\": 4.5\\n  }\\n]\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Event\"\n}\n[/block]\nОбъект Event используется для отслеживания поведения пользователя на сайте, которое вы хотели бы использовать для сегментирования или аналитики. Более детально прочитать о том, как отслеживать и публиковать события вы можете в разделе [Работа с событиями](/docs/работа-с-событиями).\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ключ\",\n    \"h-1\": \"Тип\",\n    \"h-2\": \"Описание\",\n    \"h-3\": \"Примеры\",\n    \"1-0\": \"category\",\n    \"1-1\": \"String\",\n    \"1-2\": \"Название коллекции событий, связанных с конкретным вендером, виджетом, разделом сайта или определенной воронкой взаимодействия с сайтом.\",\n    \"1-3\": \"Ecommerce\\nEmail\\nRegistration\",\n    \"0-0\": \"**name**\",\n    \"0-1\": \"String\",\n    \"0-2\": \"**Обязательно поле.** Уникальное название события, которое описывает совершенное действие.\\n\\nМы рекомендуем использовать простые для восприятия и читаемые названия. \\n\\nНаилучшим названием будет являться глагол в прошедшем времени + существительное.\",\n    \"0-3\": \"Completed Order\\nAdded to Cart\\nRemoved from Cart\\nPlayed Video\\nSubmitted Form\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"Дополнительные поля\",\n  \"body\": \"Объект Event может содержать неограниченное количество дополнительных полей, которые описывают метаданные, связанные с событием. Например, информация о товаре, который был добавлен в корзину или название PDF-документа, который был скачан с сайта.\"\n}\n[/block]\nПример события добавления товара в корзину:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"events\\\": [\\n  {\\n    \\\"name\\\": \\\"Product Added\\\",\\n  \\t\\\"category\\\": \\\"Ecommerce\\\",\\n    \\\"items\\\": [Product, Product, ...]\\n  }\\n]\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nПример события подписки на рассылку:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"events\\\": [\\n  {\\n  \\t\\\"name\\\": \\\"Subscribed\\\",\\n  \\t\\\"category\\\": \\\"Email\\\",\\n    \\\"user\\\": {\\n      \\\"email\\\": \\\"johndoe@example.com\\\"\\n    }  \\n  }\\n]\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"описание-объектов","type":"basic","title":"Описание объектов"}

Описание объектов


[block:api-header] { "type": "basic", "title": "Пространство имен" } [/block] Для переменной DDL используется пространство имен **window.digitalData.***. Пример: [block:code] { "codes": [ { "code": "window.digitalData = {};", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Version" } [/block] Используется для определения, какая версия спецификации используется. [block:code] { "codes": [ { "code": "window.digitalData = {\n \"version\" : \"1.1.1\"\n ...\n}", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Объект digitalData" } [/block] Объект ditigalData может содержать (но не ограничен ими) следующие свойства: [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "1-0": "page", "2-0": "user", "3-0": "product", "4-0": "cart", "5-0": "transaction", "6-0": "listing", "7-0": "recommendation", "10-0": "events", "11-0": "version", "1-1": "[Page](#page) object", "2-1": "[User](#user) object", "3-1": "[Product](#product) object", "4-1": "[Cart](#cart) object", "5-1": "[Transaction](#transaction) object", "6-1": "[Listing](#listing) object", "7-1": "[Recommendation](#recommendation) object или Array of [Recommendation](#recommendation) objects", "10-1": "Array of [Event](#event) objects", "11-1": "String", "1-2": "Текущая просматриваемая страница.", "2-2": "Посетитель или авторизованный пользователь.", "3-2": "Товар, отображаемый на странице в случае, если страница содержит один конкретный товар (к примеру, карточка товара).", "4-2": "Состояние покупательской корзины.", "5-2": "Транзакция, которая была **только что** завершена (отображается первой странице после завершения транзакции).", "6-2": "Список товаров, отображенных на странице за исключением рекомендаций (к примеру, результаты поиска, страница товарной категории и т.д.).", "7-2": "Список товаров, рекомендованных для пользователя на данной странице.", "10-2": "Содержит события, которые были опубликованы на данной странице.", "11-2": "Версия спецификации, которая используется.", "8-0": "campaigns", "8-1": "Array of [Campaign](#campaign) objects", "8-2": "Список всех маркетинговых кампаний, промо, видео, акций и баннеров, запущенных на данной странице.", "9-0": "context", "9-1": "[Context](#context) object", "9-2": "**Заполняется автоматически DDM** Данные об окружении и контексте текущего посещения.", "0-0": "website", "0-1": "[Website](#website)", "0-2": "Глобальная информация о сайте" }, "cols": 3, "rows": 12 } [/block] Пример объекта digitalData в общем виде: [block:code] { "codes": [ { "code": "window.digitalData = {\n \"version\": \"1.1.1\",\n \"website\": {...},\t\t\t\t\t//Глобальная информация о сайте\n \"page\": {...},\t\t\t\t\t\t//Текущая просматриваемая страница\n \"user\": {...},\t\t\t\t\t\t//Посетитель или авторизованный пользователь\n \"product\": {...},\t\t\t\t\t//Товар, отображаемый на странице\n \"cart\": {...},\t\t\t\t\t\t//Состояние покупательской корзины\n \"transaction\": {...},\t\t\t//Транзакция, которая была только что завершена \n \"listing\": {...},\t\t\t\t\t//Список товаров, отображенных на странице\n \"recommendation\": [...],\t//Список товаров, рекомендованных для пользователя\n \"campaigns\": [...],\t\t\t\t//Список всех маркетинговых кампаний\n \"events\": [...]\t\t\t\t\t\t//События, опубликованные на данной странице\n}", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Какие переменные внутри DDL должны быть заполнены?" } [/block] Для каждой страницы должны быть заданы те части Digital Data Layer, которые формируют опыт просмотра конкретной страницы в конкретное время. **Объект User должен быть включен** всегда, когда доступна хоть какая-то информация о пользователе, даже если текущий посетитель не авторизован. **Объект Cart должен быть заполнен** тогда, когда это возможно: это включает также страницы, где "корзина" не является основной функцией страницы, такие как карточка продукта, категория или главная страница. **Если какая-то информация неизвестна** - не стоит заполнять поля значением "null" или пустыми строками. К примеру, если вам не известен Facebook ID пользователя, необходимо вовсе исключить это поле из DDL. Точно так же, если на странице нет рекомендаций к товару, объект window.digitalData.recommendation даже не должен быть объявлен. Самый простой пример digitalData может выглядеть так: [block:code] { "codes": [ { "code": "window.digitalData = {\n \"user\": {\n \"isReturning\": true\n },\n \"page\": {\n \"type\": \"home\"\n },\n \"version\": \"1.1.1\"\n}", "language": "javascript" } ] } [/block] [block:api-header] { "type": "basic", "title": "Описание объектов" } [/block] [block:api-header] { "type": "basic", "title": "Website" } [/block] Содержит глобальную информацию о сайте [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "region", "2-0": "type", "3-0": "language", "0-1": "String", "2-1": "String", "3-1": "String", "0-2": "Если на сайте присутствует возможность выбора города или региона - данная переменная должна быть заполнена.\nПример: \"Москва\"", "2-2": "Тип сайта, показанный пользователю. \n * \"mobile\" - версия для мобильных телефонов / смартфонов;\n * \"tablet\" - версия для планшетов;\n * \"desktop\" - классический сайт (доступ через стандартный компьютер).\n\nК примеру, в случае если пользователь зашёл на основную и единственную версию вашего сайта (выше названную \"классической\") с планшета или мобильного телефона - должен быть передан тип \"desktop\". Это же правило касается и responsive-сайтов.", "3-2": "Выбранный пользователем язык. Должен быть представлен IETF-совместимой строкой, к примеру 'en-US', 'en-GB', 'ru'. EITF код начинается с ISO 639-1 представления языка и дополняется регионом.", "1-0": "regionId", "1-1": "String", "1-2": "Уникальный идентификатор региона", "5-0": "environment", "5-1": "String", "5-2": "Название окружения, для которого был создан Digital Data Layer, к примеру: \"development\", \"testing\", \"production\".", "4-0": "currency", "4-1": "String", "4-2": "Валюта, используемая на сайте по умолчанию, в формате ISO 4217 (USD, EUR, RUB)" }, "cols": 3, "rows": 6 } [/block] Пример: [block:code] { "codes": [ { "code": "\"website\": {\n \"region\": \"Москва\",\n \"regionId\": 12,\n \"type\": \"desktop\",\n \"language\": \"ru\",\n \"environment\": \"production\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Page" } [/block] Содержит информацию о текущей странице. Главное назначение заключается в категоризации просмотров, что делает аналитику и оптимизацию проще. Для того, чтобы работать с понятными категориями, вместо системных URL. [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**type**", "1-0": "breadcrumb", "0-1": "String", "1-1": "Array of String", "0-2": "**Обязательное поле.** Тип страницы в воронке взаимодействия с интернет-магазином. Используется в случае, если какие-то теги необходимо таргетировать на определенные страницы, к примеру страницу оформления заказа или карточку товара.\n\nДля традиционных интернет-магазинов мы рекомендуем следующие типы страниц:\n * home\n * category\n * product\n * search\n * cart\n * checkout\n * confirmation\n * content\nДля других вертикалей, таких как туризм или финансы, могут быть использованы другие типы.", "1-2": "Многоуровневая категоризация текущей страницы в структуре сайта. Представлена как массив, где элемент 0 - это самый высокий уровень категории, а последний элемент массива - самый низкий (зачастую это название самой страницы). На многих сайтах будет эквивалентен навигационному элементу breadcrumb, исключая первую ссылку на \"Главную\" страницу.\n\nСтруктура категорий должна сохраняться на всем сайте.\n\nНе нужно включать данный элемент на страницах, где нет никакой иерархии (к примеру \"Главная\" страница или \"Корзина\")." }, "cols": 3, "rows": 2 } [/block] Следующие поля заполняются автоматически с помощью DDM. Приведены для ознакомления. Их заполнять не нужно. [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "1-1": "String", "2-1": "String", "3-1": "String", "4-1": "String", "5-1": "String", "1-0": "hash", "2-0": "path", "3-0": "queryString", "4-0": "referrer", "5-0": "title", "1-2": "URL хеш", "2-2": "URL path", "3-2": "строка запроса URL", "4-2": "HTTP referer", "5-2": "заголовок страницы", "0-0": "url", "0-1": "String", "0-2": "URL страницы", "h-3": "Пример", "0-3": "http://website.com/men/suites?sortBy=price#classical", "1-3": "classical", "2-3": "/men/suites", "3-3": "?sortBy=price", "4-3": "http://referrer.com/", "5-3": "Интернет магазин westite.com - Классические костюмы" }, "cols": 4, "rows": 6 } [/block] Пример страницы товарной категории с тремя уровнями: [block:code] { "codes": [ { "code": "\"page\": {\n \"type\": \"category\",\n \"breadcrumb\": [\n \"Мужская одежда\",\n \"Костюмы\",\n \"Классические костюмы\"\n ]\n}\n", "language": "json" } ] } [/block] Пример текстовой страницы: [block:code] { "codes": [ { "code": "\"page\": {\n \"type\": \"content\",\n \"breadcrumb\": [\n \"О компании\",\n \"Условия доставки\",\n \"Доставка по России\"\n ]\n}", "language": "json" } ] } [/block] Пример страницы оформления заказа: [block:code] { "codes": [ { "code": "\"page\": {\n \"type\": \"checkout\",\n \"breadcrumb\" : [\n \"Платежная информация\"\n ]\n}", "language": "json" } ] } [/block] Главная страница: [block:code] { "codes": [ { "code": "\"page\": {\n \"type\": \"home\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "User" } [/block] Содержит информацию о текущем пользователе. Данный объект должен быть заполнен **вне зависимости от того, авторизован ли пользователь или нет**. Если пользователь не авторизован - переменная должна быть заполнена известными параметрами о данном посетителе, к примеру user.language. [block:callout] { "type": "warning", "title": "Важно!", "body": "Если не доступно никакой информации о пользователе, переменная все равно должна присутствовать, но быть равна пустому объекту:\nuser: {}" } [/block] [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**userId**", "1-0": "**email**", "6-0": "isReturning", "8-0": "hasTransacted", "12-0": "facebookId", "13-0": "twitterId", "0-1": "String", "1-1": "String", "6-1": "Boolean", "8-1": "Boolean", "12-1": "String", "13-1": "String", "0-2": "**Обязательное поле, если пользователь авторизован.** Внутренний уникальный идентификатор пользователя (зачастую берется из базы данных). По желанию, может быть заполнен даже если пользователь не авторизован, но у сайта есть cookies, при помощи которых можно идентифицировать пользователя.", "1-2": "**Обязательно поле, если пользователь авторизован. ** Email пользователя. По желанию, может быть заполнен даже если пользователь не авторизован, но у сайта есть cookies, при помощи которых можно идентифицировать пользователя.", "6-2": "False - для новых пользователей, которые ранее никогда не были на сайте, true - для пользователей, которые уже посещали сайт ранее.", "8-2": "True - если пользователь когда-либо уже совершал покупки (во время текущего сеанса или во время прошлых).", "12-2": "Идентификатор Facebook ID, которые возвращает Facebook API.", "13-2": "Идентификатор пользователя в Twitter.", "7-0": "isSubscribed", "7-1": "Boolean", "7-2": "False - для пользователей, которые не подписаны на рассылку, true - для пользователей, которые подписаны на рассылку.", "9-0": "lastTransactionDate", "9-1": "String", "9-2": "Дата последней транзакции в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)", "14-0": "segments", "14-1": "Array of String", "14-2": "Сегменты, к которым принадлежит пользователь.\nПример: [\"vip users\", \"at churn risk\", \"hight LTV\"]", "2-0": "**isLoggedIn**", "2-1": "Boolean", "2-2": "**Обязательное поле, если на сайте есть авторизация** True - если пользователь авторизован на сайте, false - если не авторизован.", "3-0": "firstName", "3-1": "String", "3-2": "Имя пользователя", "4-0": "lastName", "4-1": "String", "4-2": "Фамилия пользователя", "10-0": "lastDeliveryDate", "10-1": "String", "10-2": "Дата последней отгрузки товара в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)", "11-0": "birthDate", "11-1": "String", "11-2": "Дата рождения пользователя [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)", "5-0": "phone", "5-1": "String", "5-2": "Телефон пользователя" }, "cols": 3, "rows": 15 } [/block] Пример: [block:code] { "codes": [ { "code": "\"user\": {\n \"name\": \"John Doe\",\n \"userId\": \"12134124\",\n \"email\": \"jdoe@example.com\",\n \"isLoggedIn\": true,\n \"isReturning\": true,\n \"isSubscribed\": false,\n \"facebookId\": 1234566778,\n \"twitterId\": \"johnthedoe\",\n \"hasTransacted\": true,\n \"lastTransactionDate\": \"2015-12-01T09:00Z\",\n \"segments\": [\"vip users\", \"at churn risk\", \"high LTV\"]\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Product" } [/block] Объект Product описывает информацию об одном конкретном товаре. Может быть использован: * Внутри глобального объекта digitalData в случае, если на странице показан один товар (к примеру, карточка товара). * Внутри другого объекта Product для описания "связанных" товаров (см. ниже). * Внутри объекта Listing в случае, если на странице отображено множество товаров. * Внутри объекта Recommendation в случае, если страница содержит рекомендации. * Внутри объекта LineItem для объектов Cart и Transaction. В интернете существует множество различных типов товаров. Ниже будут приведены свойства, которые потенциально могут быть использованы для любого типа товаров. Далее - свойства, которые могут быть применены к определенным типам товаров. В любом случае, все свойства, приведенные ниже, не являются обязательными. [block:callout] { "type": "info", "title": "Быстрый просмотр товаров", "body": "Если посетитель сайта динамически просматривает определенные товары (к примеру, в лайтбоксе) вы можете динамически изменять/заполнять объект product для каждого просмотра." } [/block] [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**id**", "9-0": "url", "10-0": "imageUrl", "11-0": "thumbnailUrl", "12-0": "description", "13-0": "manufacturer", "14-0": "linkedProducts", "15-0": "reviews", "0-1": "String", "9-1": "String", "10-1": "String", "11-1": "String", "12-1": "String", "13-1": "String", "14-1": "Array of [Product](#product) objects", "15-1": "Array of [Review](#review) objects", "0-2": "**Обязательно поле.** Уникальный идентификатор товара, используемый на сайте (внутри базы данных). Это не обязательно должен быть SKU (Stock Keeping Unit).", "9-2": "URL данного товара.", "10-2": "URL картинки данного товара.", "11-2": "URL миниатюры данного товара.", "12-2": "Краткое описание товара.", "13-2": "Производитель / бренд.", "14-2": "Товары, напрямую связанные с текущим товаром или являющиеся его частью (не путать с товарными рекомендациями).\n\nИспользуется для продуктов, которые представляют набор, где linkedProducts это части товара.", "15-2": "Отзывы покупателей (или сотрудников магазина) о товаре.", "1-0": "**name**", "1-1": "String", "1-2": "**Обязательно поле.** Название товара.", "2-0": "**currency**", "2-1": "String", "2-2": "**Обязательно поле.** Валюта товара в формате ISO 4217 (USD, EUR, RUB)", "4-0": "**unitSalePrice**", "4-1": "Number", "4-2": "**Обязательно поле.** Стоимость товара, которую в итоге заплатит покупатель, включая все скидки и акции. Если на товар нет никаких акций - значение должно быть идентично unitPrice.", "3-0": "**unitPrice**", "3-1": "Number", "3-2": "**Обязательно поле.** Стоимость единицы товара, без учета скидок и акций.", "5-0": "**category**", "5-1": "Array of Strings", "5-2": "**Обязательно поле.** Иерархия категорий для данного продукта. Например, [\"Мужская одежда\", \"Обувь\", \"Ботинки\"]", "6-0": "categoryId", "6-1": "String", "6-2": "ID товарной категории данного товара.", "7-0": "groupId", "7-1": "String", "7-2": "Идентификатор товарной группы, внутри которой товары фактически идентичны, за исключением каких-то определенных атрибутов (цвет, размер и т.д.)", "8-0": "groupProductIds", "8-1": "Array of Strings", "8-2": "Идентификатор всех товаров, которые относятся к данной товарной группе." }, "cols": 3, "rows": 16 } [/block] **Дополнительные свойства для товаров, требующих складского учета** [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "skuCode", "1-0": "stock", "0-1": "String", "1-1": "Number", "0-2": "SKU (Stock Keeping Unit) код товара.", "1-2": "Наличие на складе." }, "cols": 3, "rows": 2 } [/block] **Дополнительные свойства для акционных товаров** [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "voucher", "0-1": "String", "0-2": "Код купона, примененного пользователем, который изменил цену данного продукта. Если примененный купон не связан с конкретным продуктом - вместо объекта [Product](#product) он должен быть применен к объекту [Transaction](#transaction) или [Cart](#cart)." }, "cols": 3, "rows": 1 } [/block] **Дополнительные свойства для товаров с различными вариантами** [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "color", "1-0": "size", "0-1": "String", "1-1": "String", "0-2": "Выбранный цвет товара.", "1-2": "Выбранный размер товара." }, "cols": 3, "rows": 2 } [/block] [block:callout] { "type": "info", "title": "Произвольные свойства", "body": "Данный список может быть расширен любыми другими свойствами товаров, применимыми к вашему бизнесу." } [/block] Пример заполненного объекта Product: [block:code] { "codes": [ { "code": "\"product\": {\n \"id\": \"1234567890\",\n \"url\": \"http://website.com/product.html\",\n \"imageUrl\": \"http://website.com/image.png\",\n \"thumbnailUrl\": \"http://website.com/image_thump.png\",\n \"name\": \"Ботинки Timberland\",\n \"description\": \"Описание данного товара\",\n \"manufacturer\": \"Timberland\",\n \"category\": [\n \"Обувь\",\n \"Ботинки\"\n ],\n \"categoryId\": \"123\",\n \"currency\": \"RUB\",\n \"unitPrice\": 12990,\n \"unitSalePrice\": 10990,\n \"skuCode\": \"TBL6065RW\",\n \"stock\": 21,\n \"voucher\": \"MYVOUCHER1\",\n \"color\": \"желто-бежевый\",\n \"size\": \"41\",\n \"linkedProducts\": [Product, Product, Product, ...]\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "LineItem" } [/block] Объект LineItem определяет количество товаров. Может быть использован внутри объектов [Transaction](#transaction) и [Cart](#cart). [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**product**", "0-1": "[Product](#product) object", "1-0": "**quantity**", "2-0": "subtotal", "4-0": "shippingMethod", "5-0": "shippingCost", "1-1": "Number", "2-1": "Number", "4-1": "String", "5-1": "Number", "0-2": "**Обязательное поле**. Товар, который был добавлен в корзину или куплен.", "1-2": "**Обязательное поле**. Количество товаров данного типа, добавленных в корзину или купленных.", "2-2": "Суммарная стоимость LineItem, которая вычисляется как product.unitSalePrice * quantity.", "4-2": "**Необязательное поле**. Обычно shippingMethod определяется для корзины, однако если предоставляется возможность выбора различных методов доставки для разных товаров, данное свойство может быть использовано тут, вместо корзины.", "5-2": "**Необязательное поле**. Используете в случае, если применима логика, описанная логика для shippingMethod.", "3-0": "totalDiscount", "3-1": "Number", "3-2": "Суммарная скидка для текущего LineItem от примененных купонов к конкретному товару или же от акций, связанных с количеством покупаемых товаров, вроде \"купи 2, получи 1 бесплатно\"." }, "cols": 3, "rows": 6 } [/block] Пример: [block:code] { "codes": [ { "code": "{\n \"product\": {\n \"id\": \"1234567890\",\n \"url\": \"http://website.com/product.html\",\n \"imageUrl\": \"http://website.com/image.png\",\n \"thumbnailUrl\": \"http://website.com/image_thump.png\",\n \"name\": \"Ботинки Timberland\",\n \"description\": \"Описание данного товара\",\n \"manufacturer\": \"Timberland\",\n \"category\": [\n \"Обувь\",\n \"Ботинки\"\n ],\n \"currency\": \"RUB\",\n \"unitPrice\": 12990,\n \"unitSalePrice\": 10990,\n \"skuCode\": \"TBL6065RW\",\n },\n \"quantity\": 2,\n \"subtotal\": 10990,\n \"shippingMethod\": \"Почта России\",\n \"shippingCost\": 800\n},", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Cart" } [/block] Содержит информацию о товарах в корзине. Данный объект должен быть заполнен на всех страницах, кроме страницы подтверждения покупки (confirmation page). [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**currency**", "1-0": "**subtotal**", "5-0": "vouchers", "6-0": "voucherDiscount", "7-0": "shippingCost", "8-0": "shippingMethod", "0-1": "String", "5-1": "Array", "8-1": "String", "1-1": "Number", "6-1": "Number", "7-1": "Number", "0-2": "**Обязательное поле**. Валюта корзины в формате ISO 4217 (USD, EUR, RUB).", "1-2": "**Обязательное поле**. Сумма корзины, не включая доставку и скидки, примененные к корзине.", "5-2": "Купон(ы), которые были применены к корзине.", "6-2": "Суммарная скидка после применения всех купонов.", "7-2": "Суммарная стоимость доставки для текущей корзины.", "8-2": "Метод доставки, выбранный для текущей корзины.", "2-0": "**total**", "2-1": "Number", "2-2": "**Обязательное поле**. Суммарная стоимость корзины, включая налог, скидки и стоимость доставки.", "3-0": "**lineItems**", "3-1": "Array of [LineItem](#lineitem) objects", "3-2": "**Обязательное поле**. Товары (и их количество), представленные в корзине. Один объект LineItem для каждой разновидности товаров.", "4-0": "id", "4-1": "String", "4-2": "Уникальный идентификатор корзины." }, "cols": 3, "rows": 9 } [/block] Пример: [block:code] { "codes": [ { "code": "\"cart\": {\n \"id\": \"CART2203\",\n \"currency\": \"RUB\",\n \"subtotal\": 25000,\n \"subtotalIncludeTax\": false,\n \"vouchers\": [\n \"MYVOUCHER1\"\n ],\n \"voucherDiscount\": 500,\n \"tax\": 0,\n \"shippingCost\": 1500,\n \"shippingMethod\": \"Доставка курьером\",\n \"total\": 26000,\n \"lineItems\": [LineItems, LineItem, LineItem, ...]\n}", "language": "json" } ] } [/block] [block:callout] { "type": "warning", "body": "Убедитесь, что объект cart доступен на всех страницах вашего сайта, даже если в корзине нет ни одного товара! В этом случае **total** и **subtotal** будут равны 0, а массив **lineItems** будет пустым.\nИсключением являются страницы с типом **confirmation**. На этих страницах объекта cart быть не должно.", "title": "Важно!" } [/block] [block:api-header] { "type": "basic", "title": "Transaction" } [/block] Объект Transaction содержит информацию о совершенной покупке, которая может быть включена на странице подтверждения заказа или на странице с квитанцией к покупке. Большинство полей объекта Transaction такие же, как в объекте [Cart](#cart). Поля, уникальные для объекта Transaction: [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "**orderId**", "2-0": "isReturning", "0-1": "String", "2-1": "Boolean", "0-2": "**Обязательно поле. **Уникальный идентификатор заказа.", "2-2": "False - если пользователь только совершил заказ и впервые видит подтверждение. True - если пользователь совершил заказ ранее, а сейчас вернулся, чтобы повторно просмотреть заказ или отследить его статус (к примеру в своем профиле или в разделе \"прошлые покупки\").", "3-0": "isFirst", "3-1": "Boolean", "3-2": "True - если пользователь никогда не покупал ранее, и это его первая покупка. False - если пользовать уже покупал ранее.", "1-0": "cartId", "1-1": "String", "1-2": "Уникальный идентификатор корзины." }, "cols": 3, "rows": 4 } [/block] Все остальные поля, такие же, как и в объекте [Cart](#cart). Пример: [block:code] { "codes": [ { "code": "\"transaction\": {\n \n \"orderId\": \"123456\",\n \"isFirst\": true,\n \n //Поля из объекта Сart\n \"currency\": \"RUB\",\n \"subtotal\": 25000,\n \"vouchers\": [\n \"MYVOUCHER1\"\n ],\n \"voucherDiscount\": 500,\n \"shippingCost\": 1500,\n \"shippingMethod\": \"Доставка курьером\",\n \"total\": 26000,\n \"lineItems\": [LineItem, LineItem, LineItem, ...]\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Listing" } [/block] Объект Listing содержит список объектов [Product](#product), которые могут быть отображены, к примеру, на странице поиска или странице товарной категории. [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "1-0": "**items**", "6-0": "pagesCount", "8-0": "sortBy", "9-0": "layout", "1-1": "Array of [Product](#product) objects", "6-1": "Number", "8-1": "String", "9-1": "String", "h-3": "Примеры", "6-3": "22", "8-3": "price_desc\nprice_asc", "9-3": "list\ngrid\nmap", "1-3": "[Product, Product, Product ... ]", "1-2": "**Обязательное поле.** Список товаров, отображенных на данной странице", "6-2": "Количество страниц с товарами (если присутствует пагинация)", "8-2": "Какая сортировка применена к списку.", "9-2": "Как тип оформления списка отображен пользователю.", "0-0": "**listName**", "0-1": "String", "0-3": "\"search-results\", \"category-listing\"", "0-2": "**Обязательное поле.** Название списка.", "4-0": "query", "4-1": "String", "4-2": "Если список товаров - это результат поиска, то должен быть указан введенный запрос.", "4-3": "\"ботинки бежевые\"", "7-0": "currentPage", "7-1": "Number", "7-2": "Номер страницы, на который находится пользователь (если присутствует пагинация)", "7-3": "1", "5-0": "resultCount", "5-1": "Number", "5-2": "Количество всех товаров в данной категории или количество всех найденных товаров.", "5-3": "110", "2-0": "**categoryId**", "2-1": "String", "2-2": "**Обязательное поле для страниц с типом category** Идентификатор товарной категории. Данный элемент необходимо включать только на страницах товарных категорий (страницы, где значение digitalData.page.type равно \"category\").", "2-3": "121352", "3-0": "**category**", "3-1": "Array of String", "3-2": "**Обязательное поле для страниц с типом category** Иерархия категорий для данной категории. Это поле необходимо заполнять только на страницах товарных категорий (страницы, где значение digitalData.page.type = \"category\").", "3-3": "[\"Мужская одежда\", \"Обувь\", \"Ботинки\"]" }, "cols": 4, "rows": 10 } [/block] [block:code] { "codes": [ { "code": "\"listing\": {\n \"listName\": \"search-results\",\n \"query\": \"ботики бежевые\",\n \"items\": [Product, Product, Product, ...],\n \"sortBy\": \"price_asc\",\n \"resultCount\": 20,\n \"pagesCount\": 13,\n \"currentPage\": 2, \n \"layout\": \"grid\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Recommendation" } [/block] Объект Recommendation содержит товары, которые были рекомендованы на данной странице (используют алгоритмы рекомендаций). [block:parameters] { "data": { "1-0": "**items**", "1-1": "Array of [Product](#product) objects", "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "1-2": "**Обязательное поле.** Товары, которые были рекомендованы на данной странице.", "0-0": "**listName**", "0-1": "String", "0-2": "**Обязательное поле.** Название списка." }, "cols": 3, "rows": 2 } [/block] Пример нескольких списков рекомендаций: [block:code] { "codes": [ { "code": "\"recommedation\": [\n {\n \"listName\": \"related-products\",\n \"items\": [Product, Product, Product, ...]\n },\n {\n \"listName\": \"most-popular-products\",\n \"items\": [Product, Product, Product, ...]\n }\n]", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Campaign" } [/block] Объект Campaign описывает любые маркетинговые кампании, видео, промо или баннеры, запущенные на данной странице. [block:parameters] { "data": { "0-0": "**id**", "0-1": "String", "1-0": "name", "2-0": "description", "3-0": "category", "3-1": "String", "3-2": "Краткое описание типа маркетинговой кампании, к примеру: \"video\", \"banner\", \"promo\". Либо вендора: \"Driveback\", \"Giftery\", и т.д.", "4-0": "subcategory", "4-1": "String", "4-2": "Краткое описание подкатегории маркетинговой кампании, к примеру \"Привлечение подписчиков\", \"Распродажа\", \"Товары на акции\".", "6-0": "position", "6-1": "String", "6-2": "Где и как данная кампания отображается, к примеру: \"lightbox\", \"top\", \"bottom\", \"side(right)\", \"after-navigation\", \"slot12\".", "5-0": "design", "5-1": "String", "5-2": "Название креатива, к примеру \"Картинка с ребенком и мамой\".", "1-1": "String", "2-1": "String", "2-2": "Краткое описание маркетинговой кампании.", "0-2": "**Обязательное поле.** Уникальный идентификатор кампании.", "1-2": "Название кампании." }, "cols": 3, "rows": 7 } [/block] [block:code] { "codes": [ { "code": "{\n\t\"id\": \"PROMO123\",\n \"name\": \"Распродажа летней коллекции\",\n \"description\": \"Описание акции/баннера\",\n \"category\": \"Баннер\",\n \"subcategory\": \"Скидки\",\n \"design\": \"Синий вариант\",\n \"position\": \"top\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Context" } [/block] Объект Context содержит информацию об окружении и контексте текущего посещения. [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "0-0": "userAgent", "0-1": "String", "0-2": "Информация о браузере пользователя. **Данное поле заполняется автоматически.**", "1-0": "campaign", "1-1": "Object", "1-2": "Информация об атрибуции посещения. Зачастую напрямую связана с UTM-метками, по которым пользователь попал на сайт во время последнего непрямого захода.", "2-0": "* name", "3-0": "* source", "4-0": "* medium", "2-1": "String", "3-1": "String", "4-1": "String", "5-0": "* term", "6-0": "* content", "5-1": "String", "6-1": "String", "2-2": "Название рекламной кампании. Чаще всего соответствует метке utm_campaign.", "3-2": "Рекламная площадка. Чаще всего соответствует метке utm_source.", "4-2": "Тип реклама. Чаще всего соответствует метке utm_medium.", "5-2": "Ключевая фраза. Чаще всего соответствует метке utm_term.", "6-2": "Контейнер для дополнительной информации о рекламной кампании. Чаще всего соответствует метке utm_content.", "7-0": "ip", "7-1": "String", "7-2": "IP-адрес пользователя" }, "cols": 3, "rows": 8 } [/block] Ниже приведен пример заполнения объекта Context для пользователя, использующего браузер Mozilla, ip-адрес 46.250.135.5 и пришедшего на сайт по ссылке http://website.com/?utm_campaign=sale_05_06_2016&utm_medium=cpc&utm_source=criteo. [block:code] { "codes": [ { "code": "\"context\": {\n\t\"userAgent\": \"Mozilla/5.0 (Macintosh) Gecko/20100101 Firefox/46.0\",\n \"campaign\": {\n\t\t\"name\": \"sale_05_06_2016\",\n \t\"medium\": \"cpc\",\n \t\"source\": \"criteo\"\n\t},\n\t\"ip\": \"46.250.135.5\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Review" } [/block] Объект Review содержит отзывы к данному товару. [block:parameters] { "data": { "0-0": "body", "1-0": "rating", "0-1": "String", "1-1": "Number", "0-2": "Текст отзыва.", "1-2": "Оценка товара, соответствующая данному отзыву. К примеру 5 или 3.5.", "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание" }, "cols": 3, "rows": 2 } [/block] [block:code] { "codes": [ { "code": "\"reviews\": [\n {\n \"body\": \"Отличные ботинки!\",\n \"rating\": 5.0\n },\n {\n \"body\": \"Довольно неплохие в холодную погоду\",\n \"rating\": 4.5\n }\n]", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Event" } [/block] Объект Event используется для отслеживания поведения пользователя на сайте, которое вы хотели бы использовать для сегментирования или аналитики. Более детально прочитать о том, как отслеживать и публиковать события вы можете в разделе [Работа с событиями](/docs/работа-с-событиями). [block:parameters] { "data": { "h-0": "Ключ", "h-1": "Тип", "h-2": "Описание", "h-3": "Примеры", "1-0": "category", "1-1": "String", "1-2": "Название коллекции событий, связанных с конкретным вендером, виджетом, разделом сайта или определенной воронкой взаимодействия с сайтом.", "1-3": "Ecommerce\nEmail\nRegistration", "0-0": "**name**", "0-1": "String", "0-2": "**Обязательно поле.** Уникальное название события, которое описывает совершенное действие.\n\nМы рекомендуем использовать простые для восприятия и читаемые названия. \n\nНаилучшим названием будет являться глагол в прошедшем времени + существительное.", "0-3": "Completed Order\nAdded to Cart\nRemoved from Cart\nPlayed Video\nSubmitted Form" }, "cols": 4, "rows": 2 } [/block] [block:callout] { "type": "success", "title": "Дополнительные поля", "body": "Объект Event может содержать неограниченное количество дополнительных полей, которые описывают метаданные, связанные с событием. Например, информация о товаре, который был добавлен в корзину или название PDF-документа, который был скачан с сайта." } [/block] Пример события добавления товара в корзину: [block:code] { "codes": [ { "code": "\"events\": [\n {\n \"name\": \"Product Added\",\n \t\"category\": \"Ecommerce\",\n \"items\": [Product, Product, ...]\n }\n]", "language": "json" } ] } [/block] Пример события подписки на рассылку: [block:code] { "codes": [ { "code": "\"events\": [\n {\n \t\"name\": \"Subscribed\",\n \t\"category\": \"Email\",\n \"user\": {\n \"email\": \"johndoe@example.com\"\n } \n }\n]", "language": "json" } ] } [/block]