23 декабря 2020

Меняем программистов на Typeform или как лайфхачить в условиях ограниченных ресурсов

Ольга Шаврина
Уперлись с одной стороны в то, что если не автоматизируем процесс отмены заказов, то утонем. А с другой – что некому этим заниматься. Тогда мы придумали лайфхак с Typeform которым я горжусь как слон!
Дискляймер для тех, кто не знает, что такое Typeform – это сервис для создания интерактивных форм, например, для опросов, регистрации и др. Суть в том, что каждый шаг выдается по очереди, возможны логические развилки и интерактивные элементы. Ближе к чат-боту, чем к форме. Пользователям проще и приятнее заполнять ее, чем обычные унылые формы. А довольный вовлеченный пользователь = высокая конверсия.
Когда начинаешь разрабатывать продукт – фокусируешься на основном сценарии – happy path. Пользователь пришел, выбрал, купил, ура! О том, что от основного сценария могут быть ответвления (возврат, отмена, редактирование заказа и др.) не думаешь, вернее, думаешь, но решаешь обрабатывать это руками.

Это совершенно нормально и даже правильно. Никто в здравом уме не начнет разработку продукта с автоматизации процесса отмены заказа. Но в какой-то момент сталкиваешься с тем, что пора навести порядок в этом процессе, т.к. количество отмен заказов растет прямо пропорционально количеству продаж, а руками все не обработаешь. С этим мы и столкнулись в Nautal прошлой весной в самом начале COVID пандемии.
У нас до автоматизации было так
Когда клиент хотел отменить заказ, он звонил нам. Служба клиентской поддержки выслушивала клиента, говорила ему «ок, мы свяжемся с владельцем лодки и вам перезвоним». Звонила владельцу, объясняла ситуацию. Он – либо говорил «ок, верну деньги», либо «ничего не знаю, деньги мои», а иногда «могу вернуть, но только половину и через два месяца» или любой другой рандомный ответ.

В первом случае мы звонили клиенту и говорили, что все ОК, и как только владелец нам заплатит – мы переведем деньги. Во втором начинали пляски с бубном вокруг обоих контрагентов, чтобы разрулить ситуацию.

В высокий сезон когда в день приходят сотни а то и тысячи заказов, отмен тоже немало. Ребята из клиентского сервиса сходят с ума. Хорошо то, что в 85%-90% случаев владелец согласен вернуть деньги, но каждый из этих кейсов требует сделать два звонка, что отнимает время и силы.
Что хотели сделать
Первое, что пришло в голову «Ох ща как напрограммируем!» Вот тут кнопочка, по ней открывается формочка, на ней другая кнопочка, тут лейблочка со статусом, тут уведомление, здесь попап, там….

Но до этого не дошло, так как не было программисто-рук – разгар COVID, один программист недавно ушел, остальные – заняты на срочных проектах, без которых не пережить лето.
И тут мы вспомнили
– У нас же есть Typeform, который нам уже помогал в прошлом!

Покопались в сервисе и нашли как реализовать довольно хитрую бизнес-логику через параметры и уведомления. Единственное, что нужно было сделать программистам – это поставить ссылку на Typeform в письмо клиенту и передать нужные переменные.
Итак, схема такая
Создаю две Typeform: одна – для клиентов, другая – для владельцев. Ставлю кнопку со ссылкой на первую форму в письмо подтверждения бронирования, которое отправляется клиенту. Если он хочет отменить заказ – ему надо нажать на эту кнопку.
Часть письма подтверждения бронирования со ссылкой на Typeform
В форме спрашиваю, почему он хочет отменить, что случилось, прошу приложить фото, если оно уместно. Когда клиент жмет «Отправить» – отправляю уведомление владельцу лодки с данными, введенными клиентом и информацией о бронировании: дата, номер, имя клиента, лодка и др. Плюс, отправляю уведомление в клиентский отдел.

В уведомлении, которое приходит владельцу лодки стоит ссылка на вторую Typeform, которую ему надо нажать, чтобы ответить. В этой Typeform спрашиваю владельца, согласен ли он вернуть деньги. Ответ владельца отправляю клиенту и в клиентский отдел.
Схема процесса отмены заказа с двумя Typeform. Кстати, мой подход к документированию процессов описан здесь
В итоге, если владелец согласен вернуть деньги – общение между ним и клиентом проходит без участия клиентского отдела. А это 85-90% случаев!

Та-дам!

