UTM метки для MODX Revo / Laravel
Всем привет! Сегодня я хочу рассказать зачем utm метки и как их сохранить
Для чего вообще нужны UTM метки?
UTM метки это как теги на сайте, которые добавляются в конец адресной строки.
Использование UTM меток очень помогает оценить, проанализировать и отследить трафик сайта.
Например, у нас в компании метки отправляются в CRM, соответственно, мы можем понять какая реклама приносит нам больше продаж, а какая в пустую тратит бюджет.
Параметры UTM меток
Метки представляют с собой GET-параметры, которые состоят из параметра и значения:
utm_source — наименование рекламной площадки.
Этот параметр является обязательным, он позволяет указать источник трафика, например: yandex, google, mail, vk
utm_medium — тип рекламы.
Этот параметр является обязательным, он позволяет указать тип рекламы, обычно туда указывают:
- display — это баннерная реклама;
- cpc (cost per click) — это контекстная реклама;
- social_cpc — это реклама в социальных сетях.
utm_campaign — наименование рекламной компании.
Этот параметр является обязательным, здесь указывают любое наименование рекламной компании, которая позволит различать рекламные компании в отчетах.
Необязательные параметры:
- utm_term — ключевое слово, с которого перешёл посетитель сайта;
- utm_content — доп. инфа, если все параметры меток совпадают, её можно отслеживать
Вкратце разобрались, что из себя представляют данные метки, теперь возникает задача получать их в заявках и обрабатывать.
Для MODX Revolution я выпустил компонент под названием utmMark, доступен он в репозитории modstore.pro, вот ссылка https://modstore.pro/packages/utilities/utmmark
Исходники компонента у меня в репозитории https://github.com/igamov/utmMark
В данном компоненте, содержится один плагин, сниппет, и чанк.
Плагин срабатывает на событие OnHandleRequest, проверяет utm метки, если они есть сохраняет их в cookie
Дальше нам необходимо получить метки в форме, для этого нужно просто запустить сниппет utmMark в форме, появятся поля type="hidden"
Соответственно Вам останется только перечислить поля в Formit
Если у вас своя отправка, то лучше всего получать значение из cookie прям в php и не придется запускать сниппет.
В настройках вы можете перечислить через запятую параметры utm меток, ключ - utmmark_marks
Не так давно обновил компонент, и добавил возможность отображать UTM метки в заказах miniShop2.
Сохранение UTM меток в Laravel
Приведу пример, может кому пригодится. Реализовал сохранение меток в Laravel, для этого создал Middleware utmMark
<?php
namespace App\Http\Middleware;
use Closure;
class utmMark
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!session('checked_utm')) {
$utmMarks = $request->only([
'utm_source',
'utm_medium',
'utm_campaign',
'utm_term',
'utm_content'
]);
if (empty($utmMarks['utm_source'])) {
$original_ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
switch ($original_ref) {
case 'https://www.google.ru/':
case 'https://www.google.com/':
$utm_source = 'google';
break;
case 'https://yandex.ru/':
$utm_source = 'yandex';
break;
default:
$utm_source = '';
}
$utmMarks['utm_source'] = $utm_source;
}
if(empty($utmMarks['utm_campaign'])){
$original_ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
switch ($original_ref) {
case 'https://www.google.com/':
case 'https://www.google.ru/':
case 'https://yandex.ru/':
$utmMarks['utm_campaign'] = 'organic';
break;
}
}
session(['utm_marks'=>json_encode($utmMarks)]);
session(['checked_utm' => true]);
}
return $next($request);
}
}
Получение значение из меток:
if(session('checked_utm')) {
$utm_marks = json_decode(session('utm_marks'), 1);
$utm_source = Arr::get($utm_marks, 'utm_source', "site.ru");
$utm_medium = Arr::get($utm_marks, 'utm_medium', "");
$utm_campaign = Arr::get($utm_marks, 'utm_campaign', "");
$utm_content = Arr::get($utm_marks, 'utm_content', "");
$utm_term = Arr::get($utm_marks, 'utm_term', "");
}
02.12.2020 / 6580
Комментарии (0)