Отслеживаем источники заказов на сайте

Конечно же вы используете рекламу своих товаров и хотите отслеживать, по какому источнику рекламы пришел к вам заказ. При переходе из всех источников к ссылке на товар добавляются utm-метки, по которым, как раз и видно, из какого источника пришел покупатель.


При входе пользователя с utm-меткой на сайт необходимо эту метку где-то сохранить. Для этих целей подходят или куки (если пользователь дал вам согласие на их использование), или сессия пользователя. Рассмотрим вариант с куками, т.к. он более надежный (вариант проверки согласился ли пользователь на использование куков оставлю вне этого поста).

В обработчиках событий сайта добавляем обработчик подключения пролога "OnBeforeProlog":

	$eventManager = \Bitrix\Main\EventManager::getInstance();
	$eventManager->addEventHandler('main', 'OnBeforeProlog', array('initEvents', 'OnBeforeProlog'));
	class initEvents
	{
		const UTMS = [
			'utm_source',
			'utm_medium',
			'utm_campaign',
			'utm_term',
			'utm_content',
			'utm_position',
			'utm_matchtype',
			'utm_placement',
			'utm_network',
		];
	
		function OnBeforeProlog()
		{
			$context = Application::getInstance()->getContext();
			$request = $context->getRequest();
			$isAdminSection = $request->isAdminSection();
			if (!$isAdminSection)
			{
				foreach (self::UTMS as $key)
				{
					if(isset($_GET[$key]) && strlen($_GET[$key])>0){
						$cookie = new \Bitrix\Main\Web\Cookie($key, $_GET[$key]);
						$cookie->setDomain(домен сайта);
						Application::getInstance()->getContext()
							->getResponse()->addCookie($cookie);
						setcookie($key, $cookie->getValue(), 
							time()+60 * 60 * 24 * 30, '/',$cookie->getDomain()); 
						//если по какой-то причине не сработало сохранение в куки в формате D7
					}
				}
			}
		}	

	}

После этого создадим в свойствах заказа все необходимые метки (для всех типов пользователей). Самое главное, символьный код свойства должен совпадать с названием нужной метки.

Далее в событии начала сохранения заказа добавляем сохранение этих меток (при их наличии) в заказ:

$eventManager->addEventHandler('sale','OnSaleOrderBeforeSaved',array('initEvents','saleOrderBeforeSaved'));
function saleOrderBeforeSaved(Main\Event $event)
	{
		/** @var \Bitrix\Sale\Order $order */
		$order = $event->getParameter("ENTITY");

		/** @var \Bitrix\Sale\PropertyValueCollection $propertyCollection */
		$propertyCollection = $order->getPropertyCollection();

		$propsData = [];

		/**
		 * Перебираем свойства и изменяем нужные значения
		 * @var \Bitrix\Sale\PropertyValue $propertyItem
		 */
		foreach ($propertyCollection as $propertyItem) {

			$propCode = $propertyItem->getField("CODE");
			if(in_array($propCode,self::UTMS)){
				if(isset($_COOKIE[$propCode]) && strlen($_COOKIE[$propCode])>0){
					$propertyItem->setValue($_COOKIE[$propCode]);
				}
			}
		}

	}
Количество показов: 1
04.11.2021

Возврат к списку

Если вам была полезна статья можете

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.