Как связать yandex metrika clientID с пользователем на сайте и посмотреть полный путь его по сайту?

Яндекс Метрика позволяет довольно плотно следить за действиями пользователя: откуда пришел, где был, каких целей на сайте достиг и т.д.

Мы можем отследить для конкретного пользователя на сайте его clientID для последующего анализа его посещения. 

Как это сделать: 

1. Подключаем Яндекс Метрику в проект. 

2. В JS на определенной странице делаем извлечение и сохранение Metrika ClientID: 

$(function(){
  var metrikaID = XXXXXXX;
  function saveClientID(){    
    ym(metrikaID, 'getClientID', function(clientID) {       
      as.sys.request("metrika", "saveClientID", {
        data: { clientID: clientID },
        onSuccess: function (data) {
          //console.log("save clientID",data);
          //if (data.result && data.data && data.data.length) { }
        }
      });
    });
  }
  setTimeout( saveClientID, 500);	
});

3. Реализуем процедуру сохранения ClientID и связи с username пользователя. 

CREATE   PROCEDURE [dbo].[request_metrika_saveClientID]
	@parameters ExtendedDictionaryParameter READONLY,  -- or ExtendedDictionaryParameter
	@username nvarchar(32)
AS
BEGIN
	declare @clientID nvarchar(512) = (select value2 from @parameters where [key]='clientID')
	
	declare @falconFR nvarchar(512) = (select value2 from @parameters where [key]='falconFR')
	declare @userIP nvarchar(512) = (select value2 from @parameters where [key]='userIP')
	declare @userAgent nvarchar(512) = (select value2 from @parameters where [key]='userAgent')
	print  @userAgent
	if(not exists(select id from as_users
					where username = @username and  metrikaClientIDs like '%'+@clientID+',%' )) begin 
		update as_users 
		set metrikaClientIDs = isnull(metrikaClientIDs, '') + @clientID + ','
		where username = @username
	end

	if(not exists(select id from as_users
					where username = @username and  userIP like '%'+@userIP+',%' )) begin 
		update as_users 
		set userIP = isnull(userIP, '') + @userIP + ','
		where username = @username
	end

	if(len(@falconFR)> 0) begin 
		update as_users set falconFR = @falconFR where username = @username and falconFR is null 
	end 

    -- SELECT 1 Msg, Result
	select 'OK' Msg, 1 Result

END

Здесь помимо сохранения данных по метрике, мы еще сохраняем первые реферрер (откуда пришел), IP и userAgent. 

4. Теперь имея clientID мы можем сформировать ссылку для перехода в Яндекс Метрику для просмотра данных по данному посетителю.

Вывести эту ссылку можно, к примеру, на карточке пользователя.

Пример: 

SELECT 'Metrika ClientID: ' +
         isnull(STUFF((
                    SELECT  '<'+'a href="https://metrika.yandex.ru/stat/visitors?period=month&filter=(EXISTS+ym%3Au%3AuserID+WITH+(ym%3Au%3AclientID%3D%3D%2527'+value+'%2527))&id=XXXXXX" class="mr-2 badge badge-secondary">'+value+''
                    from dbo.split(metrikaClientIDs, ',')
                  	where len(value)>0                  		
                    FOR XML PATH(''), TYPE
               ).value('.','nvarchar(max)') ,1,0, '' ), '')

В итоге ссылка будет переводить нас на Яндекс Метрику, где мы можем смотреть детали по активности данного посетителя. 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы

Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK