Как создать нового лида в битрикс24 при нажатии по ссылке на сайте?

Ссылка скопирована
1 ответ

Здравствуйте, необходимо создавать пустой лид в битрикс 24 при нажатии на номера телефонов на сайте, и при нажатии на ссылку для перехода в чат WhatsApp.

Суть в том, что нужно фильтровать рекламные лиды от обычных, для этого я планирую сохранять utm метки при первом переходе на сайт из поиска. И при нажатии на телефон, WhatsApp, нужно чтобы приходил пустой лид с метками. А дальше менеджер сам удалит левый лид и пересоздаст реальный, и будет статистика кто и откуда пришел.

Возможно ли вообще обработать события нажатия по телефонной ссылке tel: и ссылке на внешний ресурс для перехода в WhatsApp и передать это битриксу для создания лида?

Дополнительно:

Как создать нового лида в битрикс24 при нажатии по ссылке на сайте?

Семён Окулов @scoffs Frontend | C# | Student Возможно вам надо что-то типа этого

// Отслеживание кликов по телефонной ссылке $('a[href^="tel:"]').click(function() {     var utmParams = getUTMParams(); // Функция для получения utm-меток     sendLeadToBitrix(utmParams); // Функция для отправки данных в Битрикс24 });  // Отслеживание кликов по ссылке WhatsApp $('a[href^="https://api.whatsapp.com"]').click(function() {     var utmParams = getUTMParams(); // Функция для получения utm-меток     sendLeadToBitrix(utmParams); // Функция для отправки данных в Битрикс24 });  // Функция для получения utm-меток из URL function getUTMParams() {     var urlParams = new URLSearchParams(window.location.search);     var utmParams = {};      if (urlParams.has('utm_source')) {         utmParams.source = urlParams.get('utm_source');     }      if (urlParams.has('utm_medium')) {         utmParams.medium = urlParams.get('utm_medium');     }      if (urlParams.has('utm_campaign')) {         utmParams.campaign = urlParams.get('utm_campaign');     }      // Дополнительные utm-метки, если нужно      return utmParams; }  // Функция для отправки данных в Битрикс24 function sendLeadToBitrix(utmParams) {     var apiUrl = 'https://your-bitrix24-url/rest/your-rest-api-endpoint'; // Замените на фактический URL и REST API-эндпоинт      var leadData = {         title: 'New Lead',         source_id: utmParams.source,         medium_id: utmParams.medium,         campaign_id: utmParams.campaign,         // Дополнительные поля лидов, если нужно     };      // Отправка запроса на создание лида в Битрикс24     $.ajax({         url: apiUrl,         method: 'POST',         data: leadData,         success: function(response) {             console.log('Lead created successfully');         },         error: function(error) {             console.error('Error creating lead:', error);         }     }); }

// Отслеживание кликов по телефонной ссылке $('a[href^="tel:"]').click(function() { var utmParams = getUTMParams(); // Функция для получения utm-меток sendLeadToBitrix(utmParams); // Функция для отправки данных в Битрикс24 }); // Отслеживание кликов по ссылке WhatsApp $('a[href^="https://api.whatsapp.com"]').click(function() { var utmParams = getUTMParams(); // Функция для получения utm-меток sendLeadToBitrix(utmParams); // Функция для отправки данных в Битрикс24 }); // Функция для получения utm-меток из URL function getUTMParams() { var urlParams = new URLSearchParams(window.location.search); var utmParams = {}; if (urlParams.has('utm_source')) { utmParams.source = urlParams.get('utm_source'); } if (urlParams.has('utm_medium')) { utmParams.medium = urlParams.get('utm_medium'); } if (urlParams.has('utm_campaign')) { utmParams.campaign = urlParams.get('utm_campaign'); } // Дополнительные utm-метки, если нужно return utmParams; } // Функция для отправки данных в Битрикс24 function sendLeadToBitrix(utmParams) { var apiUrl = 'https://your-bitrix24-url/rest/your-rest-api-endpoint'; // Замените на фактический URL и REST API-эндпоинт var leadData = { title: 'New Lead', source_id: utmParams.source, medium_id: utmParams.medium, campaign_id: utmParams.campaign, // Дополнительные поля лидов, если нужно }; // Отправка запроса на создание лида в Битрикс24 $.ajax({ url: apiUrl, method: 'POST', data: leadData, success: function(response) { console.log('Lead created successfully'); }, error: function(error) { console.error('Error creating lead:', error); } }); }

Приведенный код использует jQuery для обработки событий кликов. Он отслеживает клики на ссылках с префиксом "tel:" и ссылках на WhatsApp и вызывает функцию sendLeadToBitrix(), которая отправляет данные в Битрикс24 с использованием REST API.

Не забудьте заменить 'https://your-bitrix24-url/rest/your-rest-api-endpoint' на фактический URL вашего Битрикс24 и REST API-эндпоинт.

Когда пользователь кликает на телефонную ссылку или ссылку WhatsApp, функция getUTMParams() извлекает utm-метки из текущего URL, а затем создает объект leadData, который содержит необходимую информацию для создания лида в Битрикс24. Затем данные отправляются в Битрикс24 с помощью AJAX-запроса.

