Яков, здравствуйте. Сделала несколько проектов по вашему видео. Спасибо вам. Но в одном из проектов передаются лишь данные при заполнении формы с моего компьютера, с других данные не передаются. Хотя в GTM когда заполняю с других ПК вижу в переменных все данные.
Добрый день. Сложно так сказать, не видя вашего режима отладки GTM и не зная всех деталей. Перепроверьте еще раз все конструкции для извлечения значений из полей формы, чтобы они были универсальными. Может быть, в каком-то браузере или версии не отрабатывает так, как нужно, или на определенном типе устройств. Проводите отладку итерационно
здравствуйте! а почему заявки приходят с десктопа, а с мобильного нет? я не ставила гугл аналитику и шаг с куки для id тоже пропустила. мне нужно отслежиdfть с какого реламного места пришла заявка и все.
Яков, привет! Подскажи пожалуйста, если транзакция была 1.10.2021, а событие refund через measurement protocol я отправил лишь 10.10.2021, должна ли транзакция исчезнуть в отчете за 1.10.2021? У меня эта транзакция фигурирует в отчете за 1.10.2021 и генерит доход, хотя мне нужно, чтобы доход по отмененной транзакции не учитывался. Как это можно реализовать?
Добрый день. Удалять/изменять исторические данные в Google Analytics нельзя. В нем есть возможность создать запрос на удаление данных, но это вам не подойдет
@@YakovOsipenkov Спасибо за ответ. Я вижу решение проблемы в том, чтобы передавать событие транзакция по MP при факте оплаты онлайн или получении товара в пункте выдачи. Подскажи пожалуйста, как можно записать транзакцию датой оформления заказа, а не датой доставки в другой город и оплаты при получении, ведь это могут быть разные месяца?
@@ИванИванов-ы7р3у это всегда так. Дата оформления заказа не равна дате получения заказа человеком по факту и его оплаты. Поэтому вам нужно определиться как вы должны смотреть в отчете в итоге - когда человек оформил заказ на сайте (условно 17.10.2021) или когда он оплатил и получил его (например, 31.10.2021). При передаче через MP дата не указывается, и передаваемое событие будет записано в ту дату, когда оно совершено
@@YakovOsipenkov Спасибо за информацию. Пришел к тому, что буду мэтчить в data studio данные аналитикса и данные по реальным продажам. Сначала путем импорта из google sheets, а потом уже реализуем прокидывание данных из БД в Data Studio
сложно так сказать.. либо пренебрегать этими обращениями, либо пытаться найти причину. вполне вероятно, что на уровне браузера есть какая-то блокировка по трекерам
@@YakovOsipenkov я наверное неправильно выразился(. Я имел ввиду ваш метод CRM(GoogleSheets). я сделал так же как у вас на видео, но с маков заявки не заходят(
@@vladtrokhanovsky2180 вы уверены, что только с маков. а со всех остальных ОС приходят? Возможно, вы неверно настроили сам Google Tag Manager и его тег
var SHEET_NAME = ""; var SHEET_KEY = ""; function doPost(e) { var lock = LockService.getPublicLock(); lock.waitLock(30000); // Подождать до 30 секунд, пока завершатся другие процессы try { // Запись данных - вы можете использовать несколько альтернативных адресатов var doc = SpreadsheetApp.openById(SHEET_KEY); var sheet = doc.getSheetByName(SHEET_NAME); // Предполагается, что заголовок находится в строке 1, но вы можете переопределить header_row в данных GET / POST var headRow = e.parameter.header_row || 1; var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; var nextRow = sheet.getLastRow() + 1; // Получаем следующую строку var row = []; // Перебираем столбцы заголовков for (i in headers) { if (headers[i] == "Timestamp") { // Особый случай, если вы используете столбец Timestamp row.push(new Date()); } else { // Иначе используется имя заголовка для получения данных row.push(e.parameters[headers[i]]); } } // Наиболее эффективно устанавливать значения в виде массива [] sheet.getRange(nextRow, 1, 1, row.length).setValues([row]); // Возвращаем успешный результат в виде JSON return ContentService .createTextOutput(JSON.stringify({ "result": "success", "row": nextRow })) .setMimeType(ContentService.MimeType.JSON); } catch (e) { // В случае ошибки вернуть это return ContentService .createTextOutput(JSON.stringify({ "result": "error", "error": e })) .setMimeType(ContentService.MimeType.JSON); } finally { // Снимаем блокировку, чтобы другие процессы могли продолжить работу lock.releaseLock(); } }
Походу CRM из Google Sheets больше не работает в 2023 для GA4, потому что нужно передавать (Секретный ключ API для Measurement Protocol) - У вас в коде он не указан. И у вас нет в GTM передачи события Status (ВЫПОЛНЕНО, В ОБРАБОТКЕ, ОТМЕНЕНО). В общем все работает, но статус в GA4 не передается. 🙅♂
да, потому что этот пример изначально был показан для Universal Analytics, на базе которой можно построить сквозную аналитику. В 2021 году сделать это для GA4 не представлялось возможным
Яков, здравствуйте. Сделала несколько проектов по вашему видео. Спасибо вам. Но в одном из проектов передаются лишь данные при заполнении формы с моего компьютера, с других данные не передаются. Хотя в GTM когда заполняю с других ПК вижу в переменных все данные.
Добрый день. Сложно так сказать, не видя вашего режима отладки GTM и не зная всех деталей. Перепроверьте еще раз все конструкции для извлечения значений из полей формы, чтобы они были универсальными. Может быть, в каком-то браузере или версии не отрабатывает так, как нужно, или на определенном типе устройств. Проводите отладку итерационно
@ спасибо, Яков
здравствуйте! а почему заявки приходят с десктопа, а с мобильного нет? я не ставила гугл аналитику и шаг с куки для id тоже пропустила. мне нужно отслежиdfть с какого реламного места пришла заявка и все.
Добрый день. К сожалению, так сказать не могу, нужно проводить диагностику вашего контейнера и кода
это мой код спионеренный, может в нем проблема((
Яков, привет! Подскажи пожалуйста, если транзакция была 1.10.2021, а событие refund через measurement protocol я отправил лишь 10.10.2021, должна ли транзакция исчезнуть в отчете за 1.10.2021? У меня эта транзакция фигурирует в отчете за 1.10.2021 и генерит доход, хотя мне нужно, чтобы доход по отмененной транзакции не учитывался. Как это можно реализовать?
Добрый день. Удалять/изменять исторические данные в Google Analytics нельзя. В нем есть возможность создать запрос на удаление данных, но это вам не подойдет
@@YakovOsipenkov Спасибо за ответ. Я вижу решение проблемы в том, чтобы передавать событие транзакция по MP при факте оплаты онлайн или получении товара в пункте выдачи. Подскажи пожалуйста, как можно записать транзакцию датой оформления заказа, а не датой доставки в другой город и оплаты при получении, ведь это могут быть разные месяца?
@@ИванИванов-ы7р3у это всегда так. Дата оформления заказа не равна дате получения заказа человеком по факту и его оплаты. Поэтому вам нужно определиться как вы должны смотреть в отчете в итоге - когда человек оформил заказ на сайте (условно 17.10.2021) или когда он оплатил и получил его (например, 31.10.2021). При передаче через MP дата не указывается, и передаваемое событие будет записано в ту дату, когда оно совершено
@@YakovOsipenkov Спасибо за информацию. Пришел к тому, что буду мэтчить в data studio данные аналитикса и данные по реальным продажам. Сначала путем импорта из google sheets, а потом уже реализуем прокидывание данных из БД в Data Studio
Да, такой вариант возможен. Я бы тоже делал сведение не на стороне Google Analytics
если не трекает в СRM с MACов, что делать?
Заранее спасибо
сложно так сказать.. либо пренебрегать этими обращениями, либо пытаться найти причину. вполне вероятно, что на уровне браузера есть какая-то блокировка по трекерам
@@YakovOsipenkov я наверное неправильно выразился(. Я имел ввиду ваш метод CRM(GoogleSheets). я сделал так же как у вас на видео, но с маков заявки не заходят(
@@vladtrokhanovsky2180 вы уверены, что только с маков. а со всех остальных ОС приходят? Возможно, вы неверно настроили сам Google Tag Manager и его тег
@@YakovOsipenkov а в чем может быть неправильность?) Я правда функцию другую вставил в скрипт, но...
var SHEET_NAME = "";
var SHEET_KEY = "";
function doPost(e) {
var lock = LockService.getPublicLock();
lock.waitLock(30000); // Подождать до 30 секунд, пока завершатся другие процессы
try {
// Запись данных - вы можете использовать несколько альтернативных адресатов
var doc = SpreadsheetApp.openById(SHEET_KEY);
var sheet = doc.getSheetByName(SHEET_NAME);
// Предполагается, что заголовок находится в строке 1, но вы можете переопределить header_row в данных GET / POST
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow() + 1; // Получаем следующую строку
var row = [];
// Перебираем столбцы заголовков
for (i in headers) {
if (headers[i] == "Timestamp") { // Особый случай, если вы используете столбец Timestamp
row.push(new Date());
} else { // Иначе используется имя заголовка для получения данных
row.push(e.parameters[headers[i]]);
}
}
// Наиболее эффективно устанавливать значения в виде массива []
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
// Возвращаем успешный результат в виде JSON
return ContentService
.createTextOutput(JSON.stringify({ "result": "success", "row": nextRow }))
.setMimeType(ContentService.MimeType.JSON);
} catch (e) {
// В случае ошибки вернуть это
return ContentService
.createTextOutput(JSON.stringify({ "result": "error", "error": e }))
.setMimeType(ContentService.MimeType.JSON);
} finally { // Снимаем блокировку, чтобы другие процессы могли продолжить работу
lock.releaseLock();
}
}
у вас получилось с кодом?
Походу CRM из Google Sheets больше не работает в 2023 для GA4, потому что нужно передавать (Секретный ключ API для Measurement Protocol) - У вас в коде он не указан. И у вас нет в GTM передачи события Status (ВЫПОЛНЕНО, В ОБРАБОТКЕ, ОТМЕНЕНО). В общем все работает, но статус в GA4 не передается. 🙅♂
да, потому что этот пример изначально был показан для Universal Analytics, на базе которой можно построить сквозную аналитику. В 2021 году сделать это для GA4 не представлялось возможным