Буруки
Компания
31,91
рейтинг
31 июля 2013 в 15:34

Разработка → Привлечение аудитории — партнерская программа своими руками

image
Привет, Хабр! Эта статья — первая в нашем буручном блоге.

Мы делаем метапоиск авиабилетов buruki.ru с человеческим лицом. Здесь мы будем делиться техническими и психологическими открытиями, которые мы совершаем каждый день в работе над проектом.

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


Зачем вообще нужна партнерская программа моему сервису?


Этот вопрос особенно актуален на Хабре, здесь подавляющее большинство аудитории — технари, слабо разбирающиеся в тонкостях маркетинга и душевной организации покупателей.

В крутой стартап не всегда можно с первого дня взять маркетолога, рекламщика, пиарщика и т.д. Зато запустить свою партнерскую программу и отдать вопрос привлечения аудитории профессионалам или самим пользователям — легко. Именно так поступили ребята из Dropbox — за каждого приведенного друга вы получали 500 Мб дополнительной квоты и это работало на партнерской программе, принципы которой описаны ниже.

Благодаря активной ПП, вы приобретаете дополнительный источник трафика, который не только приводит целевых посетителей, но и положительно влияет на все стороны жизни проекта:
  • фидбек от тех, кто привлекает посетителей;
  • фидбек от самих посетителей (некоторые категории вы, возможно, сами бы не нашли);
  • положительное влияние различных источников трафика на ранжирование в поисковиках.


Что должно быть в партнерской программе?


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

Разберем каждую систему отдельно.

Учет пользователей

Задача этой подсистемы — точно разделять пользователей, понимать источники трафика, относить каждый переход к определенному партнеру и следить за тем, чтобы куки не протухали.

Учет пользователей должен работать максимально „высоко“ в системе. До того, как начнется бизнес-логика вашего приложения, вы уже должны точно знать, что это за пользователь — пришел он с поисковика или с партнерского сайта.

buruki.ru сделаны на Django, поэтому мы используем отдельную middleware, которая отвечает за обработку любого входящего запроса. Middleware проверяет, был ли уже пользователь у нас на сайте, пришел ли он по реферальной ссылке, есть ли у ссылки дополнительные параметры и т.д.

Определяем, кто на этот раз привёл посетителя
ref = request.GET.get('ref')

if not ref:
    # Если ref пустой, создаём или забираем из базы
    # фейкового реферера на основе хоста.
    http_referer = request.META.get(
        'HTTP_REFERER',
        'http://direct.com'
    ).replace('http://www.', 'http://')

    ref_host = urlparse(http_referer).hostname

    referer = get_object_or_None(Referer, ref_code=ref_host)
    if referer is None:
        if not ref_host:
            # Если ref_host пустой, то возьмём реферера
            # с ref-кодом “direct.com”, который уже лежит в базе.
            ref_host = 'direct.com'
        else:
            # Если ref_host есть, то создаём нового реферера.
            # Указываем время жизни кук.
            Referer.objects.create(
                name=ref_host,
                ref_code=ref_host,
                activated=True,
                cookie_lifetime=30
            )
    ref = ref_host

# Забираем из базы реферера по ref-коду,
# который к этому моменту или взят из GET-параметра,
# или из HTTP_REFERER, или равен “direct.com”.

try:
    # Если всё прошло как надо, то получаем объект реферера.
    referer = Referer.objects.get(ref_code=ref, activated=True)
except Referer.DoesNotExist:
    # Если его вдруг не оказалось, то логируем это и выходим
    # из middleware.
    log.warning('Referrer is not found: ref_code=%s' % ref)
    return


Минимальный набор информации, который необходимо хранить о каждом пользователе:
  • user_id — уникальный id;
  • created — время создания пользователя (+ выставление кук, минимум протухания для ПП — 15 дней, обычно 30);
  • referer_url — Источник перехода (мы сохраняем полный URL первого и последнего захода на сайт);
  • referer_id — партнерский аккаунт, с которого перешел пользователь (определяется по ref-параметрам ссылки). Сразу можно завести фейковые referer’ы, чтобы считать эффективность собственных источников трафика ( контекстная реклама, конкурсы, статьи на Хабре :-) );
  • label — произвольная строка, которую ваши партнеры будут задавать в ссылке, чтобы самим разделять свои источники трафика и видеть в статистике эффективность разных подходов (например, так можно узнать что лучше работает — баннер в шапке блога или в сайдбаре);
  • ua_string — user-agent пользователя — будет полезен в статистике;
  • user_ip — eсли возможно — IP (должно быть прописано в политике конфиденциальности).

Когда вы будете реализовывать подобный middleware для вашего проекта — обязательно столкнетесь с вопросом — если один и тот же пользователь пришел от разных referer’ов — кому отнести этого пользователя? Ответ на этот вопрос зависит от специфики проекта. Мы для себя выбрали ответ — «кто последний, тот и папа». Referer, который последним довел пользователя до покупки, тот и получает вознаграждение.
Определяем, что же всё-таки делать с посетителем
visitor = get_object_or_None(Visitor, pk=visitor_id)

