Skip to main content

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

IMG_9957.jpeg

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

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

    1.

  • При настройках прокси-ссылки (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. Если название метки вас устраивает — просто ничего не трогайте:) 


    IMG_1652.jpegphoto_2025-09-03_17-05-48.jpg


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

    В

    Камк настроить передачу 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 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}



ОВажно отмечутить, что способ с передачейа 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. Перейдите в Про создатьжи г➡️ Упруппуавление конверсиями

1.jpg

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

Кнакжав этона плюсделать описано здесь - https://docs.vortex.pro/sections/72-okno-upravlenie-konversiiami/page/kak-zagruzat-klientov-v-servis-algoritm


2.Создание связки в столбцер «Действися»

2.jpg

3.jpg

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

4.jpg

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

Для запросов.

Подробная инструкция как отправлятьки веб-хука изапросы содержитсяGetCourse в документации getcourse по ссылке:https://getcourse.ru/blog/276215
и производится в следующем окне:

Описание изображения

Чтобы передать данные о продажах / заказах,VORTEX необходимо создать процесс. Процесс может быть как по заказам, так и по пользователям. Исходя из типа объектавить, переменные в ссылке бу,дут котличаться.

Если проруюцесс сгенерирпо пользователям:

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 покупателя

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

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

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

utm_source

utm_medium

utm_campaign

utm_content

utm_term

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

 

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

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

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

 

Пример объекта create_session с указанием источника и его utm-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, в которой передаётся 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 ➡️ Процессы.

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'
}
}

Ответ главным образом состоит в основном из 2двух частей: 

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


Можно отключить иИнформативную часть ответа 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
Эта галочка обязательна для активации реальной обработки вебхука. Если она не установлена, действия не будут выполняться, даже если запрос технически успешен.

image.png8.jpg