Как связать 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

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK