Оффтоп Vladislava Rakhmanova
3 230

Кейс Uploadcare: рост проекта без активных продаж

Сооснователь и исполнительный директор «облачного» сервиса Uploadcare Игорь Дебатур о развитии стартапа только за счёт работы с клиентами.

В закладки

Всё началось с понимания того, что в веб-проектах и мобильных приложениях разработка системы загрузки, хранения, обработки и отдачи файлов отнимает слишком много времени и становится настоящей проблемой. Так в 2011 году мы разработали концепт «облачного» сервиса Uploadcare.

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

С тех пор мы растём на 5-15 % MRR (Monthly Recurring Revenue — повторный месячный доход — vc.ru) в месяц, а среди наших клиентов есть Mozilla и Cisco. При этом мы ещё не начинали активных продаж, для нас отлично сработал органический трафик вкупе с рекомендациями и деятельностью отдела по работе с клиентами (customer success).

В статье я расскажу об эволюции customer success в Uploadcare, процессах, инструментах и дальнейших планах. Больше половины наших пользователей базируются в США и почти четверть — в Европе. Поэтому речь пойдёт об инструментах, актуальных именно для этих рынков. Рассказ привязан к фазам жизненного цикла стартапов по версии Startupcommons:

  • Formation (формация).
  • Validation (подтверждение).
  • Growth (рост).​

Formation

С первых шагов компания следует концепции «for developers by developers» (от разработчиков для разработчиков — vc.ru). Мы делали продукт, которым хотели бы пользоваться сами. Большая часть первичных контактов с клиентами тоже происходила на уровне разработчиков.

Довольно быстро стало понятно, что лучший способ помочь разработчику — упростить интеграцию сервиса в его проект. Дима, наш техдиректор, знавший все технические аспекты продукта, вооружился почтой и Hangouts. Пару часов в день он стабильно уделял решению вопросов, возникающих у клиентов: писал сниппеты кода и с интересом смотрел на удалённые рабочие столы. Вопросы приходили и по другим каналам: Stack Overflow, GitHub и Twitter.

Дима говорит, что этот период помог познакомиться с пользователями и получить хорошее представление о сценариях использования нашего сервиса в клиентских проектах. При этом клиенты получали больше, чем ответы на свои вопросы — они получали готовую интеграцию. Обычно такие вещи доступны только на дорогих enterprise-тарифах (рассчитанных на крупные компании).

Со многими клиентами у меня сложились хорошие отношения. После интеграции я интересовался, как работает сервис, есть ли замечания и вопросы. Получался интуитивный follow up.​

Отток платных клиентов не превышал 5%. С качественной точки зрения интеграция, выполненная техническим директором вместе с клиентом, — лучшее решение. Особенно если клиент — разработчик. Большими клиентами я занимался вместе с Димой.

Для первичных контактов мы использовали почту. Уточняли данные о компании, получали контакты ответственных лиц и только потом связывались в удобное для них время в Hangouts. Через несколько месяцев работы с enterprise-лидами я понял, что первичная переписка отнимает слишком много времени.

Мы решили автоматизировать сбор таких лидов. Похожий подход мы используем и сейчас. Клиент нажимает кнопку «get in touch» и переходит на Typeform, где оставляет базовую информацию и почту. Эти формы попадают в Reply, который формирует персонализированное письмо со ссылкой на Calendly.

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

Практически на старте проекта мы внедрили управляемую данными аналитику: начали сбор статистики поведения пользователей на сайте и ввели систему логирования операций, выполняемых при помощи нашего CDN API. Цель простая — понять, какими штуками клиенты пользуются чаще всего, и стараться внедрять туда улучшения.

Validation

Со временем количество клиентов увеличилось, возникла необходимость масштабировать коммуникации. Мне приходилось всё больше заниматься административной работой, а доля коммуникации с клиентами в структуре рабочего времени технического директора выросла до 60%.

Тогда мы решили, что проблемы пользователей нужно решать быстрее. И здесь есть два аспекта: во-первых, нужен быстрый инструмент коммуникаций; во-вторых, на вопросы, попадающие в четкую область компетенций, быстрее и доступнее ответит соответствующий специалист.

Так мы пришли к интеграции чата от Intercom. Это позволило избавиться от промежуточных интерфейсов почты и ускорить коммуникации. Кроме того, появилась возможность передавать диалоги другим членам команды.

Вообще, Intercom — это не только чат, но и CRM-система. Продукт называется Intercom Engage и позволяет общаться с клиентами в том числе по email-каналу. Полезной себя показала возможность отправлять сообщения по триггерам. Скажем, пользователь переключился на платный план или создал новый проект — ему ушло персонализированное письмо. Мы получили возможность оставаться на связи с клиентами, отслеживать их перемещения по воронке продаж.

Обратной связи тоже стало больше. Просто потому, что написать в чат со страницы сайта гораздо проще, чем создавать отдельное email-сообщение. Совокупность этих факторов позволила повысить эффективность нашего customer success на треть, не расширяя команду.

Мы впервые получили актуальные сведения о времени реакции на входящие запросы поддержки и о времени закрытия тикетов. Получалось, что время реакции составляло от трёх до пяти часов, тикет в среднем тоже рассматривался за три часа.

Для клиентов уровня enterprise в нашем SLA (Service Level Agreement — соглашении об уровне предоставления услуги) появились возможности писать на личную почту техдиректора и получать голосовую поддержку в критических ситуациях. Спать мы стали немного меньше, но получили большое число стабильных интеграций.

Управляемую данными аналитику мы дополнили внедрением Kissmetrics, где теперь отслеживаются жизненно важные показатели проекта: MRR, churn (отток), конверсии и прочие. При том, что churn rate вырос до 8%, постоянный прирост MRR обеспечивал нам так называемый net negative churn. Он служит хорошим индикатором роста компании по прибыли. Обозначились и основные источники лидов — органический трафик и рекомендации клиентов.

Growth

Немногим больше года назад Uploadcare стала расти заметно быстрее. Рост связан как с приходом новых клиентов, так и с переходом имеющихся на следующие ступени платных планов.

Для нас это стало сигналом к расширению команды, появился самый настоящий отдел customer success, а вместе с ним — инженер поддержки Омар. Он обладает хорошими коммуникативными навыками, понимает код и отлично владеет английским. Наш техдиректор передал в customer success всех клиентов, кроме enterprise, добродушно улыбнулся и погрузился в код.

Состав инструментов претерпел изменения: в арсенале инженера поддержки появился не только Intercom, но и хелпдеск от HelpScout. Enterprise-клиенты имеют возможность написать лично или воспользоваться голосовой линией связи в режиме 24/7.

К вопросам на ресурсах вроде StackOverflow, Reddit или Quora мы относимся так же серьезно, как к тикетам. Там хороший органический трафик. И если кто-то попадает на решенный вопрос, получается взаимовыгодный кейс, особенно если среди отвечавших есть кто-то из нашей команды.

Создание подразделения customer success и настройка технических инструментов положительно сказались на времени реакции и времени рассмотрения тикетов. Кстати, плюс HelpScout в том, что такая статистика наглядно отражена в отчетах системы.

На реакцию уходит пара часов, а когда Омар вдохновлён — минут десять. Закрывать тикеты успеваем за два-четыре часа, а сложные, где много кода, — за 24 часа.

Хочу ещё раз пройтись по основным особенностям инструментов.

HelpScout

Вместе с подпиской на HelpScout мы получили более гибкий рабочий процесс, в который вовлечены многие члены команды. Ещё в HelpScout есть knowledgebase (база знаний) — отличная возможность превратить шаблоны ответов в статичные страницы, которые пользователи могут найти сами.

На страницах базы знаний поддерживаются эмбеды Codepen, это значит, что посетители могут видеть «живой» пример вместе со сниппетом кода. Анализируя посещаемость и запросы по knowledgebase, мы выделяем самые частые проблемы и соответствующим образом корректируем документацию и клиентскую панель управления.

Intercom

Если HelpScout управляет входящими письмами поддержки, то Intercom — это интерактивный чат. Огромный плюс Intercom в том, что каждый созданный чат привязан к точке входа, то есть можно точно понять, с какой страницы сайта поступает запрос. Чат перетянул на себя больше половины всех запросов в поддержку, в целом вовлеченность пользователей с этим инструментом стала выше.

Кроме того, Intercom служит своеобразным фильтром «поверхностных» запросов, и в email-канал теперь поступают более осмысленные сообщения. Например, недавно в Intercom нас спросили, в чём смысл жизни, за 24 часа мы смогли лишь немного приблизиться к ответу.