Остальные 10-15% ситуаций обрабатываются вручную.
<!-- Дальше идет техническое описание, как реализовать этот лайфхак через две Typeform. Слабонервные могут сразу прыгнуть к концу поста -->
Разберем по-порядку
Итак, клиент получил письмо подтверждения бронирования в котором стоит кнопка «Отменить заказ». Клиент нажимает на кнопку и переходит в Typeform#1 с помощью которой оставляет заявку на отмену.

В Typeform#1 я передаю параметры: ID владельца, ID бронирования, email клиента, язык владельца, дата начала, имя лодки, имя клиента. Чтобы Typeform их понял, предварительно нужно создать соответствующие скрытые поля (hidden fields).
В Typeform нужно создать необходимые скрытые поля (hidden fields)
Использую эти параметры, чтобы:
1
Кастомизировать форму для клиента, сказав ему «С помощью этой формы можете отменить бронирование номер xxxxx, дата регистрации xx/xx/xx»
2
Отправить владельцу лодки всю информацию о бронировании
3
Отправить владельцу ссылку на другую Typeform#2, с помощью которой он может ответить на запрос клиента.
Так выглядит уведомление, которое уходит владельцу лодки:
Уведомление, которое отправляется владельцу лодки
К сожалению, в уведомление нельзя вставить кнопку, поэтому, я задействовала стрелочку emoji для привлечения внимания :)

Как видно на скриншоте – ссылка на Typeform#2 для владельца тоже содержит параметры. Зачем?

Чтобы:

  1. Четко показать владельцу, о каком бронировании идет речь
  2. Кода владелец отправит ответ – выслать уведомление клиенту со всей необходимой информацией.
Как показать Typeform на нужном языке
С первой Typeform#1 сложности с языком не было никакой, т.к. письмо подтверждения бронирования формируется на бекенде, где мы точно знаем язык клиента. Поэтому, мы создали девять разных Typeform – по одной на каждый язык, и вызываем нужную.

С Typeform#2 дела обстоят веселее. Язык клиента и владельца может быть разный. Но уведомление из Typeform – только одно и его нельзя кастомизировать. Это означает, что я не могу подменять ссылку в зависимости от языка владельца в уведомлении.

Вариант «в лоб» был создать 9 х 9 = 81 разных форм для всех возможных сочетаний языка клиента и владельца, но я слишком ленива не настолько сумасшедшая, так, что придумала передавать язык владельца через параметры формы и организовать логику переходов в самой форме.

После приветственного экрана, который пришлось сделать на четырех самых популярных языках, стоит развилка, которая направляет владельца на нужную страничку в зависимости от языка.
В зависимости от языка владельца, который передаю параметром – отправляю пользователя на нужную страничку
Общая схема выглядит довольно жутко, но на самом деле, ничего страшного собой не представляет :)
Логика переходов в Typeform владельца лодки в зависимости от его языка
Резюме
Создала две формы. Ссылку на первую (клиентскую) поставила в письмо подтверждения бронирования. Клиент заполняет форму – уведомление уходит владельцу. В этом уведомлении стоит ссылка на вторую форму (форму владельца). Владелец заполняет вторую форму – уведомление уходит клиенту. Ребята из клиентского отдела получают копии всех писем, чтобы быть в курсе, что происходит и вмешаться, если что-то идет не так.
<!-- Конец технической части. Можно вернуться и прочитать ее еще раз :) -->
Не скажу, что реализация этого бесчинства далась мне легко. Пришлось 100 раз всем все объяснять, синхронизировать клиентский отдел и отдел маркетинга (который отвечает за наш Typeform), курировать команду переводчиков и самой проверять всю логику форм на всех языках. Но ресурсы я сэкономила, и задачу решила. Клиентский отдел пережил лето. А к следующему, возможно, все сделаем по-уму, если не найдем более важных задач :)
Мораль
Бывает, надо решить срочную и важную проблему и сразу хочется колбасить, рисовать формы, кнопки, писать спецификации и ставить задачи программистам и дизайнерам. Но нужно себя останавливать и оценивать:
1
А нельзя ли решить это по-другому?
2
А надо ли делать все, или достаточно решить 80% проблемы, приложив 20% усилий?
3
А можно ли решить проблему без программистов?
4
А нет ли других задач, которые еще более важные и срочные?
5
А делали ли мы что-то похожее (или не похожее) в прошлом, и нельзя ли применить то решение к этой проблеме?
Иногда на один из этих вопросов находится неожиданный ответ, который приводит к креативному решению, экономии времени или денег или просто позволяет тебе сделать то, что казалось невозможным.

Нажимая на кнопку, вы даете согласие на обработку своих персональных данных и соглашаетесь с политикой конфиденциальности