Сейчас в сети: 803
Настройка целей, отслеживание электронной торговли, многоканальные последовательности и тд
Подсказки
star_border
Ответить

dataLayer и 8k

Студент ✭ ✭

Добрый день!

Есть заказ в 50 позиций. Необходимо его зафиксировать в аналитике. При попытки отправить все 50 позиций - push не принимается сервером, т.к. ограничение в 8КБ. При разбивании на блоки по 10 товаров - фиксируется только последний блок (purchase массив товаров):

 

var arProducts = purchase;
var i = 0;
purchase = new Array();
while (arProducts.length > 0) {
    purchase.push(arProducts.shift());
    i++;
    if (i > 10) {
        i = 0;
        dataLayer.push({
            'ecommerce': {
                purchase: {
                    'actionField': {
                        'id': '123',
                        'affiliation': 'test',
                        'revenue': '100',
                        'tax': '18'
                    },
                    'products': purchase
                }
            }
        });
        purchase = new Array();
    }
}

 

 

Пробовали переделать на события с аналогичной разбивкой, в событиях фиксируются первых 10 товаров.

Как исправить или донастроить, чтобы в транзакцию попадали все 50 товаров?

 

1 Ответ экспертаverified_user

Утвержденные решения
Лучший ответ.
Решение
Утвердил автор темы Aleksandr G
Июль

dataLayer и 8k

Студент ✭ ✭

О да! Решение оказалось таким:

Отправляем блоками чуть меньше 8К, для каждого блока отправка суммы товаров этого блока, в поле coupon - отправка текущего времени + номер блока (чтобы не повторялось). Заказы начали склеиваться и нормально обрабатываться. Главное отправлять в каждом блоке разные coupon и (возможно) сумму заказа.

Просмотреть решение в исходном сообщении


Все ответы

Re: dataLayer и 8k

Ведущий участник
Добрый день, Александр!

А если отправить 10 заказов с одинаковыми номерами, но разными составами?



С уважением,
Анатолий

Re: dataLayer и 8k

Студент ✭ ✭
Тогда фиксирует последний заказ

Re: dataLayer и 8k

Ведущий участник
После формирования заказа из 10-ти позиций Вы отдельно его отправляете или только добавляете в очередь и один раз отправляете?



С уважением,
Анатолий

Re: dataLayer и 8k

Студент ✭ ✭
Каждый раз отдельно, жду выполнения dataLayer.push() и ставлю следующий на отправку

Re: dataLayer и 8k

Ведущий участник
При этом в отладчике браузера на вкладке "Network" видно, что все запросы к серверу Google есть и они со статусом 200OK?



С уважением,
Анатолий

Re: dataLayer и 8k

Студент ✭ ✭
Да, именно все уходит и все в статусе ОК

Re: dataLayer и 8k

Ведущий участник
Если я не ошибаюсь, то для Universal Analytics есть такое ограничение:
Для каждого ресурса устанавливается лимит в 20 обращений, который возобновляется со скоростью 2 обращения в секунду.

Но это может и не распространятся на электронную торговлю.
Как вариант, может быть внедрить что-то из серии setTimeOut, чтобы между запросами было какое-то время?



С уважением,
Анатолий

Re: dataLayer и 8k

Студент ✭ ✭
Анатолий, не помогло, фиксируется только последний кусок

Re: dataLayer и 8k

Ведущий участник
Александр, можно взглянуть на сайт?



С уважением,
Анатолий