Другие практики

«Думаю, что метрика качества работы customer success отражает то, насколько подразделение справляется с критическими ситуациями клиентов. Такой своеобразный critical issues resolve rate (уровень эффективности разрешения критических проблем)», — отмечает Омар.

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

Постепенно мы внедряем и «превентивные» практики. Ошибки разных модулей Uploadcare собираются в Rollbar. То есть зачастую мы первыми сталкиваемся с ошибками API. Если это произошло с нами, то может случиться и с клиентом. Изучение данных Rollbar позволяет планомерно вносить правки в код.

В работе «на опережение» мы не только исправляем ошибки, но и улучшаем продукт там, где это необходимо. Например, благодаря аналитике мы узнали, что операция resize (изменение размера) — первая по частоте использования в нашем CDN API.

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

Если говорить о первых шагах в работе инженера поддержки, то есть смысл пройтись по неотвеченным тикетам. Это помогает составить первое впечатление о клиентах, выявить, в какой среде они работают и с какими проблемами сталкиваются.

Дальше можно освежить технические знания, чтобы успешно помогать клиентам с интеграцией, оттачивать иностранный язык и коммуникативные навыки. Параллельно с этим стоит вводить контроль качества, подключать аналитику. Сейчас мы уделяем большое внимание метрике «resolved on first reply» (разрешение проблемы в первом сообщении от техподдержки) — с несложными тикетами мы хотим справляться быстрее.

Ещё мы обратили внимание, что когда к работе подключился инженер поддержки, то абсолютный churn rate (отток клиентов) увеличился почти в два раза — до 15%. Это связано с общим ростом числа клиентов (невозможностью уделить максимум времени каждому) и человеческим фактором (конечно, инженеру поддержки нужно накопить хороший опыт, чтобы производить интеграции и общаться с клиентами так же, как технический директор).

Growth++

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

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

#Кейсы

{ "author_name": "Vladislava Rakhmanova", "author_type": "editor", "tags": ["\u043a\u0435\u0439\u0441\u044b"], "comments": 20, "likes": 24, "favorites": 28, "is_advertisement": false, "subsite_label": "flood", "id": 23961, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15388' + '59599') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 23961, "author_id": 75278, "diff_limit": 1000, "urls": {"diff":"\/comments\/23961\/get","add":"\/comments\/23961\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/23961"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

20 комментариев 20 комм.

Популярные

По порядку

Написать комментарий...

Комментарий удален

Комментарий удален

2

Все так, подтверждаю как довольный клиент :)

Ответить
0

Класс, спасибо! Давайте может быть кейс-стади сделаем?

Ответить
1

Игорь, привет =) Рад был узнать, что у вас всё хорошо.

Ответить
2

Женя, спасибо! И мы за вами следим :)

Ответить
1

ВСЕЗАВСЕМИФОЛЛОУ :)

Ответить
0

Прекрасно =)

Ответить
1

Круто, так и надо :) продукт для себя и людей по-человечески)

Ответить
1

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

Ответить
1

Пацаны вообще ребята!

Ответить
0

Привет, Рома! Ее :metal:

Ответить
0

Круто. :)
Вижу, у вас CTO - Python guy. Я занимаюсь развитием сообщества MoscowPython - были бы рады видеть Дмитрия докладчиком на планируемой в октябре Moscow Python Conf или одном из наших регулярных митапов.
(developers for developers ;))

Ответить
1

У нас все бэкендеры питонисты :). И тема для доклада есть, потенциальная, как нам проще связаться?

Ответить
0

Игорь, напишите на team@python.ru - договоримся. :)

Ответить
0

сначала тикет приходит на общий адрес, и если на него

не может ответить инженер поддержки, то запрос

движется дальше и в итоге может оказаться

у генерального...

Так работал Киберсин)).

Ответить
0

Интересная история, спасибо, не слышал об этом раньше

Ответить
0

Всегда пожалуйста, бро.

Ответить
0

Понравилась статья.

Попробую ваш сервис, заинтересовал. :)

Ответить
0

Спасибо, пишите если будут вопросы :thumbsup_tone1:

Ответить
0

Игорь, отличная статья!
Дальнейших успехов! :)

Ответить
0

Спасибо!

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Хакеры смогли обойти двухфакторную
авторизацию с помощью уговоров
Подписаться на push-уведомления