ДокументацияНастройка проекта
GetCourse
GetCourse подключается во вкладке «Сценарии» → «Подключения» → GetCourse за пару минут: нужны адрес аккаунта и ключ API. После этого в блоке «Действия» появятся готовые действия GetCourse, а в стартовом блоке появится «Событие из GetCourse»: процесс GetCourse сообщает «купил», «зашёл на эфир», и у клиента запускается воронка. Вебхуки и код писать не нужно.
Как подключить
- В GetCourse откройте «Профиль» → «Настройки аккаунта» → «АПИ».
- Создайте ключ: название «TERVIO», права «Для чтения и записи». Скопируйте его сразу: полностью GetCourse показывает ключ один раз. Ключ «Только для чтения» не подойдёт: GetCourse ответит «Действие запрещено».
- Здесь впишите адрес аккаунта (
school.getcourse.ru, простоschoolили свой домен, если GetCourse переадресует на него) и ключ. Нажмите «Подключить», затем «Проверить подключение». - В GetCourse: раздел «Пользователи» → «Дополнительные поля» → «Добавить поле», тип «Строка», название как в поле «Доп. поле для номера клиента» ниже (по умолчанию
tervio_id). В него действие «GetCourse» → «Добавить или обновить пользователя» запишет номер клиента TERVIO. - В воронке поставьте блок «Действия» → «GetCourse» → «Добавить или обновить пользователя», когда у клиента уже есть почта или телефон.
- Чтобы события из GetCourse запускали воронку: в процессе GetCourse добавьте операцию «Вызвать URL» с адресом ниже, а в воронке поставьте старт «Событие из GetCourse» с тем же названием события.
«Проверить подключение» спрашивает у GetCourse список доп. полей и ничего не меняет. Права ключа на запись так не проверить: ключ «Только для чтения» список отдаёт. Если ключ всё же только для чтения, первое действие воронки получит от GetCourse «Действие запрещено», и это будет видно в журнале.
Аккаунтов может быть несколько: каждое действие и каждый старт выбирают свой. Если аккаунт один, его берут сами. Ключ хранится зашифрованным и после сохранения не показывается: виден только хвост из четырёх знаков.
Действия в воронке
Блок «Действия» → «Действие» → «GetCourse», затем операция: что она делает, написано прямо над полями. В любом поле можно писать переменные клиента: кнопка {…} у поля открывает список переменных проекта с поиском. Пустое после подстановки в GetCourse не уходит. Пользователя GetCourse ищет по почте, нет почты: по телефону.
- Добавить или обновить пользователя — нет человека в GetCourse: создаст, есть: обновит данные. Почта, телефон, имя, фамилия, город, группы, доп. поля, UTM-метки, партнёр. Заодно пишет номер клиента TERVIO в доп. поле аккаунта (по умолчанию
tervio_id): по нему процессы GetCourse присылают события обратно. «Обновлять, если пользователь уже есть» включено по умолчанию. Группы и доп. поля дописываются, а не заменяются. - Добавить в группу — добавить в одну или несколько групп, можно с датой. Остальные группы человека не трогаются. Нет такого пользователя: GetCourse его создаст.
- Создать заказ — заказ по коду предложения, ID предложения или названию продукта: стоимость, количество, статус, «оплачен», валюта, комментарий, доп. поля заказа, UTM. «Вернуть ссылку на оплату» кладёт её в
{gc_ссылка_на_оплату}, её можно отправить клиенту следующим сообщением. - Изменить заказ — сменить статус заказа по почте и номеру (обычно
{gc_номер_заказа}) и/или отметить оплату. Статусы: Новый, Завершён, Отменён, Ложный, В работе, Ожидаем оплаты, Частично оплачен, Ожидаем возврата, Не подтверждён, Отложен.
Что получает воронка после каждого действия GetCourse:
- {gc_успех} — да или нет: получилось ли действие
- {gc_ошибка} — что ответил GetCourse, если не получилось
- {gc_user_id} — id пользователя в GetCourse
- {gc_deal_id} — id заказа в GetCourse
- {gc_номер_заказа} — номер заказа (его ждёт «Изменить заказ»)
- {gc_ссылка_на_оплату} — ссылка на оплату заказа, если её попросили вернуть
Ветка «получилось или нет»: стрелка из блока «Действия» с условием «gc_успех равна да» и вторая стрелка без условия. Ошибка GetCourse не останавливает остальные действия блока, причина видна в «Прогонах» и в журнале.
Каждое действие выполняется один раз на шаг воронки. Если TERVIO перезапустился прямо во время запроса, повторять его не будут, чтобы не завести второй заказ: в {gc_ошибка} будет сказано, что запрос прервался.
У GetCourse есть месячный лимит на создание пользователей и заказов через API, свой у каждого тарифа. Когда он исчерпан, GetCourse отвечает «Достигнут лимит на создание объектов через API»: это будет в{gc_ошибка} и в журнале. На обновление существующих лимит не действует.
События из GetCourse
В стартовом блоке выберите «Что запускает воронку» → «Событие из GetCourse» и впишите название события, напримерbuykurs. В процессе GetCourse добавьте операцию «Вызвать URL» с адресом из карточки аккаунта, в нём то же название после event=. Готовые адреса для процесса по пользователям и по заказам есть в «Сценарии» → «Подключения» → GetCourse, их можно скопировать кнопкой.
- event — название события, обязательно: латиница, цифры, «-» и «_». Его же пишут в старте «Событие из GetCourse». Два имени заняты модулем «Кураторы»:
lesson_done(урок пройден) иmodule_survey(анкета модуля); воронки на них запускаются как на любые другие. - client — номер клиента TERVIO из доп. поля:
{object.tervio_id}в процессе по пользователям,{object.user.tervio_id}по заказам. - email, phone — запасной способ найти клиента, если номера нет: по почте в карточке и по телефону.
- event_id — необязательно. Номер события: повтор с тем же номером воронку не запустит никогда. Без него одинаковое событие с теми же параметрами запускается раз в сутки.
- остальные — любые свои параметры:
deal_id={object.id},position={object.positions},amount={object.cost_money_value}. В воронке они переменные{deal_id},{position},{amount}и пишутся в карточку клиента.
- Когда срабатывает — в любой точке воронки, даже пока клиент ждёт ответа. «Повторный запуск» по умолчанию «При каждом событии»: «был на эфире» бывает каждый день курса.
- Что с текущей воронкой — переключатель прямо в старте. «Остаётся в ней» («Не состояние», по умолчанию): человек остаётся, где был, старт идёт поверх. Так ставят отметки: тег, переменная, запрос в аналитику. «Останавливается» (обычный старт): текущая воронка клиента останавливается, он идёт по этому старту. Так «купил курс»: дожимы больше не нужны.
- Несколько стартов на одно событие — как блоки в Salebot: срабатывают все подходящие старты «Не состояние», каждый своим прогоном. Обычный старт срабатывает один, первый подходящий; сначала он, потом «Не состояние», и их он не останавливает. Повтор того же события не запускает ни один.
- Где вести воронку — как у внешнего события: в боте, в личке номера или в чате. Клиент должен был хоть раз написать в этот канал.
- От какого аккаунта — если аккаунтов несколько: «Любой» или конкретный. Срабатывают оба; если оба обычные, работает только старт конкретного аккаунта.
- Ответ GetCourse — приёмник всегда отвечает «200», чтобы процесс GetCourse не уходил в ветку «Ошибка». Что стало с событием, видно в журнале.
Пример: оплатил курс
- В GetCourse процесс по заказам: условие «заказ оплачен», операция «Вызвать URL» с адресом для процесса по заказам и
event=buykurs. - В воронке старт «Событие из GetCourse: buykurs», канал «В боте», «Что с текущей воронкой клиента» → «Останавливается»: человек купил, дожимы курса ему больше не нужны.
- За ним блок «Действия»: «Действие TERVIO» → «Поставить тег» «Заказ на курс» и «Вычислить»
оплатил = 1. - Дальше блок «Сообщение»: «Спасибо за оплату! Ваш тариф: {position}, сумма {amount} ₽».
Пример: был на эфире
Процесс GetCourse шлёт event=kurs1dayenter11, когда человек зашёл на эфир первого дня в 11:00. Воронка курса при этом должна идти дальше, поэтому оба старта ниже «Не состояние» («Остаётся в ней»), и срабатывают оба.
- Старт «Событие из GetCourse: kurs1dayenter11» → «Действия»: тег «Курс, день 1, был в 11» и вебхук в аналитику.
- Второй старт с тем же событием → «Действия» → «Вычислить»
1day_enter_11 = 1. Можно и одним стартом с обоими действиями: так проще читать схему.
Оплаты в сделку
Оплаченные заказы GetCourse ложатся платежом в сделку клиента: блок «Сделка» в карточке чата, «Мои сделки», доска и стол руководителя продаж. Адрес — в карточке аккаунта, раздел «Оплаты в сделку»: тот же приёмник с хвостом/payment. Поля те же, что у вебхука GetCourse в «Аналитике продаж», поэтому второй вызов в процессе берёт те же переменные.
- В GetCourse откройте процесс по заказам, который уже отправляет оплаченные заказы в вашу аналитику.
- Добавьте в него вторую операцию «Вызвать URL» и вставьте адрес ниже. Операцию с аналитикой не трогайте: она работает как раньше, оплаты в аналитике не задвоятся — TERVIO туда эти оплаты не пересылает.
- Сумму, номер заказа и статус подставьте теми же переменными, что уже стоят в отправке в аналитику.
- Оплатите тестовый заказ и откройте вкладку «Журнал»: там видно, в чью сделку легла оплата или почему нет.
- Второй проект — второй аккаунт GetCourse в TERVIO: у него свой адрес со своим секретом, процесс там такой же.
- client — желательно: номер клиента TERVIO из доп. поля (
{object.user.tervio_id}) — самый точный способ найти клиента. - tg_id, phone, email — хотя бы одно, если нет client: запасные способы: Telegram-ID, телефон (сверяются последние 10 цифр), почта. Если по телефону или почте нашлось несколько клиентов, оплата не записывается, а в журнале появляется кнопка записать её нужному клиенту.
- deal_sum — обязательно: сколько всего оплачено по заказу на момент вызова. TERVIO записывает разницу с тем, что уже получил по этому заказу: повтор ничего не добавит, вторая часть рассрочки добавит только себя. Подходит и
amount. - order_id — обязательно: номер заказа (
{object.number}): по нему оплаты, доплаты и возвраты одного заказа считаются вместе. - deal_status — желательно: статус заказа. «Новый», «Ожидаем оплаты» и другие без денег ничего не записывают. «Отменён» или возврат снимают деньги заказа строкой «возврат» с минусом.
- offer_title — нет: что куплено: попадёт в подпись платежа и в тариф сделки, если тариф ещё не выбран.
- refund_sum — нет: сумма частичного возврата. Без неё возврат по заказу снимает всё, что оплачено, или разницу, если
deal_sumстал меньше. - payment_id — нет: номер платежа, если вы шлёте каждый платёж отдельно, а не сумму по заказу: тогда каждый номер записывается один раз своей суммой.
- created_at, paid_at — нет: дата оплаты. Без неё — момент вызова: GetCourse зовёт процесс сразу после оплаты.
- Кто клиент — номер клиента (
client), потомtg_id, телефон, почта. Если по телефону или почте нашлось несколько разных клиентов, TERVIO оплату не записывает: в журнале строка «Несколько клиентов» и поле «Номер клиента» с кнопкой «Записать оплату». Так же записывается оплата, по которой клиента не нашли. - Какая сделка — чат клиента с менеджером продаж. Сделки ещё нет — оплата ложится в переписку клиента и будет в блоке «Сделка», когда менеджер возьмёт этот чат. Этап сделки оплата не двигает.
- Повторы и рассрочка — по заказу TERVIO помнит, сколько уже записано, и добавляет только разницу: повторная отправка ничего не меняет, вторая часть рассрочки добавляет себя доплатой. С
payment_idкаждый платёж записывается один раз. - Возвраты — статус возврата или отмены, отрицательная сумма или
refund_sumдают строку «возврат» с минусом, «оплачено» по сделке уменьшается. Меньшая сумма без статуса возврата денег не снимает: так GetCourse присылает и пересчёт заказа. - Аналитика продаж — эти оплаты в «Аналитику продаж» TERVIO не пересылает. Отправку GetCourse в вашу аналитику оставьте как есть: если слать оплаты и оттуда, и из TERVIO, выручка посчитается дважды.
- Два проекта — у каждого аккаунта GetCourse свой адрес со своим секретом: подключите оба аккаунта и в каждом процессе ставьте адрес своего аккаунта. Если аккаунтов несколько, в подписи платежа есть название аккаунта.
- Удаление — оплату из GetCourse удаляют руководитель продаж и администратор, удаление попадает в журнал действий. Если GetCourse пришлёт этот заказ снова, недостающее запишется заново.
События «Кураторов» и квота
Тот же адрес принимает прохождение уроков для модуля «Кураторы»: событие lesson_done (урок пройден) иmodule_survey (анкета модуля). Если модуль подключён, урок записывается ученику на доске и двигает его по колонкам, а прохождение, где ученика не нашли, ждёт в «Кураторы» → «Настройки» → «GetCourse» → «Неопознанные прохождения». Старты «Событие из GetCourse» на эти имена тоже срабатывают, как на любые другие. Подробно и готовые ссылки: Кураторы.
- Аккаунт для «Кураторов» — в «Кураторы» → «Настройки» → «GetCourse» выбирают аккаунт отсюда: опрос групп берёт его адрес и ключ. Ключ, введённый раньше в самих «Кураторах», работает, пока аккаунт не выбран.
- Квота — GetCourse даёт аккаунту около 100 запросов к API за 2 часа на всех. TERVIO считает каждый свой запрос к аккаунту: действия воронок и опрос групп «Кураторов». Опрос групп ждёт, если израсходован его порог (по умолчанию 60); действия воронок не ограничиваются. Сервис аналитики ходит в GetCourse со своим ключом, его запросы в счётчик не попадают.
- В журнале — урок или анкету, которые «Кураторы» записали, журнал не хранит: урок виден у ученика, оценки в «Аналитике». В журнале то, что требует внимания: «Урок сохранён, ученик не найден», «Непонятно, какой урок», «Непонятно, кто прошёл урок» (макросы GetCourse не раскрылись), «Ошибка» (например, анкета без оценок). Если на событие есть старт воронки, запись о воронке такая же, как у любого события.
Журнал
Вкладка «Журнал» в карточке аккаунта: события из GetCourse и действия воронок за последний месяц (не больше 5000 записей). Итоги событий: «Воронка запущена», «Повтор, уже было», «Клиент не найден», «Нет старта на это событие», «Старт есть, воронка не запустилась». Итоги оплат: «Оплата записана в сделку», «Возврат записан в сделку», «Без изменений», «Без денег, не записано», «Клиент не опознан», «Несколько клиентов». Итоги действий: «Выполнено», «Ошибка GetCourse» с текстом GetCourse, «Сетевая ошибка», «Не отправлено» (например, у клиента нет ни почты, ни телефона). Ключа API и полной почты в журнале нет.
Перенос воронок из Salebot: вызовы getcourse_add_user и getcourse_add_deal заменяют действия «GetCourse» с операциями «Добавить или обновить пользователя» и «Создать заказ». Блок с условием «getcourse <команда>» загрузка сама делает стартом «Событие из GetCourse» с этой командой и «Любым аккаунтом»: блок «не состояние» в Salebot (типы 5 и 6) становится стартом «Не состояние», остальные блоки становятся обычным стартом. Подробнее о переносе:Загрузка воронки из Salebot.