# Создаём нового визитора если, ...
create_visitor = (
    # ... visitor_id не пустой, но в базе посетителя нет.
    # Ненормальная ситуация.
    visitor is None

    # ... пользователя привёл новый реферер,
    # и старый при этом неактивен, или новый реферер — настоящий.
    # Ненастоящий реферер — это, например, Гугл или Яндекс.
    or (visitor.referer != referer and (referer.real or not visitor.referer.activated))

    # ... куки протухли.
    or (visitor.referer_expire and visitor.referer_expire < datetime.now())
)

# Если not create_visitor, то обновляем старую запись.


Биллинг

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

В этом вопросе изобретать велосипед не стоит. Нужно использовать счета, субсчета, двойную запись, транзакции и красное сторно. В общем, все, что было изобретено бухгалтерами до нас. Мы воспользовались готовым решением из другого нашего проекта. Вам рекомендуем присмотреться к готовым решениям, например, django-oscar-accounts.

Сбор и предоставление статистики

Статистика — is a king. Статистика нужна вам, чтобы понимать как работает ваш проект, как работает партнерская программа. Статистика необходима партнерам, чтобы приводить к вам максимально эффективный трафик, экспериментировать с источниками, пробовать разные стратегии.

Статистика должна давать вам и партнерам точный ответ на главный вопрос — сколько стоит (или какой доход приносит) каждый приведенный посетитель, совершивший целевое действие.

В зависимости от специфики вашего проекта, целевые действия могут быть такими:
  • регистрация (самое простое);
  • продажа или отложенная продажа (когда заказ трансформируется в продажу через какой-то промежуток времени; экстремальный случай — наложенный платеж через Почту России. Почта России — всегда экстрим);
  • достижение какой-то цели на сайте. (например, уровень прокачки героя в онлайн игре, приобретение премиум аккаунта, отправка анкеты).

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

В нашем случае мы показываем партнеру всю информацию о пользователях:
  • Количество привлеченных пользователей;
  • Количество поисков авиабилетов;
  • Количество переходов в бронирование;
  • SPV — кол-во поисков на посетителя;
  • СPV — кол-во переходов в бронирование на посетителя;
  • CPS — кол-во переходов в бронирование на один поиск;
  • Кол-во сделанных и оплаченных бронирований (общее и в процентах);
  • Наверное, самое главное — заработок на одного посетителя, на один поиск, на один переход в бронирование (EPV, EPS, EPR).

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

Для дальнейшего анализа полезно давать возможность выгрузки статистики в CSV.

Еще раз — статистика, это очень, очень важно. И для вас и для партнеров.

Промо-материалы

Промо материалы — это то, чем партнеры будут завлекать пользователей к вам.

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

Основные виды промо, большинство из которых мы уже реализовали:
  • ссылки и deeplinks (ссылки на конкретные продукты, лендинги, разделы). Самый простой инструмент, подходит для большинства задач. Если у вас длинные ссылки — не забудьте дать возможность использовать сокращалку;
  • баннеры — обычные и флеш. Основные форматы — 240x400, 460x60, 200x200;
  • виджеты — интерактивные блоки с вашими предложениями, результатами работы сервиса. Быстрая доставка самых ценных предложений;
  • whitelabel — возможность установить всю или часть функциональности вашего сайта на внешний сайт. Мы, например, специализируемся на авиабилетах, а отельную составляющую берем от HotelsCombined — hotels.buruki.ru. Кстати, HotelsCombined, пожалуй, лучший метапоисковик отелей — сделан нашим бывшим соотечественником;
  • из новенького — для привлечения трафика из соц. сетей полезно иметь генераторы подборок. То, что может заинтересовать пользователей. У нас это подборки низких цен на различные направления перелетов;
  • API — для крутых перцев. Максимальный доступ к функционалу вашего сервиса.

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

Итого


Партнерская программа — это понятный инструмент, который подходит для 99% проектов. Делайте то, что хорошо умеете, делайте отличный продукт, а привлечением аудитории будут заниматься те, кому это ближе.
Автор: @good_service
Буруки
рейтинг 31,91
Компания прекратила активность на сайте

