GetCourse – Как загружать клиентов через Webhook
Для проектов, в которых воронки в Telegram построены на стандартном конструкторе GetCourse, данные о пользователях можно передавать GET запросами прямо из GetCource.
ВАЖНО! Чтобы вы могли создать процесс в GetCource и передать telegram_id через веб-хук, сначала необходимо научить GetCource записывать telegram_id каждого пользователя в дополнительное поле.
GetCource по умолчанию этого делать НЕ умеет.
Этап 1. Сохранение Telegram ID в дополнительное поле GetCourse
Вариант 1:
вороплагинка в Telegram пUser Data остроена в процессах на стандартном конструкторе GetCourse.
Если ваша воронка в Telegram собрана в GetCourse, вы можете «вытащить» telegram_id прямо из системы.
Недавно появилась официальное расширение от GetCourse, которое позволяет автоматически сохранять user_id и username в дополнительные поля. Это удобное и проверенное решение стоит всего 500 рублей в месяц. 
Вариант 2: сайт упакован в MiniApp
Если вы используете наше более продвинутое решение с проксированием ссылок через MiniApp, то нужно действовать несколько иначе:
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
Как настроить передачу Telegram ID в доп. поле GetCourse:
Для начала нужно создать дополнительное поле у пользователя или у заказа. Для примера сделаем доп. поле у пользователя.
Переходим в Ученики ➡️ Пользователи ➡️ Дополнительные поля
Далее добавляем доп. поле:
• Тип – число
• Заголовок – telegram_id
Сохраняем.
Далее добавляем поле в форму на лендинге.
Переходим в раздел Сайт ➡️ Страницы. В настройках формы добавляем «Поле пользователя». Обязательно указываем CSS класс элемента:
• telegram_id
• hidden – скрываем поле
Добавляем блок «HTML». В него вставляем код:
<script>
function parseTelegramData()getParam(name) {
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)window.location.search);
return {
id: user.idparams.get(name) || ''
};
}
}document.addEventListener('DOMContentLoaded', catchfunction (e) {
console.error('Failed to parse tgWebAppData:', e);
}
return null;
}
const telegramData = parseTelegramData();
if (telegramData) {
const telegramIdWrapperstelegramId = getParam('telegram_id');
const wrappers = document.querySelectorAll('.telegram_id');
telegramIdWrappers.wrappers.forEach(function (wrapper) {
const input = wrapper.querySelector('input');
if (input) {
input.value = telegramData.id;
}telegramId;
});
});
</script>
Сохраняем и опубликовываем страницу.
Далее нам необходимо обернуть наш сайт в мини-приложение.
Как работать с прокси-ссылками показано в этой статье.
Чтобы использовать продвинутые функции прокси-ссылок, помимо передачи telegram_id в дополнительное поле, необходимо установить в HEAD вашего сайта уникальный скрипт от Vortex!
<script type="text/javascript" src="https://app.vortex.pro/static/webapp_integration.js"></script>
Подробности — в этой статье.
Теперь при заполнении формы через MiniApp Telegram ID пользователя будет автоматически записываться в дополнительное поле.
Настройка передачи Telegram ID в дополнительное поле заказа осуществляется аналогичным образом. Для этого перейдите в раздел Продажи ➡️ Список заказов ➡️ Дополнительные поля и создайте поле telegram_id. При создании поля в настройках формы выберите тип «Поле заказа» вместо «Поле пользователя» — данные из Telegram будут подставляться в указанное поле заказа.
Вариант 3: связка GetCourse и Salebot
ЕслиВы вташа воронка собрана в Salebot, выже можете передать telegram_id в дополнительное поле через лендинг на GetCourse — по аналогии со способом, реализованным через MiniApp.мини-приложение.
Для этого в 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
Материал находится на редакции.
Важно отметить, что передача telegram_id через MiniAppмини-приложение (вариант 2) — наиболее надёжный способ. При его использовании идентификатор Telegram фиксируется в GetCourse у 100% пользователей, оставивших заявку.
В сравнении с этим, постальныервый способы сопряжёены с потерями: от 20% до 40% пользователей не переходят в Telegram Telegram-бота со страницы благодарности после регистрации на бесплатный продукт, и их telegram_id в систему не попадает.
Этап 2. ОтпПередавкча GET запросказа в VORTEXVortex
Отправка и пример корректного GET запроса из GetCourse в VORTEX.Vortex.
1. Получение ссылки для отправки GET запроса в сервисе.
Ключ веб-хука можно скопировать прямо в сервисе.
Где найти ключ веб-хука
1. Перейдите в Продажи ➡️ Управление конверсиями
2. Создайте новую группу и добавьте веб-хук в качестве источника, нажав на плюс в столбце «Действия»
3. Скопируйте ключ веб-хука
При успешном копировании у вас всплывёт уведомление «Ключ веб-хука скопирован».
Для отправки веб-хука из GetCourse в 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 (целое число), Telegram ID покупателя |
| *обязательный | username |
string (строка) , Telegram Username покупателя |
|
Для отправки вебхука необходимо указать либо Если вы передаёте |
||
| /опциональное | purchase_price |
float (число), цена конверсии |
| /опциональное | purchase_name |
string (строка), название конверсии |
| /опциональное | purchased_at |
Можно не указывать. В этом случае подставится время отправки webhook. datetime (дата и время), время совершения конверсии. Если отсутствует — подставится дата отправки настоящего запроса. |
| /опциональное |
|
string (строка), значения UTM-меток
Можно передать как одну из UTM-меток, так и все сразу. Каждая из них будет привязана к соответствующей конверсии и отправлена вместе с ней. Важно: названия UTM-меток должны точно соответствовать установленным стандартам — любое отклонение может привести к некорректному сбору данных.
Пример объекта
Для того, чтобы передать эти значения, нужно использовать специальные переменные. Они зависят от типа объекта.
В процессах по пользователям переменные имеют следующий формат:
В процессах по заказам и покупкам используется дополнительная приставка
Для передачи UTM-меток используются следующие переменные:
Более подробная информация: https://getcourse.ru/blog/275857 |
Пример ссылки для передачи GET запроса с данными о КОНВЕРСИИ из процесса GetCource, в которой передаётся Telegram ID, цена и название конверсии:
https://app.vortex.pro/api/sales/auto-collectors/webhook/add-sale?key=API_KEY&telegram_id={object.user.TG_ID}&purchase_name={object.positions}&purchase_price={object.cost_money_value}
Обратите внимание:
1. Ссылка для запроса с необходимым ключом копируется напрямую из нашего сервиса — вносить в неё изменения не требуется. API_KEY — это уникальный ключ, сгенерированный Vortex.
2. &telegram_id={object.user.TG_ID}
Вместо TG_ID подставьте название переменной (по умолчанию telegram_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» и сохраняем.
Как проверить успешность отправки вебхука на сервис:
Вы можете указать переменную, в которую будет сохраняться ответ от сервиса после попытки отправки вебхука. Затем достаточно проверить значение, записанное в этой переменной.
После успешной отправки вебхука вы получите следующий ответ:
Ответ состоит в основном из двух частей:
- detail — статус отправки вебхука. Указывает, была ли отправка успешной или произошла ошибка.
- data — информация о добавленной конверсии, а также данные о клиенте, связанном с этой конверсией.
Информативную часть ответа data можно отключить с помощью указания параметра запроса:
В этом случае вы получите только информацию detail со статусом.
Видео-объяснение с примером:
Типовые ошибки при передаче данных через вебхук
1. Некорректное название дополнительного поля в GetCourse
В параметрах вебхука указано имя поля с ошибками — например, содержатся пробелы, точки или другие недопустимые символы. Убедитесь, что имя поля соответствует формату, ожидаемому системой (латиница, без пробелов и специальных символов).
2. Передача тестовой конверсии без обязательных идентификаторов
Попытка отправить тестовую конверсию без указания telegram_id или username. Для корректной обработки необходимо передавать хотя бы один из этих идентификаторов.
3. Сохранение ответа вебхука в переменную во время отладки
При локальной отладке некоторые разработчики сохраняют ответ вебхука в переменную, что может мешать реальной обработке запроса. Убедитесь, что вебхук корректно отправляется на сервер, а не «заглушается» в коде.
4. Несоответствие типа переменной в GetCourse
GetCourse может некорректно интерпретировать данные, если тип поля (текстовое/числовое) не совпадает с передаваемым значением. Например, telegram_id лучше указывать как числовое поле. При настройке рекомендуется проверить и при необходимости изменить тип поля.
5. Передача значения в виде строкового нуля ("0")
Иногда одно из полей передаётся как строка "0", что может интерпретироваться как пустое или некорректное значение.
Рекомендация: начните с минимального набора параметров (например, только telegram_id), а затем постепенно добавляйте остальные, чтобы выявить проблемное поле.
6. Не включена опция «Выполнять действия по настоящему» в GetCourse
Эта галочка обязательна для активации реальной обработки вебхука. Если она не установлена, действия не будут выполняться, даже если запрос технически успешен.


















