Skip to main content

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 рублей в месяц. 

IMG_9957.jpeg

Вариант 2: сайт упакован в MiniApp

Если вы используете наше более продвинутое решение с проксированием ссылок через MiniApp, то нужно действовать несколько иначе:

1. При настройках прокси-ссылки (MiniApp) необходимо указать передачу сервисных UTM-меток. Метка telegram_id по умолчанию включается при установке соответствующей галочки — её значение будет подставляться динамически. Кроме telegram_id, в UTM-метках можно передавать и другие служебные параметры: username, ФИО пользователя, наличие Telegram Premium. Если в вашей системе уже используется поле для сбора Telegram ID (например, tg_id, telegram, user_id и другие), просто укажите его название в соответствующее поле.


photo_2025-09-03_17-05-48.jpg

2. Далее необходимо записать telegram_id из UTM-метки в дополнительное поле GetCourse. Для большинства технических специалистов эта задача является стандартной и несложной. Во многих образовательных проектах уже используется скрипт, автоматически сохраняющий UTM-метки в дополнительные поля клиента.

Как настроить передачу Telegram ID в доп. поле GetCourse

Как настроить передачу Telegram ID в доп. поле GetCourse:

Для начала нужно создать дополнительное поле у пользователя. 

Переходим в Ученики ➡️ Пользователи ➡️ Дополнительные поля

photo_1_2025-09-01_12-51-36.jpg

photo_1_2025-09-02_16-00-24.jpg

Далее добавляем доп. поле:
•    Тип – число
•    Заголовок – telegram_id

Сохраняем.

dsgfd.jpg

Далее добавляем поле в форму на лендинге.

Переходим в раздел Сайт ➡️ Страницы. В настройках формы добавляем «Поле пользователя». Обязательно указываем CSS класс элемента:
•    telegram_id
•    hidden – скрываем поле

photo_4_2025-09-01_12-51-36.jpgphoto_3_2025-09-02_16-00-24.jpg

Добавляем блок «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>

Сохраняем и опубликовываем страницу.

Далее нам необходимо обернуть наш сайт в мини-приложение. 

Как работать с прокси-ссылками показано в этой статье.

Чтобы использовать продвинутые функции прокси-ссылок, помимо передачи telegram_id в дополнительное поле, необходимо установить в HEAD вашего сайта уникальный скрипт от Vortex!

<script type="text/javascript" src="https://app.vortex.pro/static/webapp_integration.js"></script>

Подробности — в этой статье.

Теперь при заполнении формы Telegram ID пользователя будет автоматически записываться в дополнительное поле.


Вариант 3: связка GetCourse и Salebot

 

Вы также можете передать telegram_id в дополнительное поле через лендинг на 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

Материал находится на редакции.


Важно отметить, что передача telegram_id через мини-приложение (вариант 2) — наиболее надёжный способ. При его использовании идентификатор Telegram фиксируется в GetCourse у 100% пользователей, оставивших заявку.
В сравнении с этим, остальные способы сопряжены с потерями: от 20% до 40% пользователей не переходят в Telegram-бота со страницы благодарности после регистрации на бесплатный продукт, и их telegram_id в систему не попадает.

Этап 2. Передача заказа в Vortex

Отправка и пример корректного GET запроса из GetCourse в Vortex.

1. Получение ссылки для отправки GET запроса в сервисе. 

Ключ веб-хука можно скопировать прямо в сервисе.

Где найти ключ веб-хука

1. Перейдите в Продажи ➡️ Управление конверсиями

1.jpg

2. Создайте новую группу и добавьте веб-хук в качестве источника, нажав на плюс в столбце «Действия»

2.jpg

3.jpg

3. Скопируйте ключ веб-хука

4.jpg

При успешном копировании у вас всплывёт уведомление «Ключ веб-хука скопирован».

Для отправки веб-хука из 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 покупателя

Для отправки вебхука необходимо указать либо telegram_id, либо username — достаточно передать хотя бы один из этих параметров.

Если вы передаёте telegram_id, отправка username не требуется.

/опциональное purchase_price  float (число), цена конверсии
/опциональное purchase_name  string (строка), название конверсии
/опциональное purchased_at  Можно не указывать. В этом случае подставится время отправки webhook.
datetime (дата и время), время совершения конверсии.
Если отсутствует — подставится дата отправки настоящего запроса.
/опциональное

utm_source

utm_medium

utm_campaign

utm_content

utm_term

string (строка), значения UTM-меток

 

Можно передать как одну из UTM-меток, так и все сразу.

Каждая из них будет привязана к соответствующей конверсии и отправлена вместе с ней.

Важно: названия UTM-меток должны точно соответствовать установленным стандартам — любое отклонение может привести к некорректному сбору данных.

 

Пример объекта create_session с указанием источника и его UTM-меток:

 

image.png

 

Для того, чтобы передать эти значения, нужно использовать специальные переменные. Они зависят от типа объекта.

 

В процессах по пользователям переменные имеют следующий формат:

  • {object.create_session.utm_source}

В процессах по заказам и покупкам используется дополнительная приставка user.

  • {object.user.create_session.utm_source}

Для передачи UTM-меток используются следующие переменные:

  • {create_session.utm_source}
  • {create_session.utm_medium}
  • {create_session.utm_campaign}
  • {create_session.utm_content}
  • {create_session.utm_term}

Более подробная информация: 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 ➡️ Процессы.

1.jpg

Создадим новый процесс с типом объекта «Заказы».

2.jpg

В настройках выбираем пункт «Периодическая проверка» и указываем правило вхождения объекта — тот заказ, который мы хотим передать в Vortex. В нашем примере это бесплатный тестовый заказ.

3.jpg

Сохраняем и переходим во вкладку «Процесс». Добавляем блок «Операция» ➡️ «Заказ» ➡️ «Вызвать url».

4.jpg

5.jpg

Здесь мы используем GET запрос. Вставляем нашу ссылку, которую мы получили в первом пункте, в поле «URL» и сохраняем.

6.jpg

7.jpg

Как проверить успешность отправки вебхука на сервис:

Вы можете указать переменную, в которую будет сохраняться ответ от сервиса после попытки отправки вебхука. Затем достаточно проверить значение, записанное в этой переменной.

После успешной отправки вебхука вы получите следующий ответ:

'detail': 'Successfully added sale',
'data': {
'telegram_id': 12321312,
'first_name': None,
'last_name': None,
'username': None,
'has_premium': None,
'register_date': None,
'joined_at': None,
'left_at': None,
'purchased_at': '2025-07-02T08:45:48',
'purchase_name': None,
'purchase_price': None,
'seconds_until_purchase': None,
'time_until_purchase_humanreadable': None,
'source': {
'is_tgads': False,
'name': 'Не найдены в базе'
},
'audience': None,
'creative': None,
'is_bot': None
}
'utm_tags': {
'utm_source': 'test',
'utm_medium': 'test',
'utm_campaign': 'test',
'utm_content': 'test',
'utm_term': 'test'
}
}

Ответ состоит в основном из двух частей:

  • detail — статус отправки вебхука. Указывает, была ли отправка успешной или произошла ошибка.
  • data — информация о добавленной конверсии, а также данные о клиенте, связанном с этой конверсией.

Информативную часть ответа data можно отключить с помощью указания параметра запроса:

В этом случае вы получите только информацию detail со статусом.

Видео-объяснение с примером:

Типовые ошибки при передаче данных через вебхук

1. Некорректное название дополнительного поля в GetCourse
В параметрах вебхука указано имя поля с ошибками — например, содержатся пробелы, точки или другие недопустимые символы. Убедитесь, что имя поля соответствует формату, ожидаемому системой (латиница, без пробелов и специальных символов).

2. Передача тестовой конверсии без обязательных идентификаторов
Попытка отправить тестовую конверсию без указания telegram_id или username. Для корректной обработки необходимо передавать хотя бы один из этих идентификаторов.

3. Сохранение ответа вебхука в переменную во время отладки
При локальной отладке некоторые разработчики сохраняют ответ вебхука в переменную, что может мешать реальной обработке запроса. Убедитесь, что вебхук корректно отправляется на сервер, а не «заглушается» в коде.

4. Несоответствие типа переменной в GetCourse
GetCourse может некорректно интерпретировать данные, если тип поля (текстовое/числовое) не совпадает с передаваемым значением. Например, telegram_id лучше указывать как числовое поле. При настройке рекомендуется проверить и при необходимости изменить тип поля.

5. Передача значения в виде строкового нуля ("0")
Иногда одно из полей передаётся как строка "0", что может интерпретироваться как пустое или некорректное значение.
Рекомендация: начните с минимального набора параметров (например, только telegram_id), а затем постепенно добавляйте остальные, чтобы выявить проблемное поле.

6. Не включена опция «Выполнять действия по настоящему» в GetCourse
Эта галочка обязательна для активации реальной обработки вебхука. Если она не установлена, действия не будут выполняться, даже если запрос технически успешен.

8.jpg