Комментарии (33)

  • +4
    метапоиск авиабилетов buruki.ru с человеческим лицом

    Но я увидел на сайте только буручье лицо (логотип). Нельзя сказать, что это плохо…
    • +1
      Это про заботу о пользователях. Был у нас один случай, когда баг в выдаче исправляли в аэропорту. Начало истории — ru-travel.livejournal.com/21855762.html, счастливый конец — ru-travel.livejournal.com/21873723.html (комментарии жгут огнём)
      • 0
        Действительно, работа посредственная, все сразу распознаЮт рекламу и продвижение. Оно и понятно, более искусный менеджер по рекламе будет уже в разы дороже: ). И этот пошёл вроде бы правильным путём — развести скандал. Но окончание нетипичное — вот если бы деньги пришлось выуживать через суд, то всё в порядке, все поверят, что не реклама.
        • +1
          Мы работаем как для себя, но почему-то в это не верят. По крайней мере, некоторые товарищи в ЖЖ
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    «Комиссия: 70 %» — это как понять? Партнёр получает 70% от вашего дохода с продажи каждого билета? Сколько это примерно в деньгах?
    • 0
      Мы выплачиваем 70% от комиссии, которую получаем от агентства. Средняя комиссия ~ 260 руб., то есть вы получите 180 рублей с билета. Все зависит от направления — чем дороже билет, тем больше комиссия.
  • +1
    Кстати, я бы сделал редирект на урл без "?ref=XXXX" после установки кук, а то такой урл стрёмно смотрится
    • 0
      Подавляющему большинству слово ref ни о чем не говорит.
    • 0
      Сделаем.
  • +1
    Чем ваш сайт лучше авиасейлс.ру и многих других подобных поисковиков?

    Попробовал поискать билеты на вашем и их сайте — совершенно одинаковый результат поиска.
    Интерфейсы очень похожи, «человечность лица», т.е. юзабилити тоже одинаковое. Единственное хоть какое-то отличие они дают искать +-3 дня, а вы +- 1 день.
    Может различия где-то глубже?

    • 0
      Хотел задать тот же вопрос. А ля «каково запускать сервис, который ничем не отличается от кучи других точно таких же?»
      Но потом увидел на сайте подпись о том, что они работают с 2009 года. Кажется, как раз примерно тогда это и было новинкой.
      • 0
        Да, правда, с 2009 года. Я почему-то подумал, что они новенькие. Наверно, потому что ни разу не слышал про Буруки.
        • 0
          Да, работаем давно, но только сейчас начинаем общаться с людьми :)
        • +1
          Мы старенькие и небольшие, проект родился как хобби, где-то через полтора года после Авиасейлс. Сейчас нас пятеро
  • 0
    Не ребята, интерфейс свой вы можете как угодно конечно делать, но чекбокс «В одну сторону» психологически работает не верно. Установка чекбокса должна включать интерфейс или опцию, а не отключать. Все иное — лишь изыски дизайнера в ущерб логике.
    • +1
      Совершенно не вижу разницы. Может я один такой, но я лично вовсе не ожидаю, что поставив галку, увижу включение опции в интерфейсе, а не отключение.
      Кстати, на авиасейлс сделано точно так же.
      • +1
        От того, что где-то еще сделано неправильно, это не значит ничего. Например на ресурсах ТМ для сигнализации hover события у ссылки убирается подчеркивание, что я вообще считаю катастрофой.
        • 0
          И вновь вы на моей памяти первый, кто считает происходящее катастрофой. Встречаю разные оформления ссылок, одни из самых частых — это как раз: 1 — подчёркивание убирается при hover, 2 — подчёркивания нет, но появляется при hover. Также есть с неизменно отсутствующим или присутствующим подчёркиванием, изменяющие цвет при hover. Не вижу никакой разницы в юзабилити как юзер, честно говоря. Лишь бы выделялись из остального текста, чтобы было очевидно, что это ссылки, и хоть как-то отрабатывали hover.
  • 0
    > API — для крутых перцев. Максимальный доступ к функционалу вашего сервиса

    Лучше бы вы подробнее рассказали про это.

    Еще интересно было бы почитать об алгоритмах сбора данных от разных агентов по продаже билетов.

    P.S. ± 1 день, когда другие ищут минимум ± 3 дня — это просто несерьёзно
    • 0
      Спасибо за предложения, будем рассказывать самое интересное.

      > это просто несерьёзно

      Мы работаем над этим!
    • +1
      ± 3 дня это больше маркетинговая уловка. Если внимательно посмотреть на пример, то видны результаты только на +-1 день от Озон.Travel и иногда чартрерные рейсы.

      К сожалению, основа стека поиска авиабилетов, глобальные дистрибуционные системы(GDS), родом из 80-х и представляют из себя доисторических монстров. Поиск по гибким датам возможен только с существенными ограничениями.
  • 0
    скажите честно, это у вас виджет от авиасейл стоит или просто скопировали?
    • 0
      да ничего они не копировали. в 2009 году это было в новинку и ребята сделали «фор фан», авиасэйлз появился не сильно раньше и я, например, в то время про него не знал, а узнал только когда они начали активно пиариться
    • +1
      Говорю честно — где виджет?
      • 0
        форма поиска просто ну очень похожа, а с учетом того что ависейл намного более раскрученный бренд чем вы, сразу возникает такое подозрение.
  • 0
    а вы продаете билеты по телефону? Если да, то как вы узнаете, откуда пришел клиент, который звонит по телефону?
    • +1
      Телефон добавили две недели назад, чтобы понимать затруднения клиентов. Многие думают, что мы действительно продаем билеты (на самом деле только сравниваем цены и находим где дешевле, как Яндекс.Маркет), у кого-то возникают проблемы с оплатой у агента, другие просто любят поговорить.

      Был удивлен, но телефон на сайте — это один из лучших инструментов для юзабилити тестов!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка