Трудности при расчете выручки с авто-возобновляемых подписок в iOS-приложениях

    image


    Привет, это Ренат из Apphud. Если у вас есть приложение с авто-возобновляемыми подписками или вы собираетесь выпустить свое первое приложение с подписками, то рано или поздно перед вами встанет вопрос, как правильно пересылать выручку с подписок в свои аналитики. Поговорим об этом.


    Для чего нужно считать выручку с продаж подписок?


    Выручку с подписок нужно считать, чтобы отправлять ее в продуктовые аналитики и системы атрибуции, которые не умеют этого делать: Amplitude, Mixpanel, AppsFlyer, Branch, Adjust. Вам пригодится свой сервер, чтобы отслеживать подписочные события: конвертации, продления, отмены – и отправлять их в вашу аналитику. К сожалению, не все продуктовые аналитики поддерживают Server-to-Server API. Например, Firebase или Flurry. У них нет API для отправки событий со своего сервера, и они не поддерживают трекинг подписок. Как говорится, и сами не делают, и другим не дают.


    В этой статье я расскажу, с какими трудностями вы можете столкнуться, если решите делать это самостоятельно.


    Аналитика подписок в App Store Connect не дает полную картину


    Вообще, аналитика в App Store Connect не является аналитикой вовсе. Вы можете увидеть лишь общую картину: конверсии, количество событий и retention. Apple даже и не претендует на звание полноценного конкурента продуктовым аналитикам. App Store Connect примитивен:


    • нельзя связать данные c пользователями и источниками трафика;
    • нельзя построить собственные воронки и графики;
    • данные обновляются раз в сутки.

    image
    Обзор подписок в App Store Connect


    Почему отправлять выручку с подписок с iOS устройства – плохая идея


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


    Типы событий


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


    Ниже указан примерный набор событий, связанных с подписками.


    Продления
    Обычное продление, активация триала, оформление вводного и промо-предложения (бесплатного и платного).


    Конвертация в регулярную подписку
    Конвертация триала, платного вводного и промо-предложения (бесплатного и платного).


    Истечения
    истечение регулярной подписки, истечение триала, истечение платного вводного предложения, истечение бесплатного промо-предложения, истечение платного промо-предложения


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


    Прочие события
    включение возобновления, отключение возобновления, переход в льготный период, апгрейд подписки


    Довольно много событий, не так ли? Apphud отслеживает 19 типов событий. Вы можете задать каждому событию свое название и объединить некоторые списания средств под одним событием.


    Сложности с вычислением цены


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


    Изменение цены


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


    Смена подписки


    Оформив подписку, пользователь сам может сменить ее длительность и цену в настройках подписки в приложении App Store. Нужно проверять идентификатор продукта при продлении подписки и доставать соответствующую ему цену. Смена подписки бывает трех видов: даунгрейд, кросс-грейд и апгрейд. Об этом мы написали отдельную статью на хабре, также можете почитать официальную документацию здесь.


    Возврат неиспользованной части подписки


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


    image
    Пример пользователя в Apphud, который сменил подписку c возвратом неиспользованной части


    Разные цены для разных стран


    В App Store Connect может создать для одной подписки разные цены для разных стран. Поэтому нужно хранить цены для каждой страны отдельно и использовать цену, соответствующую стране пользователя.


    Разные валюты


    Не все продуктовые аналитики поддерживают конвертацию валют. Необходимо конвертировать цены в базовую валюту (например, USD) и везде использовать только ее. В Apphud мы регулярно обновляем курсы валют, используя Open Exchange Rates.


    Комиссия Apple


    Комиссия Apple составляет 30%. Но после года пользования подпиской, комиссия Apple снижается до 15%. Важный нюанс: разрывы в подписке суммой более 60 дней сбрасывают дату непрерывного пользования.


    Вводное предложение не обязательно вводное


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


    Цены вводных предложений


    Необходимо хранить на сервере цены и тип вводных предложения для каждой страны: триал, предоплата или оплата по мере использования. Подробнее о вводных предложениях читайте тут.


    Промо-предложения


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


    image
    Пример пользователя в Apphud, который оформил подписку с вводным предложением, а затем воспользовался промо-предложением.


    Возвраты


    Нужно вычислять транзакции, по которым был произведен возврат, и отправлять в аналитики отрицательные суммы.


    Определение user ID при запуске с другого устройства.


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


    Хранение чеков пользователей и проверка по расписанию


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


    Интеграции в Apphud


    Одна из функций Apphud – интеграции, позволяющие отправлять подписочные события в продуктовые аналитики через наш сервер.


    Интеграции c продуктовыми аналитиками


    Чтобы включить интеграции с Amplitude или Mixpanel, нужно добавить API key в настройках Apphud.


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


    image
    Пример пользователя в Mixpanel после добавления интеграции в Apphud


    Интеграции с системами атрибуции


    Если вы рекламируете ваше приложение или собираетесь это делать, то интеграция Apphud с AppsFlyer или Branch поможет вам отследить эффективность ваших рекламных кампаний. Вы сможете сравнивать каналы трафика по общей выручке с подписок и другим метрикам.


    image
    Выручка с подписок по разным каналам трафика в Branch


    Интеграции с мессенджерами


    Еще вы можете получать информацию о новых триалах или продлениях в реальном времени в Slack или Telegram. Интеграция займет не более одной минуты.


    Заключение


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

    Apphud
    17,10
    Сервис для работы с подписками в iOS-приложениях
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 5

      +1
      Ваша библиотека для iOS умеет проверять рецепт подписки локально?
        +2
        Нет, у нас чеки проверяются на нашем сервере.
        0
        А что насчёт s2s уведомлений, как описано здесь
        есть 6 типов сообщений который эпл может слать на ваш сервер, интересно покрывают ли они все возможные события?
          0
          Да, все покрывается. Серверные события говорят лишь о том, что в чеке что-то изменилось: возврат, смена подписки. Это уже описано в статье. Кстати, на эту тему у нас тоже есть пояснительная статья на хабре.
          0
          Как и обещали, вот статья об уровнях авто-возобновляемых подписок.

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

          Самое читаемое