Как передать UTM-метки в CRM Битрикс 24 с помощью PHP?

Передаю данные с форм сайта в CRM Битрикс 24,
массив с даннымы выглядит следующим образом

$postData = [
	'TITLE' => 'Заявка с сайта ' . $url,
	'NAME' 	=> $name,
	'PHONE_MOBILE' => $phone,

	'COMMENTS' => 'Источник заявки: ' . $source,

	'UTM_CAMPAIGN' => 'campaign',	
	'UTM_CONTENT' => 'content',
	'UTM_MEDIUM' => 'medium',
	'UTM_SOURCE' => 'source',
	'UTM_TERM' => 'term',
];


Название полей форм взял в документации Битрикс 24 https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_l...

Все поля, кроме UTM передаются нормально.
Со стороны моего сервера все нормально, я уже дампил этот массив, в нем нет пустых данных.

Кто сталкивался, отпишитесь.

P. S. Нашел платный плагин, который решает эту проблему – https://www.bitrix24.ru/apps/?app=magnator.lead2bit24
В документации все понятно описано и прилагают пример PHP кода.

UPD: 14.12.2020 — решение проблемы описано в статье, раздел Webhook https://all-service.in.ua/blog/lidy-s-form-v-bitrix24/
  • Вопрос задан
  • 7692 просмотра
Пригласить эксперта
Ответы на вопрос 7
Итак, сначала нужно записать утм в массив $_cookie для того, что при переходе на другие страницы не потерялись значения, вот этот код отвечает за это:

if(isset($_GET["utm_source"])) setcookie("utm_source",$_GET["utm_source"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_medium"])) setcookie("utm_medium",$_GET["utm_medium"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_campaign"])) setcookie("utm_campaign",$_GET["utm_campaign"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_content"])) setcookie("utm_content",$_GET["utm_content"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_term"])) setcookie("utm_term",$_GET["utm_term"],time()+3600*24*30,"/");


Добавляйте его на каждую страницу↑.

Затем создаем в форме невидимые поля, cо значениями:
<input name="utm-source" type="hidden" value="<?=$_COOKIE['utm_source']?>">
<input name="utm-medium" type="hidden" value="<?=$_COOKIE['utm_medium']?>">
<input name="utm-compaign" type="hidden" value="<?=$_COOKIE['utm_compaign']?>">
<input name="utm-content" type="hidden" value="<?=$_COOKIE['utm_content']?>">
<input name="utm-term" type="hidden" value="<?=$_COOKIE['utm_term']?>">


А в обработчике уже принимаем данные, как и все остальные поля:
'UTM_SOURCE' => $_POST['utm-source'],
	            'UTM_MEDIUM' => $_POST['utm-medium'],
	            'UTM_CAMPAIGN' => $_POST['utm-campaign'],
	            'UTM_CONTENT' => $_POST['utm-content'],
	            'UTM_TERM' => $_POST['utm-term'],


Результат:
5ea8c07a0c226249777337.jpeg
Ответ написан
@OldCrazyMan
Тоже интересует решение данного вопроса

Все поля, кроме UTM передаются нормально. Название полей форм взял в документации Битрикс 24
Ответ написан
Afres
@Afres
Chief Digital Officer
Потратил 3 часа на поиск решения, так и не нашел, судя по всему через REST API эти переменные не поддерживаются Битриксом.
Переделал на WebHook, там UTM-метки поддерживаются и аналитика считается. Для моего случая даже удобнее вебхук.
Вот тут годная статья по которой перешел с REST на Webhook.
Ответ написан
dimonchik2013
@dimonchik2013
Антон Цуцанский, нехороший человек
Все поля, кроме UTM передаются нормально.

а поля с УТМ ... ( продолжите предложение)

в то время как в GET / GLOBALS я вижу
(сюда дамп)
Ответ написан
@maddimas
Для форм Открытых линий я сделал так:
if(isset($_GET["utm_source"])) setcookie("utm_source",$_GET["utm_source"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_medium"])) setcookie("utm_medium",$_GET["utm_medium"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_campaign"])) setcookie("utm_campaign",$_GET["utm_campaign"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_content"])) setcookie("utm_content",$_GET["utm_content"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_term"])) setcookie("utm_term",$_GET["utm_term"],time()+3600*24*30,"/"); 

if(isset($_COOKIE["utm_source"]) and !isset($_GET["utm_source"])) $_GET["utm_source"] = $_COOKIE["utm_source"];
if(isset($_COOKIE["utm_medium"]) and !isset($_GET["utm_medium"])) $_GET["utm_medium"] = $_COOKIE["utm_medium"];
if(isset($_COOKIE["utm_campaign"]) and !isset($_GET["utm_campaign"])) $_GET["utm_campaign"] = $_COOKIE["utm_campaign"];
if(isset($_COOKIE["utm_content"]) and !isset($_GET["utm_content"])) $_GET["utm_content"] = $_COOKIE["utm_content"];
if(isset($_COOKIE["utm_term"]) and !isset($_GET["utm_term"])) $_GET["utm_term"] = $_COOKIE["utm_term"];


Т.е. при входе на сайт мы записываем метки в куки. А после перехода из кук записываем в GET откуда формы ОК забирают метки автоматически.
Ответ написан
@Ichi
Может кому надо, у меня работает так:

update_bitrix_entity('deal', 13,array('UTM_SOURCE' =>'NEW'));

function update_bitrix_entity($entity, $id, $fiels = array())
		{
		if (!in_array($entity, array('lead', 'deal', 'contact', 'company')))
			{
			return false;
			}
		$name = "crm.{$entity}.update";
		$post = array(
			'id' => $id,
			'fields' => $fiels);
		$ret = bitrix::call($name, $post);
		return $ret;
		}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы