GetCourse – Как загружать клиентов через Webhook
Для проектов, в которых воронки в Telegram построены на стандартном конструкторе GetCourse, данные о пользователях можно передавать GET запросами прямо из GetCource.
ВАЖНО! Чтобы вы могли создать процесс в GetCource и передать telegram_id через веб-хук, сначала необходимо научить GetCource записывать telegram_id каждого пользователя в дополнительное поле.
GetCource по умолчанию этого делать НЕ умеет.
Этап 1. Сохранение Telegram ID в дополнительное поле GetCourse
1.Вариант В1: воронка в Telegram построена в процессах на стандартном конструкторе GetCourse.
Если ваша воронка в Telegram собрана в GetCourse, вы можете «вытащить» telegram_id прямо из системы.
Недавно появилась официальное расширение от GetCourse, которое позволяет автоматически сохранять user_id и username в дополнительные поля. Это удобное и проверенное решение стоит всего 500 рублей в месяц. 
2.Вариант 2: Ссайт упакован в MiniApp.MiniApp
Если вы используете наше более продвинутое решение с проксированием ссылок через MiniApp, то нужно действовать нужнесколько по-другому.иначе:
- При настройках прокси-ссылки (MiniApp) необходимо указать передачу сервисных UTM-меток. Метка
telegram_idпо умолчанию включается при установке соотивацииетствующей галочки,telegram_id— её значение будет подставляться динамически. Кромеtelegram_id, в UTM-метках можно передавать и другие служебные параметры: username, ФИО подльзователя, наличие Telegram Premium. Если в вашей систавеме уже используется поле для сбора Telegram ID (например, tg_id, telegram, user_id и другие), просто укажите его название в соответствующую UTM-метку. Такжев метках есть возможность передать и другие сервисные параметры (username / ФИО / наличие Telegram Premium). Вы можете изменить название метки, написав свое значение вполе.telegram_id. Если название метки вас устраивает — просто ничего не трогайте:) 2. Далее
telegram_id из UTM-меткинеобходимо записатьtelegram_idиз UTM-метки в дополнительное поле GetCourse. Для99%большинства технических специалистов это максимально простаязадача является стандартной и несложной. Во многих образовательшинсых проектве школах уже используетоится скрипт,коавтоматически сохрыаняющийзаписываUTM-метUTMки в доп.олнительные поля клиента.ВКа
мк настроить передачу Telegram ID в достп. поле GetCourse:Для начала нужно создать дополнительное поле у пользователя или у заказа.
Для примера сделаем доп. поле у пользователя.Переходим в Ученики ➡️ Пользователи ➡️ Дополнительные поля
Далее добавляем доп. поле:
• Тип – число
• Заголовок – telegram_idСохраняем.
Далее добавляем поле в форму на лендинге.
Переходим в раздел Сайт ➡️ Страницы. В настройках формы добавляем «Поле пользователя». Обязательно указываем CSS класс элемента:
• telegram_id
• hidden – скрываем полеДобавляем блок «HTML». В него вставляем код:
<script> function parseTelegramData() { if (window.Telegram?.WebApp?.initDataUnsafe?.user) { const user = window.Telegram.WebApp.initDataUnsafe.user; return { id: user.id || '' }; } const hash = window.location.hash.substring(1); if (!hash) { return null; } const params = new URLSearchParams(hash); const tgWebAppData = params.get('tgWebAppData'); if (!tgWebAppData) { return null; } try { const decodedData = decodeURIComponent(tgWebAppData); const tgParams = new URLSearchParams(decodedData); const userStr = tgParams.get('user'); if (userStr) { const user = JSON.parse(userStr); return { id: user.id || '' }; } } catch (e) { console.error('Failed to parse tgWebAppData:', e); } return null; } const telegramData = parseTelegramData(); if (telegramData) { const telegramIdWrappers = document.querySelectorAll('.telegram_id'); telegramIdWrappers.forEach(function (wrapper) { const input = wrapper.querySelector('input'); if (input) { input.value = telegramData.id; } }); } </script>Сохраняем и опубликовываем страницу.
Теперь при заполнении формы через MiniApp Telegram ID пользователя будет автоматически записываться в дополнительное поле.
Настройка передачи Telegram ID в дополнительное поле заказа осуществляется аналогичным образом. Для этого перейдите в раздел Продажи ➡️ Список заказов ➡️ Дополнительные поля и создайте поле telegram_id. При создании поля в настройках формы выберите тип «Поле заказа» вместо «Поле пользователя» — данные из Telegram будут подставляться в указанное поле заказа.
Вариант 3: связка GetCourse и Salebot
Если ваша воронка собрана в Salebot, вы можете передать telegram_id в дополнительное поле через лендинг на GetCourse — по аналогии со способом, реализованным через MiniApp.
Для этого в GetCourse создайте дополнительное поле у пользователя или у заказа (см. инструкцию выше). Затем в форму на лендинге добав
иьть доп метку. В самой формед«Побавить скрытоледоп.пользователя» (или «Поле заказа»), укажите CSS класс элемента (telegram_id и hidden) и вставьте в блок «HTML» следующий код:<script> function getParam(name) { const params = new URLSearchParams(window.location.search); return params.get(name) || ''; } document.addEventListener('DOMContentLoaded', function () { const telegramId = getParam('telegram_id'); const telegramWrappers = document.querySelectorAll('.telegram_id'); telegramWrappers.forEach(function (wrapper) { const input = wrapper.querySelector('input'); if (input) { input.value = telegramId; } }); }); </script>Сохраните и о
ропубликуйте сктраницу.Теперь, чт
иобудет записыватьзначениеUTM меткиtelegram_id запипередсаватлось в дополнительное поле, необходимо выдать пользователю через бота ссылку типа https://[ваш_аккарунточ].getcourse.ru/[ссылка_на_лендинг]?telegram_id=#{platform_id} иликлиhttps://[ваш_домент]/[ссылка._на_лендинг]?telegram_id=#{platform_id}
1.
ОВажно отмечутить, что способ с передачейа telegram_id через MiniApp самый— наиболее надеёжный способ,. При его использовании идентак ификатор Telegram фиксируется в такомGetCourse случае за 100% пользователей, оставивших заявку.
В фсравненики с этируетсям, tg_id в геткурсе. Ппервый способ соприводитяжён кс потереями: от 2020% до 40% tg_id, пользоватак как просто даелекой не вспе преховаливаюдятся в тгTelegram бота насо страницеы благодарности после регистрации на бесплатник.
Теперь, когда вырешили вопрос с TG_ID,й продукт, и их telegram_id в сисхтему не попадиает.я сЭта
ндартнаяпо2. Отправка GET запроса вVORTEX.
VORTEXОтправка и пример корректного GET запроса из
GCGetCourse в VORTEX.1. Получение ссылки для отправки
GET-GET запроса в сервисе.
СсыКл
ку для отправкиюч веб-хукова можно скопиролучивать прямо в сервисе,.Где на
жав найти кнопку копирования.
Напомним, лючтобы получить веб-хук,а
нужн
1. Перейдите в Про создатьжи г➡️ Упруппуавление конверсиями
2. Создайте наовую вкладке «групродажи»пу и добавыбраьтье Ввеб-хук в качестве источника., Кнакжав этона плюсделать описано здесь - https://docs.vortex.pro/sections/72-okno-upravlenie-konversiiami/page/kak-zagruzat-klientov-v-servis-algoritm
2.Создание связки в столбцер «Действися»
3. Скопируйте ключ веб-хука
При успешном копировании у вас всплывёт уведомление к«Ключ веб-хука дскопирован».
Для запросов.Подробная инструкция как отправлятьки веб-хука изапросы содержитсяGetCourse в документации getcourse по ссылке:https://getcourse.ru/blog/276215и производится в следующем окне:
Чтобы передать данные о продажах / заказах,VORTEX необходимо создать процесс. Процесс может быть как по заказам, так и по пользователям. Исходя из типа объектавить, переменные в ссылке бу,дут котличаться.
Если проруюцесс сгенерирпо пользователям:
Используется переменная object
Пример ссылки:
https://proxy.vortex.pro/webhooks/sale?key=a1234b5c6789012d34e56789f01g2345?telegram_id={object.telegram_ID}&purchase_prise=1234&purchase_name=тедст
Если процесс по заказам:
Использующется переменная object.user
Пример ссылки:
https://proxy.vortex.pro/webhooks/sale?key=a1234b5c6789012d34e56789f01g2345?telegram_id={object.user.telegram_ID}&purchase_prise={object.cost_money_value}&purchase_name={object.positions}
Описание параметров, которые можно передать в ссылке:
| Особенность | Параметр | Описание |
| * |
telegram_id |
integer (целое число), |
| * |
username |
string (строка) , |
|
Для отправки Если |
||
| /опциональное | purchase_price |
float (число), цена конверсии |
| /опциональное | purchase_name |
string (строка), название конверсии |
| /опциональное | purchased_at |
datetime (дата и время), время совершения конверсии. Если отсутствует |
| /опциональное |
|
string (строка), значени
Каждая из Важно: названи
Пример объекта
Для того, чтобы передать эт
В процессах по пользователям переменные имеют следующий формат:
В процессах по заказам и покупкам использу
Для передачи UTM-меток используются следующие переменные:
Более подробная информация: https://getcourse.ru/blog/275857 |
ЗаготовкаПример ссылки для передачи GET запроса с данными о КОНВЕРСИИ из процесса GetCource, в которой передаётся tg_id,Telegram ID, цена и название конверсии:
https://app.vortex.pro/api/sales/auto-collectors/webhook/add-sale?key=API_KEY&telegram_id={object.user.TGID}TG_ID}&purchase_name={object.positions}&purchase_price={object.payed_money}
cost_money_value}
Обратите внимание:
1. Ссылка для запроса с нужнеобходимым ключом уже копируется напрямоую из нашего сервиса. Е— вносить в неё изменениять не нтребужноется. API_KEY -— это тот суникамльный ключ, что сгенерировалнный Vortex.
2. &telegram_id={object.user.TGID}TG_ID}
Вместо TGIDTG_ID вам нужнпо вдставиьтье название переменной (по умолчанию telegram_id), которую вы указадали в дополнительном поле для заклиентоваза для полуередачения tg id для клиентовtelegram_id. Это обязательный пая чрасметьр запроса, — без него сервис не сможет корректнорая необходима для добавлениять конверсии в сервисю.
3. &purchase_name={object.positions}positions - это— стандартное поле в ГК, в которомGetCourse, содержитсяащее название вашей конверсии. Этот параметр является необязательная часть запросаым. Если вы не планируете передавать назименование конверсии, просто удалите еёго из запроса.
4. &purchase_price={object.cost_money_value}cost_money_value - это— стандартное поле в ГК,GetCourse, в котором содуказываержится сумма, оплаченная клиентом в врамках конверсии. Этот параметр является необязательная часть запросаым. Если вы не планируете передавчать суммы не требу конвертсиия, вы можетое удалитеь еёго из запроса.
2. Отправка GET запроса из GetCourse в VORTEX через процесс.
Подробная инструкция как отправлять запросы содержится в документации GetCourse.
Процесс может быть по пользователям или по заказам. Сделаем на примере заказа.
Для начала создадим процесс. Перейдем в раздел CRM ➡️ Процессы.
Создадим новый процесс с типом объекта «Заказы».
В настройках выбираем пункт «Периодическая проверка» и указываем правило вхождения объекта — тот заказ, который мы хотим передать в Vortex. В нашем примере это бесплатный тестовый заказ.
Сохраняем и переходим во вкладку «Процесс». Добавляем блок «Операция» ➡️ «Заказ» ➡️ «Вызвать url».
Здесь мы используем GET запрос. Вставляем нашу ссылку, которую мы получили в первом пункте, в поле «URL» и сохраняем.
Как просмотвереить информацию об успешностиь отправки вебхука на сервис:М
Вы можноете выбруказать переменную, в которую будет зсохраписываняться ответ от сервиса напосле попыткуи отправкить вебхука. ПЗатем досле этатогчно просмотвереить зна точение, что записанное в этой переменной.
После успешной отправки вебхука на сервис, в поле вы получите следующий ответ:
sООтвет главным образом состоит в основном из 2двух частей:
-— Сстатус отправки вебхука. Здесь будет уУказыванет, была ли отправка успешно был отправлен вебхукй или произошла ошибка.
- Информация о конверсии, которая была добавлена а так же— информация о кдобавлиенте, кноторый фигурирует в конверсии, а также данные о клиенте, связанном с этой конверсией.
Можно отключить иИнформативную часть ответа data можно отключить с помощью указания параметра запроса:
В этом случае вы получите только информацию "detail" со статусом
.
Видео-объяснение с примером:
Процесс Типо
пользоватыелям:
https://app.vortex.pro/api/sales/auto-collectors/webhook/add-sale?key=1d80de0716ef4dfd86e18b8dc216444f&telegram_id={object.chat_ID}&username={object.Telegram}&purchase_price=123&purchase_name=тест
Процесс по заказам:
https://app.vortex.pro/api/sales/auto-collectors/webhook/add-sale?key=1d80de0716ef4dfd86e18b8dc216444f&telegram_id={object.user.chat_ID}&username={object.user.Telegram}&purchase_price={object.cost_money_value}&purchase_name={object.positions}
1. Некорректное !Список типичных ошибоки при передаче данных:
через вебхук
укназвана пиеременная дополнительного поля в геткурс вGetCourse
В параметреах вебхука. (Пуказано имя поля с ошибками — например, содержатся пробелы/, точки)2. Вили другие недопустимые псимволыта. Убедитесь, что имя поля соответствует формату, ожидаемому системой (латиница, без пробелов и специальных символов).
2. Передача тестовой конверсии без обязательных идентификаторов
Попытка отправить тестовую конверсию человека без tg_idуказания telegram_id или без username.3.username. Для корректной обработки необходимо передавать хотя бы один из этих идентификаторов.
3. Сохранение ответа вебхука в переменную во время отладки
При -локальной отладке некоторые разработчики сохраняеюте ответ от вебхука в переменную, что может мешать реальной обработке запроса. Убедитесь, что вебхук корректно отправляется на сервер, а не «заглушается» в коде.
4. КНесосяк гответкурса ствие типома переменной в GetCourse
GetCourse может некорректно интерпретировать данные, если тип поля (текстовое/числовое) не совпаядает с передаваемым значением. Например, telegram_id лучше указывать как числовая) -ое помленять. тип попробовать у переменной с tg_id. Иногда рандомно может подтупливать пПри настройке рекомендуется проверить и при необходимости изменить тип поля.
5. КПередакое то изча значения в виде строкового нуля ("0")
Иногда одно из полей передаеётся как строка "0", что может интерпретировыйаться как пустое или некольрректное значение.
Рекомендация: Попробуйначните с минимальностго навить вбора параметрахов передачу, (например, только tg_id.telegram_id), Иа затем постепенно добавляйте постарамльные, чтробы свыявить дпругиоблеми даннымиое по очлереди. Так найдете в каком из них может быть ошибка
6. Не проставключена галочкапция "«Выполнять действия по настоящему"» в GetCourse
Эта галочка обязательна для активации реальной обработки вебхука. Если она не установлена, действия не будут выполняться, даже если запрос технически успешен.




















