Передача данных в 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 |
| адрес электронной почты | 255 | |
| message | сообщение из формы | 65 535 |
| custom | любые данные в свободной форме, например ПАРАМЕТР_1:ЗНАЧЕНИЕ|ПАРАМЕТР_2:ЗНАЧЕНИЕ | 65 535 |
| external_id | номер заявки во внешней CRM | 255 |
| ip | IP-адрес посетителя | 64 |
| user_agent | user-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.