Передача значения REFERER из Contact Form 7 в AmoCRM

Передача значения REFERER из Contact Form 7 в AmoCRM

Для интеграции Contact Form 7 с AmoCRM для нескольких клиентских сатов использую плагин от IT Galaxy. Работает отлично, настраивается гибко. Но не всё, что мне хотелось бы можно передать в Амо встроенными шорткодами. В частности, referer — источник перехода.

При этом у меня стояла задача не просто передать адрес страницы, с которой пришёл на посадочную пользователь, а именно адрес источника: соцсеть, поисковая система, сторонний сайт и т. д.

Передача referer в AmoCRM

Сначала я попытался разобраться сам. Логика была такой: если данные отправляет Contact Form 7, значит нужно создать кастомный шорткод для CF7, который и передаст в Амо источник трафика. Вооружившись мануалом от WP-KAMA и почитав форумы, я наваял следующее:

//Добавляем шорткод referer в CF7
add_filter( 'wpcf7_form_elements', 'do_shortcode' );

function referer_func() {
	 	session_start();
	
	if (!isset($_SESSION['referer']) || empty($_SESSION['referer'])) {
    	$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
	}
	
	return $_SESSION['referer'];
}
add_shortcode('referer', 'referer_func');

add_filter('wpcf7_mail_components', 'do_shortcode_mail', 10, 3);
function do_shortcode_mail( $components, $contactForm, $mailComponent ){
	if( isset($components['body']) ){
		$components['body'] = do_shortcode($components['body']);
	}

	return $components;
}

Данный код записывает первичный источник в переменную. Даже если пользователь побродит по сайту, источник перехода не изменится. В письме ссылка приходила. Но в AmoCRM значение не передавалось.

Потратив ещё день на изучение PHP, я решил написать разработчикам плагина. Спасибо ребятам из IT Galaxy за помощь! Они прислали другой код, благодаря которому передача данных в AmoCRM заработала:

//Запоминаем реферера в куку пользователю
add_action('init', static function() {
    if (!empty($_COOKIE['cf7_referrer'])) {
        return;
    }

    setcookie('cf7_referrer', $_SERVER['HTTP_REFERER'] ?? '', 0, '/');
});

/*
 * Заполняем значение реферера по куке в данные отправляемой формы,
 * таким образом, далее можно использовать и в шаблоне письма и в другом месте, как [referer]
 */
add_filter('wpcf7_posted_data', static function ($postedData) {
    $postedData['referer'] = $_COOKIE['cf7_referrer'] ?? '';

    return $postedData;
});

Реферер сохраняется в куку и хранится там в течение сессии (пока пользователь не закроет браузер). После чего сбрасывается. Таким образом можно отследить именно источник результативного визита, а не самого первого.

Код вставляем в functions.php активной темы. Затем в настройках формы CF7 проставляем шорткоды в нужных местах:

Источник трафика referer в комментарии AmoCRM

Надеюсь, кому-нибудь пригодится и сэкономит время.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии