Инструмент для точного анализа заявок

Передача данных в Linkodium Analytics

API URI
https://a.linkodium.com/submit/API_KEY/
Формат
www-form-urlencoded, метод POST

Где API_KEY — ключ проекта из личного кабинета (где его взять).

<?php
    $api_key  = "aaeaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";

    $crm_data = [
        'name'       => "Иван Иванов",
        'phone'      => "+7 (999) 999-99-99",
        'email'      => "test@example.com",
        'message'    => "Тестовое сообщение",
        'ip'         => "127.0.0.1",
        'user_agent' => "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532F)",
        'start_url'  => "https://example.com/?utm_source=yandex",
        'order_url'  => "https://example.com/order",
        'referer'    => "https://yandex.ru"
    ];

    $ch = curl_init("https://a.linkodium.com/submit/$api_key/");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $crm_data);
    $response = curl_exec($ch);
    curl_close($ch);
?>

Поля заявки

ПолеЧто передатьЛимит, символов
nameимя клиента255
phoneтелефон255
emailадрес электронной почты255
messageсообщение из формы65 535
customлюбые данные в свободной форме, например ПАРАМЕТР_1:ЗНАЧЕНИЕ|ПАРАМЕТР_2:ЗНАЧЕНИЕ65 535
external_idномер заявки во внешней CRM255
ipIP-адрес посетителя64
user_agentuser-agent браузера посетителя255
start_urlстраница входа, первая страница визита65 535
start_url_jsстраница входа, полученная JavaScript, вместе с частью после «#» (подробнее)65 535
order_urlстраница, на которой отправлена заявка65 535
refererреферер визита65 535

Заявка сохраняется, если заполнено хотя бы одно из полей name, phone, email или custom. Остальные поля необязательны, поля с другими именами не сохраняются (старое имя custom_field принимается как custom), а слишком длинные значения обрезаются до лимита. Дату заявки ставит сам сервис в момент приёма.

UTM-метки отдельными полями не передаются: сервис сам разбирает utm_source, utm_medium, utm_campaign, utm_term и utm_content из start_url_js, а если он пуст, из start_url.

Если ip не передан или это не IP-адрес, сохраняется адрес, с которого пришёл запрос. При отправке с сервера это будет IP вашего сервера, поэтому IP посетителя лучше передавать явно, как в примере.

При успешной обработке заявки в теле ответа будет передано:

{"status":"success"}

В противном случае:

{"status":"error"}

Тело {"status":"error"} приходит при любом отказе, поэтому смотрите и на код ответа. Код 200 с error означает, что заявка не сохранена: ключ проекта неверен, проект отключён, в заявке нет ни одного из полей name, phone, email, custom или запись не удалась. Коды 503 и 429 означают временную недоступность или слишком частые запросы: такой запрос стоит повторить позже, паузу подсказывает заголовок Retry-After. Код 400 означает, что запрос пришёл не методом POST или без полей.

Рекомендации

При каждом визите пользователя рекомендуется создавать сессию, в которую сохранять следующие параметры — они будут переданы в Linkodium Analytics в случае успешной отправки заявки:

  • IP-адрес пользователя
  • User-agent
  • URL входа
  • URL заявки
  • Реферер

Пример PHP-скрипта для сохранения необходимых данных — можно разместить в index.php:

<?php
    # Linkodium Analytics
    session_start();
    if (!isset($_SESSION['start_url'])) {
        $_SESSION['start_url'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http")
                               . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

        if (isset($_SERVER['HTTP_REFERER'])) {
            $_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
        } else {
            $_SESSION['referer'] = "";
        }

        $_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
    }
    # /Linkodium Analytics
?>

Сессия нужна именно потому, что источник визита известен только на первой странице: к моменту отправки формы пользователь может уйти на десятую, и реферер с UTM-метками там уже не увидеть. Подробнее об этом — в статье про URI fragment.