Обратите внимание, что для использования данного кода вам потребуется подключить jQuery на вашем сайте, если он еще не подключен.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Да, клики по tel: и ссылкам WhatsApp можно отследить и по ним создать лид в Битрикс24. Но REST-вебхук Битрикс24 нельзя безопасно вызывать прямо из браузера: URL вебхука окажется в исходном коде сайта, и любой сможет создавать мусорные лиды.

Нормальная схема такая: JavaScript ловит клик, отправляет данные на ваш сервер, а сервер уже вызывает метод crm.lead.add в Битрикс24. UTM-метки лучше сохранять при первом заходе в cookie или localStorage, потому что к моменту клика по телефону в URL их может уже не быть.

document.addEventListener('click', async (event) => {
  const link = event.target.closest('a[href^="tel:"], a[href*="whatsapp.com"], a[href*="wa.me"]');
  if (!link) {
    return;
  }
 
  const params = new URLSearchParams(window.location.search);
  ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'].forEach((key) => {
    if (params.has(key) && !localStorage.getItem(key)) {
      localStorage.setItem(key, params.get(key));
    }
  });
 
  navigator.sendBeacon('/wp-admin/admin-ajax.php', new URLSearchParams({
    action: 'site_create_bitrix_lead',
    clicked_url: link.href,
    page_url: location.href,
    utm_source: localStorage.getItem('utm_source') || '',
    utm_medium: localStorage.getItem('utm_medium') || '',
    utm_campaign: localStorage.getItem('utm_campaign') || ''
  }));
});

document.addEventListener('click', async (event) => { const link = event.target.closest('a[href^="tel:"], a[href*="whatsapp.com"], a[href*="wa.me"]'); if (!link) { return; } const params = new URLSearchParams(window.location.search); ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'].forEach((key) => { if (params.has(key) && !localStorage.getItem(key)) { localStorage.setItem(key, params.get(key)); } }); navigator.sendBeacon('/wp-admin/admin-ajax.php', new URLSearchParams({ action: 'site_create_bitrix_lead', clicked_url: link.href, page_url: location.href, utm_source: localStorage.getItem('utm_source') || '', utm_medium: localStorage.getItem('utm_medium') || '', utm_campaign: localStorage.getItem('utm_campaign') || '' })); });

На стороне WordPress обработчик должен проверить nonce или хотя бы ограничить набор принимаемых полей, затем отправить запрос в Битрикс24:

add_action('wp_ajax_nopriv_site_create_bitrix_lead', 'site_create_bitrix_lead');
add_action('wp_ajax_site_create_bitrix_lead', 'site_create_bitrix_lead');
 
function site_create_bitrix_lead() {
    $webhook = 'https://example.bitrix24.ru/rest/1/WEBHOOK/crm.lead.add.json';
 
    $fields = [
        'TITLE' => 'Клик по телефону или WhatsApp',
        'SOURCE_ID' => 'WEB',
        'COMMENTS' => 'Страница: ' . esc_url_raw($_POST['page_url'] ?? '') . PHP_EOL .
            'Клик: ' . esc_url_raw($_POST['clicked_url'] ?? ''),
        'UTM_SOURCE' => sanitize_text_field($_POST['utm_source'] ?? ''),
        'UTM_MEDIUM' => sanitize_text_field($_POST['utm_medium'] ?? ''),
        'UTM_CAMPAIGN' => sanitize_text_field($_POST['utm_campaign'] ?? ''),
    ];
 
    wp_remote_post($webhook, [
        'timeout' => 5,
        'body' => ['fields' => $fields],
    ]);
 
    wp_die();
}

add_action('wp_ajax_nopriv_site_create_bitrix_lead', 'site_create_bitrix_lead'); add_action('wp_ajax_site_create_bitrix_lead', 'site_create_bitrix_lead'); function site_create_bitrix_lead() { $webhook = 'https://example.bitrix24.ru/rest/1/WEBHOOK/crm.lead.add.json'; $fields = [ 'TITLE' => 'Клик по телефону или WhatsApp', 'SOURCE_ID' => 'WEB', 'COMMENTS' => 'Страница: ' . esc_url_raw($_POST['page_url'] ?? '') . PHP_EOL . 'Клик: ' . esc_url_raw($_POST['clicked_url'] ?? ''), 'UTM_SOURCE' => sanitize_text_field($_POST['utm_source'] ?? ''), 'UTM_MEDIUM' => sanitize_text_field($_POST['utm_medium'] ?? ''), 'UTM_CAMPAIGN' => sanitize_text_field($_POST['utm_campaign'] ?? ''), ]; wp_remote_post($webhook, [ 'timeout' => 5, 'body' => ['fields' => $fields], ]); wp_die(); }

Если нужно не задерживать переход в WhatsApp, используйте navigator.sendBeacon() или отправляйте запрос и через 100-300 мс продолжайте переход. И обязательно добавьте защиту от дублей: например, не создавать повторный лид чаще одного раза в несколько минут для одного браузера.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно