Использование сквозной аналитики при создании сделки и контакта
Пример использования сквозной аналитики при создании сделки и контакта. Предварительно создайте 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>
на всех страницах сайта включая страницу с формой.
<!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>