GetCourse – Как загружать клиентов через Webhook
Чтобы система работала, необходимо, чтобы Telegram ID каждого пользователя сохранялся в дополнительное поле в GetCourse.
В момент создания заказа срабатывает автоматизация, и данные передаются в Vortex через вебхук. После этого вы получаете доступ к сквозной аналитике – от источника трафика до конечной продажи.
Для проектов, где воронки в Telegram построены на стандартном конструкторе GetCourse, передача данных возможна через GET-запросы прямо из системы.
Важно!
GetCourse по умолчанию не сохраняет Telegram ID. Чтобы настроить интеграцию, сначала нужно научить систему автоматически записывать этот идентификатор в дополнительное поле пользователя. Только после этого можно создавать процесс и передавать данные в Vortex через вебхук.
Без этого шага интеграция работать не будет.
Этап 1. Сохранение Telegram ID в дополнительное поле GetCourse
Существует несколько способов сохранения Telegram ID в дополнительное поле – выбор зависит от вашей воронки и используемых инструментов. Ниже приведены основные рабочие варианты:
Вариант 1: плагин Telegram User Data от GetCourse
Если ваша воронка в Telegram собрана в GetCourse, вы можете «вытащить» telegram_id прямо из системы.
Недавно появилась официальное расширение от GetCourse, которое позволяет автоматически сохранять user_id и username в дополнительные поля. Это удобное и проверенное решение стоит всего 500 рублей в месяц. 
Вариант 2: сайт упакован в MiniApp
Если вы используете наше более продвинутое решение с проксированием ссылок через MiniApp, то нужно действовать несколько иначе. В Vortex реализована технология автоматической передачи Telegram ID в UTM-метку при переходе пользователя по ссылке. Вам остаётся лишь передать значение в дополнительное поле пользователя в GetCourse — для дальнейшей интеграции с Vortex.
1. При настройках прокси-ссылки (MiniApp) необходимо указать передачу сервисных UTM-меток.
Метка telegram_id по умолчанию включается при установке соответствующей галочки – её значение будет подставляться динамически.
Кроме telegram_id, в UTM-метках можно передавать и другие служебные параметры: username, ФИО пользователя, наличие Telegram Premium. Если в вашей системе уже используется поле для сбора Telegram ID (например, tg_id, telegram, user_id и другие), просто укажите его название в соответствующее поле.
2. Далее необходимо записать telegram_id из UTM-метки в дополнительное поле GetCourse. Для большинства технических специалистов эта задача является стандартной и несложной. Во многих образовательных проектах уже используется скрипт, автоматически сохраняющий UTM-метки в дополнительные поля пользователя.
Как настроить передачу Telegram ID в доп. поле GetCourse
Для начала нужно создать дополнительное поле у пользователя.
1. Переходим в «Ученики» ➡️ «Пользователи» ➡️ «Дополнительные поля»
2. Далее добавляем доп. поле:
• Тип – число
• Заголовок – telegram_id
Сохраняем.
3. Добавляем поле в форму на лендинге.
Переходим в раздел «Сайт» ➡️ «Страницы». В настройках формы добавляем «Поле пользователя». Обязательно указываем CSS класс элемента:
• telegram_id – с помощью этого класса скрипт будет распознавать поле и подставлять в него Telegram ID
• hidden – скрываем поле
4. Добавляем блок «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 wrappers = document.querySelectorAll('.telegram_id');
wrappers.forEach(function (wrapper) {
const input = wrapper.querySelector('input');
if (input) input.value = telegramId;
});
});
</script>
Сохраняем и опубликовываем страницу.
5. Далее нам необходимо обернуть наш сайт в мини-приложение.
Как работать с прокси-ссылками показано в этой статье.
Чтобы использовать продвинутые функции прокси-ссылок, помимо передачи telegram_id в дополнительное поле, необходимо установить в HEAD вашего сайта уникальный скрипт от Vortex!
<script type="text/javascript" src="https://app.vortex.pro/static/webapp_integration.js"></script>
Подробнее о том, где найти и как установить скрипт на свой сайт, в этой статье.
Теперь при заполнении формы Telegram ID пользователя будет автоматически сохраняться в дополнительное поле пользователя в GetCourse.
Чтобы проверить работу скрипта, перейдите по созданной в Vortex ссылке. Для этого скопируйте её в интерфейсе сервиса и вставьте в адресную строку браузера. Убедитесь, что данные подставляются корректно.
Вариант 3: связка GetCourse и Salebot
Если ваша воронка построена на Salebot, вы можете динамически передать telegram_id в дополнительное поле пользователя GetCourse. Для этого необходимо выполнить следующие шаги:
1. Настроить интеграцию Salebot и GetCourse
Как настроить интеграцию Salebot и GetCourse
2. Получить прокси-ссылку на Telegram для запуска воронки в Telegram-боте
Как получить ссылку на Telegram-бота в Salebot
1. Создайте лендинг в разделе «Сайты»
2. В поле «Тег» укажите значение из поля «Условие» первого блока вашей воронки.
3. Перейдите в раздел «Ссылки на мессенджеры» и скопируйте прокси-ссылку на Telegram – она будет использоваться для запуска воронки.
3. Далее нужно связать пользователя Salebot с пользователем GetCourse. Для этого передадим email пользователя GetCourse в Salebot.
Добавим в полученную ссылку переменную email:
Пример ссылки:
https://sbsite.pro//ab123a12aa1a1a1a1ab12345a1ab1a12_1?email={email}
Именно эту ссылку необходимо вставить на страницу благодарности.
Так как в кнопке переменные пользователя не подставляются, ссылку можно «вшить» в текст и поставить галочку «Заменять переменные пользователя».
Если вы хотите использовать именно кнопку, можно создать форму с единственным полем – email, и скрыть это поле с помощью CSS-класса hidden.
В обработчике формы указать переадресацию на прокси-ссылку на Telegram-бот с переменной email и поставить галочку «Заменять переменные в URL».
При переходе по ссылке – вшитой в текст или через кнопку – в Salebot будет передан email пользователя.
4. Теперь необходимо передать telegram_id из Salebot в дополнительное поле пользователя GetCourse.
Для этого сначала нужно создать дополнительное поле пользователя на стороне GetCourse.
Как создать дополнительное поле пользователя GetCourse
1. Переходим в «Ученики» ➡️ «Пользователи» ➡️ «Дополнительные поля»
2. Далее добавляем доп. поле:
• Тип – число
• Заголовок – telegram_id
Сохраняем.
После этого можно реализовать передачу Telegram ID.
Это делается с помощью функций в так называемом «Калькуляторе» в Salebot.
Калькулятор – это поле в редакторе блока, где можно выполнять логические и арифметические действия, а также вызывать API-запросы к конструктору и подключённым интеграциям.
Добавим в первый блок воронки функцию. В поле «Калькулятора» вставим следующее:
result=getcourse_add_user(1, email, '', '', '{"addfields":{"telegram_id": #{platform_id}}}')
Сохраняем.
5. Остаётся только протестировать процесс, пройдя по пути клиента. При успешном выполнении функция возвращает True, а в переменную сделки getcourse_user в Salebot записывается ответ сервера:
| {"success":true,"user_id":123456789,"user_status":added,"error_message":"","error":false} |
Если произошла ошибка (например, в GetCourse нет активной подписки), в переменную result запишется сообщение об ошибке:This method in Getcourse only works on paid Getcourse plans. During the test period - no.
Если ваша воронка построена таким образом, что пользовтель переходит из бота на сайт с формой, а не наоборот, то вы также можете передать telegram_id в дополнительное поле пользователя GetCourse через лендинг – по аналогии со способом, реализованным через мини-приложение.
Как передать Telegram ID из Salebot в GetCourse через лендинг
Для этого в GetCourse создайте дополнительное поле у пользователя (см. инструкцию «Вариант 1»). Затем в форму на лендинге добавьте «Поле пользователя», укажите 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>
Сохраните и опубликуйте страницу.
Теперь, чтобы значение telegram_id записалось в дополнительное поле, необходимо выдать пользователю через бота ссылку типа https://[ваш_аккаунт].getcourse.ru/[ссылка_на_лендинг]?telegram_id=#{platform_id} или https://[ваш_домен]/[ссылка_на_лендинг]?telegram_id=#{platform_id}
Вариант 4: связка BotHelp и GetCourse
Если ваша воронка построена на BotHelp, вы можете динамически передать telegram_id в дополнительное поле пользователя GetCourse. Для этого необходимо выполнить следующие шаги:
1. Настроить интеграцию BotHelp с GetCourse
Как настроить интеграцию BotHelp с GetCourse
2. Связать пользователей BotHelp и GetCourse
Важно отметить, что передача telegram_id через мини-приложение (вариант 2) – наиболее надёжный способ. При его использовании telegram_id фиксируется в GetCourse у 100% пользователей, оставивших заявку.
В сравнении с этим, остальные способы сопряжены с потерями: от 20% до 40% пользователей не переходят в Telegram-бота со страницы благодарности после регистрации на бесплатный продукт, и их telegram_id в систему не попадает.
Этап 2. Передача данных в Vortex
После того как вы настроили сохранение telegram_id в дополнительное поле пользователя в GetCourse, следующий шаг – передача данных поступающих заказов в Vortex. Это необходимо для построения сквозной аналитики: от источника трафика до конечной продажи.
Передача осуществляется через процесс, созданный в конструкторе GetCourse, с использованием вебхука.
Что нужно для передачи данных из GetCourse в Vortex через вебхук?
1. Убедиться, что telegram_id сохраняется в дополнительном поле пользователя
2. Создать группу конверсий в Vortex и выбрать вебхук в качестве источника
Как в Vortex создать группу конверсий
Подробнее о группах конверсий вы можете прочитать в этой статье.
1. Перейдите в Продажи ➡️ Управление конверсиями. Укажите название группы и нажмите «Создать»
2. Добавьте вебхук в качестве источника, нажав на значок «+» в столбце «Действия». Укажите название связки и нажмите «Добавить».
3. Перед вами откроется окно настройки вебхука. Здесь вы можете скопировать или перегенерировать ключ, а также указать название и сумму покупки по умолчанию. Если при передаче заказа не будут переданы название и сумма, в Vortex автоматически подставятся значения по умолчанию. Таким образом, приоритет всегда отдается данным, переданным через вебхук.
3. Получить ссылку для отправки вебхука
Как правильно составить ссылку для отправки данных по заказу через вебхук
Ссылка для отправки вебхука состоит из ключа вебхука и переменных, в которых передаются данные заказа.
Пример ссылки, в которой передаются Telegram ID пользователя, стоимость и, название и UTM-метки заказа:
https://proxy.vortex.pro/webhooks/sale?key=a1234b5c6789012d34e56789f01g2345?telegram_id={object.user.telegram_id}&purchase_prise={object.cost_money_value}&purchase_name={object.positions}&utm_source={object.create_session.utm_source}&utm_medium={object.create_session.utm_medium}&utm_campaign={object.create_session.utm_campaign}&utm_content={object.create_session.utm_content}&utm_term={object.create_session.utm_term}


