← Черновики
VC.ruХабрДзенWord
8 135 зн. без пробелов · 4 илл. · Черновик на согласование
Найти в Дзене
Г
Георгий · техспец
Канал · 8 мин чтения
Подписаться

Переносим онлайн-школу на GetCourse: пошаговый план без потери доступов

Когда школа, с которой я работал, решила переехать со своего сайта на GetCourse, владелец первым делом спросил: «А доступы у учеников не слетят?»

Не слетели. Хотя пару раз было близко.

Я Георгий, техспец, с GetCourse работаю больше пяти лет. Ниже по порядку, как мы переносили эту школу, и пара моих ошибок с других переездов, которые лучше знать заранее.

Почему школы переезжают на GetCourse

Сайт у школы был самописный, на React. Пока проект был маленьким, всех всё устраивало. Потом каждая правка в оплате или доступах стала задачей для разработчика, и с поддержкой всего этого постоянно были проблемы. Бот работал в отдельном конструкторе, аналитика в другом сервисе, связывали их интеграции, и если что-то ломалось, узнавали об этом обычно от ученика, который уже написал в поддержку.

На GetCourse всё собралось в одном кабинете. Стало куда легче. Плюс новое оформление уроков: страницы курсов выглядят аккуратно без своей вёрстки, а раньше ради каждой такой правки звали разработчика.

С другими школами похоже.

Кто-то упёрся в возможности старой платформы, у кого-то поддержка своего кода стоит дороже подписки. Итог один: хочется держать всё в одном месте.

Что переносится, а что собирается заново

Договорились сразу: переносим только данные. Это ученики с доступами к купленным курсам и разрешения на сообщения в мессенджерах.

Логику переносить было неоткуда. На старом сайте она была зашита прямо в код: кому открыть курс, какое письмо отправить после оплаты и так далее. В GetCourse это собирается из тренингов, групп и процессов, так что всё выстроили заново.

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

Историю старых заказов целиком не переносили. Ученику важно, чтобы после переезда открылся его курс; старые чеки в кабинете ему ни к чему.

Что настроить в GetCourse до переноса учеников

Людей гружу в самом конце.

Иначе человек получит письмо о переезде, зайдёт, а в кабинете пусто. Сначала тренинги и группы, под каждый продукт своя. Доступ к тренингу открывает именно группа, поэтому при импорте достаточно положить человека в нужную. Если продуктов много, группы лучше продумать до загрузки: потом раскладывать людей руками та ещё радость.

Оплату подключаю через Get Модуль, это встроенный приём платежей. Там всё есть из коробки: карты, СБП, рассрочки, оплата частями и зарубежные карты. Подключают быстро. Но заявку я всё равно подаю в первые дни, чтобы до переключения успеть проверить оплату живыми деньгами.

С почтой мы застряли. Пока настройки почты не подтверждены до конца, импорт пользователей закрыт, а у нас подтверждено было не всё. Выручила техподдержка GetCourse. Открыли импорт на три дня, и мы успели загрузить базу. Но рассчитывать на такое не стоит, почту лучше сделать сразу.

Если на старом сайте был свой дизайн, часть можно перенести темой оформления, которую я вешаю на конкретный тренинг в его настройках: тогда она применяется ко всем урокам и не задевает остальной аккаунт. После привязки страницы ещё минут пять открываются по-старому. В первый раз я решил, что где-то ошибся, и начал всё переделывать. А надо было просто подождать.

Переносим учеников и доступы

Выгрузка и импорт

С самописного сайта базу выгружаешь сам. Я собрал её одним запросом к базе, и с запросом помогла нейросеть. На выходе почта, имя, телефон и список купленных курсов; последнее поле потом стало колонкой с группой.

GetCourse берёт CSV в UTF-8 до 20 МБ, колонки можно ставить в любом порядке. Большую базу режу на файлы по продуктам. Обычно это от 30 до 150 тысяч учеников.

Импорт лежит в «Пользователях»: «Добавить», потом «Импортировать из csv». Первым делом там бросается в глаза предупреждение: по загруженным пользователям могут запуститься активные рассылки и процессы. Его легко проглядеть. А если в аккаунте уже запущен прогрев для новичков, его получит вся старая база, включая тех, кто учится у вас второй год и давно прошёл все эти письма.

Поэтому при загрузке я выбираю группы, ставлю «Отписать от всех рассылок (кроме Уведомлений)» и не включаю стартовое письмо. Пошагово импорт описан в базе знаний, в статье «Как импортировать пользователей из файла».

Экран импорта пользователей из CSV в кабинете GetCourse
Экран импорта: предупреждение про активные рассылки, настройки загрузки и требования к файлу

Ещё там есть строка мелким шрифтом: импорт разрешён только в один поток, из одного окна браузера. То есть файлы идут строго по очереди. С большой базой это вечер.

Перед запуском GetCourse показывает первые строки файла и то, как он понял колонки. Я смотрю, не попал ли телефон в поле имени. И включаю перезапись данных при совпадении почты, чтобы старые профили обновились, а не задвоились.

Дубли

Дубли будут почти наверняка. На старом сайте человек мог купить один курс с рабочей почты, второй с личной, а кто-то вместо почты вообще оставлял телефон на @ya.ru. Для GetCourse это два разных человека. Хотя человек один.

Для таких случаев есть «Склейка пользователей» в разделе учеников. Выбираешь основной профиль и дубль, и данные дубля переносятся в основной. Если отличаются имя или группы, решаешь сам, что оставить. Основным лучше брать профиль, к которому привязан вход через VK, Google или Яндекс ID. Подробнее в статье «Объединение пользователей».

Склейка пользователей в GetCourse: основной профиль и профиль-дубль
Склейка пользователей: основной профиль, профиль-дубль и статус объединения. Данные скрыты

Бот

С ботом было сложнее всего. Разрешения на сообщения переносятся отдельно от учеников, и мы сначала просто не понимали, как перевезти подписчиков, чтобы никто не вылетел из воронки на середине.

Сделали в итоге так.

Завели в GetCourse нового бота и пустили на него весь новый трафик. Старый бот продолжал работать на прежнем сервисе, пока у всех, кто был внутри, воронки не завершились, и только потом мы остановили их там, перенесли ключи старого бота в GetCourse и стали использовать его базу для рассылок. Сработало. Из воронки никто не вылетел.

Самое сложное было связать подписчиков бота с учениками: в базе человек записан по почте, а в Telegram у него только tg id. Тут помогла техподдержка GetCourse. Сами бы возились долго.

Схема переноса Telegram-бота при переезде школы на GetCourse
Новый бот берёт трафик, старый работает, пока воронки не завершатся, потом переносим ключи

С ВКонтакте проще. Разрешения на сообщения из другого сервиса импортируются даже без техподдержки.

Проверяем доступы до переключения

Проверяю всегда под учеником.

В карточке пользователя для этого есть «Войти под этим пользователем». Под админом проверять бесполезно, админ же видит всё.

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

И сверяю цифры: сколько строк было в файле и сколько людей в итоге оказалось в группе. Не сходится, значит часть записей не загрузилась. Обычно виновата почта. Лишний пробел или русская буква в адресе.

День переключения

К этому дню база уже загружена и доступы проверены, так что остаётся по очереди перевести на GetCourse всё, что ведёт людей на старый сайт, и не сломать по дороге продажи.

Начинаю с тестового платежа на минимальную сумму, потом меняю кнопки оплаты на лендингах и ссылки в боте и письмах. Домен последним. Старый сайт всё это время работает.

Порядок дня переключения на GetCourse без простоя
Домен переключается последним, старый сайт работает параллельно

Тут я ошибался дважды.

Первый раз с виджетом оплаты. Я сохранил страницу с виджетом и взял код оттуда, а в сохранённой странице лежит другой идентификатор, от вложенного фрейма, и скрипт с ним себя на странице не находит. Виджет просто не появляется. Ни ошибки, ничего. Теперь копирую код только из кабинета GetCourse.

Второй раз с доменом. Переключил DNS, открываю сайт, а там старая версия. Час, два, три. У всех уже новый сайт, у меня старый. Я полез проверять настройки, хотя с ними всё было в порядке, и только потом понял, что провайдер просто держит старый адрес у себя в кэше. С тех пор смотрю, куда ведёт домен, с сервера.

Старый сайт после переключения не выключаю ещё две-три недели. DNS у всех обновляется по-разному, в старых письмах стоят старые ссылки. Да и ученики по привычке заходят через закладки.

Первая неделя после переезда

Первую неделю я отвечаю на вопросы вместе с поддержкой школы. Пишут в основном про две вещи.

С чатами веселее.

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

С видео тоже бывает. Если грузить ролики в уроки файлами, хранилище аккаунта рано или поздно кончится, а у одной школы оно забилось полностью, и после чистки часть старых уроков осталась с пустым плеером. Так что тяжёлое видео я держу на видеохостинге и вставляю ссылкой.

Нейросеть на этом переезде сэкономила мне много времени. С ней я составлял план переезда и писал запрос для выгрузки. Загрузку данных через API ей тоже можно поручить. А вот доступы под учеником всё равно проверяю руками.

Если вы тоже переносили школу, напишите в комментариях, как у вас было с ботом. У всех этот кусок устроен по-разному.


Георгий, техспец онлайн-школ. Автоматизирую GetCourse кодом и нейросетями. Telegram: @Georgiy_dev

👍👎КомментироватьПоделиться