Документация для разработчиков
Темная тема

Использование сквозной аналитики при создании сделки и контакта

Пример использования сквозной аналитики при создании сделки и контакта. Предварительно создайте php-страницу с веб-формой обратной связи (Ф.И.О, телефон). На странице разместите код примера.

Что происходит во время выполнения кода?

1. Подключается стандартный js-код из сквозной аналитики Битрикс24.
2. После заполнения формы помимо полей формы в скрытом поле передаётся код для сквозной аналитики b24Tracker.guest.getTrace().
3. Далее создаётся сделка и связанный контакт.
4. И затем регистрируется "след" аналитики для этих объектов, передачей их типов и идентификаторов вида:
/rest/crm.tracking.trace.add?ENTITIES[0][TYPE]=CONTACT&ENTITIES[0][ID]=3215&ENTITIES[1][TYPE]=LEAD&ENTITIES[1][ID]=1&TRACE=….

Скрипт сквозной аналитики устанавливается на вашем сайте перед закрывающим тегом </body> на всех страницах сайта включая страницу с формой.

Внимание! Для использования примера настройте работу класса CRest и подключите файл crest.php в файлах, где используется данный класс. Подробнее.

<!DOCTYPE html>
<html lang="ru">
<head>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
</head>
<body class="container">
<h1>Feedback</h1>
<?
include("crest.php");
$message = '';
if(!empty($_POST['SAVE']))
{
	$fields = [
		'NAME' => $_POST['NAME'],
		'LAST_NAME' => $_POST['LAST_NAME'],
		'PHONE' => [ [ 'value'=>$_POST['PHONE'] ] ],
	];

	$resultContact = CRest::call(
		'crm.contact.add',
		[
			'fields' => $fields
		]
	);
	if (!empty($resultContact['result']))
	{

		$arDealFields = [
			'TITLE' => 'Feedback page: '.$_POST['NAME'].' '.$_POST['LAST_NAME'],
			'CONTACT_ID' => $resultContact['result']
		];

		$resultDeal = CRest::call(
			'crm.deal.add',
			[
				'fields' => $arDealFields
			]
		);

		if (!empty($resultDeal['result']))
		{
			if(!empty($_POST['TRACE']))
			{

				$resultTrace = CRest::call(
					'crm.tracking.trace.add',
					[
						'ENTITIES' => [
							[
								'TYPE' => 'CONTACT',//COMPANY, CONTACT, DEAL, LEAD, QUOTE
								'ID' => $resultContact['result']
							],
							[
								'TYPE' => 'DEAL',//COMPANY, CONTACT, DEAL, LEAD, QUOTE
								'ID' => $resultDeal['result']
							]
						],
						'TRACE' =>	$_POST['TRACE']
					]
				);

			}

			$message = 'Feedback saved';
		}
		elseif (!empty($resultDeal['error_description']))
		{
			$message =	'Feedback has not been saved: '.$resultDeal['error_description'];
		}
		else
		{
			$message = 'Feedback has not been saved';
		}
	}
	elseif (!empty($resultContact['error_description']))
	{
		$message =	'Feedback has not been saved: '. $resultContact['error_description'];
	}
	else
	{
		$message = 'Feedback has not been saved';
	}
}
?>
<div class="col-12">
	<p><?=$message?></p>
</div>
<form method="post" action="">
	<input type="hidden" id="FORM_TRACE" name="TRACE">
	<div class="row">
		<div class="col-4 mt-3">
			<label>Name*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="NAME" required>
		</div>
	</div>
	<div class="row">
		<div class="col-4 mt-3">
			<label>Last name*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="LAST_NAME" required>
		</div>
	</div>
	<div class="row">
		<div class="col-4 mt-3">
			<label>Phone*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="PHONE" required>
		</div>
	</div>
	<div class="row">
		<div class="col-sm-10">
			<input type="submit" name="SAVE" class="btn btn-primary" value="Send">
		</div>
	</div>
</form>
<script>
	window.onload = function(e){
		var traceDom = document.getElementById('FORM_TRACE');
		if(traceDom)
		{
			var trace = b24Tracker.guest.getTrace();
			traceDom.value = trace;
		}
	}
</script>
</body>
</html>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024