1. Ключ вебхука. Ссылка для запроса с необходимым ключом копируется напрямую из нашего сервиса – вносить в неё изменения не требуется. При успешном копировании у вас всплывёт уведомление «Ключ веб-хука скопирован».
2. Переменные. Так как мы передаем в Vortex данные заказа, то и процесс нужно выстраивать по заказам. При этом в процессах по заказам используются переменные по:
- заказу,
- пользователю, которому принадлежит заказ.
Чтобы использовать переменные по заказу, нужно добавить к ним приставку object. Таким образом мы можем передать состав заказа (название предложения), его стоимость, дату создания/оплаты, UTM-метки.
Пример: {object.cost_money_value} – стоимость заказа.
Чтобы в процессе по заказу использовать переменные по пользователю, нужно добавить приставки object и user. Так как мы записываем telegram_id в дополнительное поле пользователя, то и используем переменную по пользователю. Пример: {object.user.telegram_id}
Важно!
Если вы используете собственное обозначение для Telegram ID (например, chat_id, tg_id и т.п.), убедитесь, что именно это значение передаётся в переменной.
Критически важно, чтобы название дополнительного поля в GetCourse, UTM-метка с Telegram_ID перешедшего в Vortex (при использовании MiniApp) и переменная в ссылке были полностью идентичны.
Это обязательный параметр запроса – без него сервис не сможет корректно добавить конверсию.
Описание всех доступных параметров и переменных
| Особенность | Параметр | Описание |
| *обязательный | telegram_id |
integer (целое число), Telegram ID покупателя |
| *обязательный | username |
string (строка), Telegram Username покупателя |
|
Для отправки вебхука необходимо указать либо Если вы передаёте |
||
| /опциональное | purchase_price |
float (число), цена конверсии Для передачи этого значения используйте переменную |
| /опциональное | purchase_name |
string (строка), название конверсии
Для передачи этого значения используйте переменную |
| /опциональное | purchased_at |
datetime (дата и время), время совершения конверсии Можно не указывать. В этом случае подставится время отправки webhook. |
| /опциональное |
|
string (строка), значения UTM-меток
Можно передать как одну из UTM-меток, так и все сразу. Каждая из них будет привязана к соответствующей конверсии и отправлена вместе с ней. Важно: названия UTM-меток должны точно соответствовать установленным стандартам – любое отклонение может привести к некорректному сбору данных.
Пример объекта
Для того, чтобы передать эти значения, нужно использовать специальные переменные.
Чтобы в
Для передачи UTM-меток используются следующие переменные:
Более подробная информация – по этой ссылке.
|
Подробные инструкции:
4. Настроить процесс передачи данных по заказу в Vortex
Теперь, когда мы получили ссылку для передачи данных, нужно создать процесс по заказам в GetCourse.
Как в GetCourse создать процесс передачи данных в Vortex
Процессы в GetCourse бывают разного типа. Нам необходим процесс по заказам.
1. Перейдем в раздел «CRM» ➡️ «Процессы»
2. Создадим новый процесс с типом объекта «Заказы»
3. В настройках выберите пункт «Периодическая проверка» и укажите правило вхождения объекта — то есть конкретное предложение или тип заказа, который нужно передавать в Vortex. В нашем примере — это бесплатный тестовый заказ.
На этом этапе вы также можете задать дополнительные параметры заказа: его статус (оплачен/не оплачен), дату создания и другие необходимые данные.
4. Сохраняем и переходим во вкладку «Процесс». Добавляем блок «Операция» ➡️ «Заказ» ➡️ «Вызвать url»
5. Здесь мы используем GET-запрос и в поле «URL» вставляем ту ссылку, которую мы получили на предыдущем этапе. Сохраняем.
6. Добавляем блок «Завершение процесса» и соединяем
7. Наш процесс готов. Осталось его протестировать и запустить.
Как проверить успешность отправки вебхука на сервис
Вы можете сохранить ответ от сервера в дополнительное поле GetCourse. Для этого создайте дополнительное поле заказа, а при добавлении блока «Вызов URL» в процессе укажите это поле в параметре «Записать результат в доп. поле».
После успешной отправки вебхука вы получите ответ от сервера в следующем формате:
| { "detail": "Successfully added sale", "data": { "telegram_id": 12321312, "first_name": null, "last_name": null, "username": null, "has_premium": null, "register_date": null, "joined_at": null, "left_at": null, "purchased_at": "2025-07-02T08:45:48", "purchase_name": null, "purchase_price": null, "seconds_until_purchase": null, "time_until_purchase_humanreadable": null, "source": { "is_tgads": false, "name": "Не найдены в базе" }, "audience": null, "creative": null, "is_bot": null }, "utm_tags": { "utm_source": "test", "utm_medium": "test", "utm_campaign": "test", "utm_content": "test", "utm_term": "test" } } |
Обратите внимание: приведённый ответ – это пример структуры данных. В реальном запросе значения будут уникальными: telegram_id, имя, username, UTM-метки и другая информация зависят от конкретного пользователя и источника перехода. Некоторые поля могут быть пустыми, если данные недоступны или не переданы.
Ответ от сервера состоит из двух основных частей:
detail– статус обработки вебхука. Указывает, была ли отправка успешной или произошла ошибка.data– подробная информация о добавленной конверсии, включая данные о клиенте.
Информативную часть ответа data можно отключить с помощью указания параметра запроса:response_with_data=false
В этом случае вы получите только поле detail с подтверждением статуса, без дополнительных данных.
Пример ссылки:
https://proxy.vortex.pro/webhooks/sale?key=a1234b5c6789012d34e56789f01g2345?telegram_id={object.user.telegram_id}&purchase_prise={object.cost_money_value}&purchase_name={object.positions}&response_with_data=false
После проверки перед запуском процесса отключите сохранение ответа от сервера в дополнительное поле GetCourse. Это может мешать реальной обработке запроса.
Видео-объяснение с примером
Типовые ошибки при передаче данных через вебхук
1. Некорректное название дополнительного поля в GetCourse
В параметрах вебхука указано имя поля с ошибками – например, содержатся пробелы, точки или другие недопустимые символы. Убедитесь, что имя поля соответствует формату, ожидаемому системой (латиница, без пробелов и специальных символов).
2. Передача тестовой конверсии без обязательных идентификаторов
Попытка отправить тестовую конверсию без указания telegram_id или username. Для корректной обработки необходимо передавать хотя бы один из этих идентификаторов.
3. Сохранение ответа вебхука в переменную во время отладки
При локальной отладке некоторые разработчики сохраняют ответ вебхука в переменную, что может мешать реальной обработке запроса. Убедитесь, что вебхук корректно отправляется на сервер, а не «заглушается» в коде.
4. Несоответствие типа переменной в GetCourse
GetCourse может некорректно интерпретировать данные, если тип поля (текстовое/числовое) не совпадает с передаваемым значением. Например, telegram_id лучше указывать как числовое поле. При настройке рекомендуется проверить и при необходимости изменить тип поля.
5. Передача значения в виде строкового нуля («0»)
Иногда одно из полей передаётся как строка «0», что может интерпретироваться как пустое или некорректное значение.
Рекомендация: начните с минимального набора параметров (например, только telegram_id), а затем постепенно добавляйте остальные, чтобы выявить проблемное поле.




























