Налаштування зворотнього дзвінка: інтеграція CallbackHunter для захоплення лідів
Типова ситуація: відвідувач заходить на сайт, вивчає послуги, але не залишає заявку. Якщо через 30 секунд ніхто не передзвонює — йде до конкурента. CallbackHunter вирішує проблему: віджет зворотнього дзвінка пропонує менеджеру передзвонити клієнту за лічені секунди після запиту. Але просто вставити скрипт недостатньо — потрібне правильне налаштування тригерів, API та webhook, щоб захоплювати ліди без втрат. Ми допомагаємо налаштувати інтеграцію так, щоб ви отримували максимум заявок без зайвих витрат. За 5 років ми реалізували десятки успішних інтеграцій CallbackHunter — від простого віджета до складних сценаріїв з кастомною обробкою даних.
Як встановити віджет за 10 хвилин?
Встановлення зводиться до вставки скрипта в шапку сайту (перед закриваючим </head>). Після реєстрації в особистому кабінеті CallbackHunter ви отримаєте унікальний ID віджета. Приклад коду:
<script type="text/javascript">
(function(h,u,n,t,e,r,s){h[t]=h[t]||function(){
(h[t].q=h[t].q||[]).push(arguments)},h[t].c=e,r=u.createElement(n),
s=u.getElementsByTagName(n)[0],r.async=1,r.src='//widget.callbackhunter.com/assets/widget/widget.js',
s.parentNode.insertBefore(r,s)})(window,document,'script','cbh','WIDGET_ID');
cbh('init');
</script>
Передача даних користувача через JavaScript API
API дозволяє передавати контекстні дані (ім'я, email, номер замовлення) та програмно відкривати форму. Це корисно для сайтів з авторизацією або корзиною:
// Передати дані про користувача
cbh('data', {
email: user.email,
name: user.name,
order: orderId
});
// Відкрити форму програмно (наприклад, при кліку на кнопку "Передзвоніть мені")
cbh('show');
Налаштування webhook для CRM
CallbackHunter надсилає POST-запит на вказаний URL при кожному новому запиті на зворотній дзвінок. На сервері (наприклад, Laravel 11) можна обробити дані та надіслати сповіщення менеджеру:
Route::post('/webhooks/callbackhunter', function (Request $request) {
Lead::create([
'phone' => $request->phone,
'source' => 'callbackhunter',
'name' => $request->name ?? null,
'meta' => $request->all()
]);
// Сповістити менеджера в Telegram
});
Чому важливо правильно налаштувати тригери показу?
Стандартне встановлення показує віджет одразу при завантаженні сторінки — це може збільшити відмови. Оптимальні тригери: за часом на сайті (30–60 секунд), при скролі до 50% сторінки, при спробі закриття (exit-intent) або для визначених джерел трафіку (наприклад, з реклами). CallbackHunter підтримує ці налаштування в кабінеті, але для точного прив'язування до подій сайту знадобиться кастомна інтеграція через JS. Ми налаштовуємо тригери так, щоб пропозиція зворотнього дзвінка з'являлася в найконверсійніший момент, не дратуючи користувача.
Порівняння базової та кастомної інтеграції
| Критерій |
Базова установка |
Кастомна інтеграція |
| Час встановлення |
15 хвилин |
від 2 годин |
| Тригери показу |
Стандартні (час/scroll/exit) |
Індивідуальні сценарії |
| Webhook для CRM |
Стандартний парсинг |
Кастомна обробка з валідацією |
| Передача даних через API |
Ні |
Так (email, ім'я, замовлення) |
| Вплив на Core Web Vitals |
Мінімальний (LCP +0.1s) |
Оптимізовано (LCP як без віджета) |
| Додаткові ліди |
Базові 5-10% |
До 40% більше кваліфікованих лідів |
Кастомна інтеграція дає в 1.5 рази більше лідів у порівнянні з базовою за рахунок точного таргетингу та автоматичної атрибуції.
Коли використовувати exit-intent тригер?
За даними наших проєктів, exit-intent спрацьовує в 15% відвідувань, і близько 30% з них залишають номер. Якщо трафік на сайті дорогий (наприклад, з контекстної реклами), exit-intent може окупитися за перші 100 заявок. Важливо не зловживати: показ при кожному виході знижує довіру. Ми рекомендуємо показувати віджет не частіше разу на добу для одного користувача.
Налаштування розкладу дзвінків
В особистому кабінеті CallbackHunter можна задати робочий час, коли віджет відображається. Для нестандартних графіків (наприклад, перерви на обід або різні часові пояси) ми ховаємо віджет через JS залежно від часу: if (hour < 9 || hour > 18) { cbh('hide'); }. Це виключає заявки в неробочий час, коли ніхто не може відповісти.
Що входить в роботу під ключ
- Встановлення та тестування віджета на всіх пристроях і браузерах.
- Налаштування тригерів показу (час на сайті, scroll, exit-intent, джерело трафіку).
- Інтеграція webhook з вашою CRM (AmoCRM, Bitrix24, HubSpot) або Telegram.
- Передача користувацьких даних через JavaScript API (ім'я, email, замовлення).
- Навчання співробітників роботі з особистим кабінетом.
- Гарантія стабільної роботи протягом місяця та контроль Core Web Vitals (LCP, CLS).
Терміни та гарантії
Базова інтеграція займає від 2 годин до 1 дня. Кастомна — до 3 днів. Наші інженери перевіряють роботу віджета в режимі реального часу, щоб виключити конфлікти з існуючими скриптами. Зв'яжіться з нами, щоб обговорити ваш проєкт — підберемо оптимальну схему інтеграції та тариф. Більше 5 років досвіду роботи з CallbackHunter та десятки успішних запусків.
Джерело: документація CallbackHunter API
Інтеграція email розсилок: чому вона часто ламається?
Ми стикалися з тим, що тригерний лист через 10 хвилин після реєстрації конвертує в 4–5 разів краще, ніж той самий лист через 24 години. Це не маркетинговий міф — це механіка: поки користувач теплий, поки пам'ятає контекст. Але більшість інтеграцій з розсильниками зроблені так: форма сабмітиться → синхронний HTTP-запит до API → якщо API гальмує, користувач чекає 3 секунди → лист йде або не йде, ніхто не знає.
Якщо ви зіткнулися з втраченими листами або потраплянням у спам, замовте аудит існуючої інтеграції — ми знайдемо вузькі місця за 2 дні.
Провайдери та їх API
Unisender — російський провайдер, популярний у сегменті SMB. REST API, простий. Додавання контакту: importContacts, відправка транзакційного листа: sendEmail. Важливо: для транзакційних листів (підтвердження замовлення, скидання пароля) Unisender Go — окремий сервіс з іншим API та окремою ціною. Змішувати масові розсилки та транзакційні в одному потоці — погана ідея для репутації домену.
SendPulse — надає email, SMS, web push, Viber, Telegram-боти через єдиний API. Для проєктів, де потрібен омніканал, це зручно. Automation 360 — візуальний конструктор ланцюжків, можна запустити автоматизацію через API event. SDK для PHP (sendpulse/rest-api-php-sdk) підтримується, але оновлюється нерегулярно — краще використовувати напряму через Guzzle.
Mailchimp — вибір для міжнародної аудиторії та маркетингових команд, звиклих до екосистеми Mailchimp. Transactional email — через Mandrill (дочірній сервіс). Marketing API v3 для управління списками, тегами, кампаніями. Webhook для подій: відкриття, клік, відписка, bounce.
SMS. Для Росії: СМСЦ, МТС Exolve, Devino Telecom, SMS Aero. API у всіх схожий: метод send, параметри phone, message, sender (ім'я відправника — потрібно реєструвати окремо у оператора). Один нюанс: ім'я відправника має бути зареєстровано через агрегатора з договором — без цього SMS не відправляться на мережі МТС/МегаФон/Білайн.
| Провайдер |
Тип |
Транзакційні листи |
Маркетингові |
Особливості |
| Unisender |
email+SMS |
Unisender Go (окремо) |
так |
Популярний в РФ, простий REST |
| SendPulse |
email+SMS+web push+Viber |
так |
так |
Єдиний API, омніканальність |
| Mailchimp |
email |
Mandrill |
так |
Аналітика, міжнародний |
| Twilio |
SMS+email |
так |
ні |
Глобальний, дорогий в РФ |
Як побудувати інтеграцію, щоб не втрачати листи?
Розділяємо транзакційні та маркетингові потоки
Транзакційні листи (підтвердження замовлення, скидання пароля, статус доставки) — через окремий домен-відправник або субдомен tx.example.com. Маркетингові розсилки — через mail.example.com або news.example.com. Якщо маркетингова розсилка отримає багато скарг на спам, це не повинно зачепити репутацію транзакційного потоку. Згідно з документацією SendGrid, транзакційні повідомлення слід відправляти через виділений IP-пул для запобігання перехресному впливу.
Черга та retry
Будь-який виклик до email API — через чергу (Laravel Queue, Bull, Celery). Якщо Unisender повернув 503 — задача йде в retry через 5 хвилин, потім 15, потім 60. Після 5 невдалих спроб — у dead letter queue з алертом. Користувач при цьому вже отримав свій 200 OK і не знає про проблему. Завдяки цьому підходу bounce rate на проєктах знижується до 0.5%.
Приклад job для Laravel:
public function handle(): void
{
try {
$response = Http::post(config('services.unisender.email_url'), $this->params);
if ($response->failed()) {
$this->release(300); // retry через 5 хв
}
} catch (\Throwable $e) {
$this->release(300);
}
}
Шаблони
Зберігаємо шаблони в коді (Blade, Twig, React Email), не в інтерфейсі провайдера. Причини: версіонування через Git, preview у браузері без відправки, можливість тестування. Для складних шаблонів з динамічним контентом — react-email з експортом в HTML через @react-email/render.
Валідація та згоди
Перед додаванням контакту до списку — double opt-in (лист з підтвердженням). Зберігати факт підтвердження з timestamp у своїй БД. При відписці — синхронно відписуємо і у провайдера, і в своїй базі. Ігнорувати webhook відписки — прямий шлях до блокування акаунта у провайдера. Всі процеси відповідають ФЗ-152 про персональні дані.
Як налаштувати DKIM для домену-відправника?
DKIM дозволяє підписувати листи цифровим підписом, що підвищує довіру поштових серверів.
- Згенеруйте пару ключів (наприклад, через OpenSSL:
openssl genrsa -out private.key 2048).
- Опублікуйте публічний ключ у DNS як TXT-запис для селектора (наприклад,
mail._domainkey.tx.example.com).
- Вкажіть селектор у провайдера (SendGrid, Mailgun, Unisender).
- Перевірте командою
dig TXT mail._domainkey.tx.example.com.
Моніторинг доставності
Підключаємо webhook від провайдера на події bounce (жорсткий і м'який), spam_complaint, unsubscribe. Жорсткий bounce — негайно позначаємо email як невалідний у своїй БД, більше не відправляємо. М'який bounce 3 рази поспіль — те саме. Метрики: open rate, click rate, bounce rate, unsubscribe rate — дивимося не рідше разу на тиждень. Наші сертифіковані інженери налаштовують алерти в Grafana/Prometheus.
Чому важливо розділяти потоки?
Якщо відправити маркетингову розсилку з того ж домену, що й транзакційні листи, отримавши скарги на спам, ви ризикуєте заблокувати домен — і користувачі перестануть отримувати навіть підтвердження замовлень. SPF, DKIM, DMARC (Wikipedia SPF, Wikipedia DKIM) повинні бути налаштовані окремо для кожного потоку. Ми використовуємо субдомени з різними DNS-записами.
Обсяг робіт з інтеграції
- Аудит поточних потоків комунікації та репутації домену (SPF, DKIM, DMARC)
- Вибір провайдера та схеми: транзакційний vs маркетинговий трафік
- Налаштування DNS-записів SPF, DKIM, DMARC (Wikipedia DMARC)
- Розробка шаблонів листів (HTML + динамічний контент)
- Інтеграція з бекендом через черги та API
- Налаштування webhook для доставності та скарг
- Документація з експлуатації та навчання команди
- Гарантія доставності та підтримка після запуску
Терміни та вартість
| Сценарій |
Термін (робочі дні) |
Примітка |
| Базові транзакційні листи (один провайдер) |
5–7 днів |
Ціна розраховується індивідуально після аудиту |
| Тригерні ланцюжки + SMS + веб-пуши |
10–20 днів |
Ціна розраховується індивідуально після аудиту |
| Повна омніканальна автоматизація |
20–40 днів |
Ціна розраховується індивідуально після аудиту |
Вартість розраховується індивідуально після аудиту. Ми працюємо під ключ: від аналізу до моніторингу в продакшені. Отримайте консультацію інженера — оцінимо проєкт безкоштовно та скажемо точні терміни. Досвід більше 7 років в інтеграції поштових сервісів, реалізовано 50+ проєктів. Замовте безкоштовний аудит поточної інтеграції — отримайте звіт з рекомендаціями.