Скрипт подмены номера телефона для отслеживания источников трафика

Зачем подменять телефонный номер?

Рано или поздно вам захочется сэкономить на рекламе, оптимизировав неэффективные рекламные кампании или вовсе отключив их. А, может быть, вам придётся запустить новый инструмент привлечения трафика. В любом случае вам понадобится статистика обращений с сайта.

Если с письмами всё более менее понятно — настроили цели в Google Analytics или Яндекс.Метрике и получили нужные цифры, то с телефонами обычно беда — как отделить звонки с поискового трафика от звонков с контекстной рекламы или e-mail рассылки, не спрашивая у звонящего, по какой рекламе он перешёл на сайт? Решение уже давно не новое и до безобразия простое.

Подмена номера телефона с помощью JS

Нам понадобится…

  1. Несколько телефонных номеров (количество номеров будет зависеть от того, на сколько групп вы хотите разделить звонящих).
  2. Простой скрипт, который мы установим на сайте
  3. Секретарша, которая будет вести учёт звонков по каждому номеру (либо crm система, которая делает это автоматически)

С пунктами 1 и 3 вроде всё просто. Ну, а простенький скрипт подмены номера я раздаю. Сразу оговорюсь — это самая простая версия скрипта и она подойдёт не под все задачи. Но, думаю, для большинства случаев он вполне сгодится.

Логика работы скрипта

  1. Смотрим Referer (с какой страницы пришёл посетитель) для того, чтобы определить, не пришёл ли он с результатов поиска
  2. Смотрим URL страницы, на которую попал посетитель и по utm-меткам определяем источник трафика
  3. Если посетитель пришёл из интересного нам источника, меняем телефонный номер на нужный нам
  4. Записываем в cookies источник трафика для того, чтобы, гуляя по сайту или придя в следующий раз напрямую, посетитель всегда видел этот же номер (до тех пор пока он не придёт с другого интересного нам источника).

Как установить скрипт

  1. Добавить в корень сайта файл с именем phone-replace.js. Содержимое файла:
    /* Сайт автора: internet-marketolog.com */
    
    $(document).ready(
    	function change() 
    	{ 
    		//Настройка номеров телефонов
    		var remarketing = 'rem-000-00-00';
    		var search = 'search-000-00-00';
    		var cpc = 'cpc-000-00-00';
    		var email = 'email-000-00-00';
    
    		var phone = '';
    
    		//Код, который определяет по cookies, какой телефон нужно показать
    		var source = get_cookie ( 'source_type' );
    		if ( source == 'remarketing' ) phone = remarketing;
    		else if ( source == 'search' ) phone = search;
    		else if ( source == 'cpc' ) phone = cpc;
    		else if ( source == 'email' ) phone = email;
    
    		//Подмена номера
    		if ( source != 'direct' && phone != '' ) $('.phone_container').text( phone );
    	} 
    );
    
    function get_cookie ( cookie_name )
    {
      var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
    
      if ( results )
        return ( unescape ( results[2] ) );
      else
        return null;
    }

    Тут потребуется небольшая настройка: в строках 7-10 в кавычках нужно вписать соответствующие телефонные номера для разных источников трафика.

  2. Добавить между <head> и </head>:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="/phone-replace.js"></script>
  3. Добавить в php код, который исполняется на каждой странице до вывода чего-либо на экран (довольно часто это index.php, который лежит в корне сайта.) следующее:
    <?php
    
    //По каким фрагментам в URI мы будем определять источники трафика
    $uri_indication['remarketing'] = 'utm_campaign=Remarketing';
    $uri_indication['cpc'] = 'utm_medium=cpc';
    $uri_indication['email'] = 'utm_medium=email';
    
    //Дальше ничего менять не нужно
    
    if ( strpos ( $_SERVER['REQUEST_URI'], $uri_indication['remarketing'] ) ) 
    	$source_type = "remarketing";
    
    else if ( strpos ( $_SERVER['REQUEST_URI'], $uri_indication['cpc'] ) 
    	AND !strpos ( $_SERVER['REQUEST_URI'], $uri_indication['remarketing'] ) ) 
    	$source_type = "cpc";
    
    else if ( strpos ( $_SERVER['REQUEST_URI'], $uri_indication['email'] ) ) 
    	$source_type = "email";	
    
    else if ( strpos ( $_SERVER['HTTP_REFERER'], 'yandex.ru/yandsearch' )
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'www.google.' )
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'go.mail.ru/search' )
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'nova.rambler.ru/search' )
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'bing.com/search' )
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'ask.com/web?q=' ) 
    	 OR strpos ( $_SERVER['HTTP_REFERER'], 'search.yahoo.com/search' )) 
    
    	 $source_type = "search";	
    
    else $source_type = "direct";	
    
    if ( $source_type AND $source_type != "direct" )
    			setcookie ( "source_type", $source_type, time()+31536000, '/' );
    
    ?>

    В строках 4-6 нужно указать, какие фрагменты скрипт должен искать в URI, на который попадает человек, заходя на сайт.

    Подразумевается, что в URI есть какие-то зацепки типа UTM-меток. В моём примере наличие в URI «utm_medium=cpc» говорит о том, что посетитель пришёл по контекстной рекламе, «utm_medium=email» — по e-mail рассылке, «utm_campaign=Remarketing» — по ремаркетингу.

    Поскольку у контекстной рекламы и у ремаркетинга метка utm_medium обычно одинаковая, для ремаркетинга я взял кусок строки из utm_campain.

  4. В шаблоне сайта указать контейнерам, содержащим телефонный номер, класс «phone_container»: phone-all
  5. Проверить работоспособность.

Чтобы вам было проще разобраться, можете забрать подарок — рабочий пример скрипта.

Ссылка для скачивания
Замечания по работе скрипта оставляйте в комментариях.