Саммари по MP

  1. Сохранять источник/канал/ключевое слово/объяву чтобы источник не перезатирался
  2. Используем ni=1, чтобы не плодить новый сеанс
  3. Нужно хранить ip, и User-Agent пользователя и передавать их в теле запроса.

    В самой справке об этом тоже немного упоминается:  https://developers.google.com/analytics/devguides/collection/protocol/v1/reference?hl=ru#post
    Вот параметры, которые позволяют переопределить ip и user-agent:  https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=ru#uip и https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=ru#ua

  4. Использовать POST запрос

Главное про MP

Проблемы MP :

  1. если у посетителя были заходы со смартфона, то после выполнения запроса последний заход становится с desktop
  2.  если CID клиента не найден в GA, то об этом нет какого-то оповещения, источник трафика отображается просто как прямой заход
  3. при отправке MP создается новая сессия.
  4. Если специально в запросе МР не указывать источник, то он не перезапишется. Если же пользователь за это время сам сменил источник то транзакция будет отнесена к новому источнику. Присваивается последний не прямой переход
  5. Можно увеличить время сеанса, но уверена, что время ожидания кампании решит проблему со сменой источника. Это будет справедливо, если пользователь затем зайдет по прямому трафику. А если по объявлению из другой кампании, или из органики, или с другого сайта, то, мне кажется, это не поможет.
  6. Если не указывать cn, cm и cs, то сессия примет источник и канал предыдущей непрямой сессии. В параметрах MP всегда передавать источник канал, ключевое слово и т.д. А то перезатерется
  7. Уже достаточно давно если послать в течение одной сессии 2 одинаковые транзакции, то Google их будет считать одной. Если ты подождешь 30 минут или закроешь сессиию/начнешь сессию с другого источника, то транзакций будет в GA две, хоть и совпадают все остальные параметры.
  8. Убирать галку фильтрации ботов Exclude all hits from known bots and spiders
  9. Custom dimension должен быть user scope, тогда и product метрики сегментироваться будут
  10. Лучше передавать pageview, чтобы например транзакцию и все предыдущие шаги представить в виде воронки для целей.
  11. Если отправить запрос с событием и ni=1 с отсутствием других активных сессий пользователя, сессия не создастся, а событие передастся.
  12. нужно хранить ip, и User-Agent пользователя и передавать их в теле запроса,чтобы корректно определялся девайс и т.д. и т.п. В самой справке об этом тоже немного упоминается: https://developers.google.com/…/protocol/v1/reference…Вот параметры, которые позволяют переопределить ip и user-agent: https://developers.google.com/…/protocol/v1/parameters…
    https://developers.google.com/…/protocol/v1/parameters…

Про DAX

http://moonexcel.com.ua/uroki-dax2-calculate_ru

Каким образом мы получили в расчетном поле Count_All_Product цифры 16? Объяснение в том, что мы сняли для этого поля все фильтры, которые были применены в сводной таблице (каждая строка в сводной таблице это отдельный фильтр), с помощью функции ALL(). То есть, другими словами, функция ALL(Demo) дает команду снять все фильтры для расчетного поля Count_All_Product, которые применяются к таблице Demo.

Теперь давайте внесем незначительные изменения в нашу формулу и посмотрим на результат.

=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))

Мы изменили аргумент для функции ALL(), заменив Demo на Demo [Product]. Теперь фильтры будут сняты не для всей таблицы Demo, а только для ее столбца Demo[Product].

———————-

https://habrahabr.ru/post/245631/—

Шаг 2. Усложняем: Посчитаем долю каждой записи в общих продажах.

Здесь, как можно заметить окно открывается через все записи датасэта, попробуем аналогичную вещь в PowerPivot:

=[Отгрузка шт]/CALCULATE(SUM([Отгрузка шт]);ALL('Таблица1'))

Основное внимание обратим к знаменателю: Я уже упоминал выше что основное отличие вычисляемого поля от меры заключается в том что в поле формулы считают по горизонтали ( в рамках одной записи) а меры – по вертикали ( в рамках одного атрибута). Типо ALL свнимает всю фильтрацию, используем если нужны статичные данные.

 

Советы по GTM

Использование DOM элементов (document ready)

Если вы в своём коде собираетесь обращаться к элементам которые находятся на страницы (кнопки, формы, поля и пр.), то свой код нужно оборачивать в такую конструкцию:

$(document).on('ready', function(){
    тут_вставьте_ваш_код
});

Это даст гарантию того, что ваш код не сработает раньше, чем загрузятся элементы DOM (т.е. страница).

 

Сохранность кода (замыкание)

При интеграции кода GTM в глобавльную обрасть видимости попадают все ваши объявленные переменные, что может повлечь перезатирания переменных, которые используются на сайте. Для экранирования вашего кода стоит использывать замыкания. (https://developer.mozilla.org/ru/docs/Web/JavaScript/Closures)

(function(){
    тут_вставьте_ваш_код
})();

Узнать текущую и предшествующиую страницуwindow.location + document.referer

  • Чтобы узнать с какой страницы пришел пользователь стоит использовать глобальную переменную document.referrer
  • Для того, чтобы узнать на какой странице сейчас находится пользователь стоит использовать переменную window.location (http://javascript.ru/window-location):

<tbody> </tbody>

Свойство Описание Пример
hash часть URL, которая идет после символа решетки ‘#’, включая символ ‘#’ #test
host хост и порт www.google.com:80
href весь URL http://www.google.com:80/search?q=javascript#test
hostname хост (без порта) www.google.com
pathname  строка пути (относительно хоста) /search
port номер порта 80
protocol протокол http:
search часть адреса после символа ?, включая символ ? ?q=javascript

Пример:

dataLayer.push({'event': 'GAevent', 'eventCategory': 'категория', 'eventAction': 'действие', 'eventLabel': window.location.href});

Проверять есть ли jQuery на странице

Иногда разработчики сайтов не используют jQuery, поэтому стоит проверить загружен ли он на странице.
Для этого зайдите в консоль и в строке ввода вставьте jQuery. Если вывелось Uncaught ReferenceError: jQuery is not defined(…), то значит jQuery не подключен на странице и стоит его подключить или попросить разработчиков.

Если же jQuery подключен, но ваш код срабатывает раньше чем он загружается, то можно использовать функцию window.onload:

window.onload = function() {
    тут_вставьте_ваш_код
}