Apphud is a platform for developers to integrate and analyze subscriptions in iOS apps.
Implement subscriptions in your mobile app in a few lines of code.
Non-renewing purchases are also supported.
View and analyze subscription metrics. Add Integrations with analytics and marketing tools: Amplitude, Mixpanel, AppsFlyer, Branch, Adjust etc.
Increase app revenue up to 5% by sending automated discounts for lapsed customers.
Learn why customers cancel trials and subscriptions.
Fix failed renewals by sending Push notifications and in-app reminders to update billing info.
No. You don’t need to replace your existing code with Apphud SDK. Basically, our purchase methods are just wrapper methods around StoreKit, so you can use whatever library you like most.
Yes, you can. In this case all you need is to integrate SDK in just one line of code:
You will be able to view Dashboard and Users list. However, if you want to use Integrations, you need to add more code. See docs describing how to add desired integration. If you would like to use Rules, implement Push Notifications, as described here.
What timezone is used in Apphud?
For dashboard we use UTC timezone. However, when viewing user page, all dates are displayed in your browser's timezone.
How do you convert currencies?
US Dollar is a base currency in Apphud. All transactions are automatically converted to USD by the exchange rates at the time of event using OpenExchangeRates. We update conversion rates several times a day.
What currency do you use for sending revenue in Integrations?
When sending revenue to 3rd party analytics platforms, we send local currency where applicable. In particular, we send revenue in local currency to AppsFlyer, Branch and Adjust and send revenue in USD to Amplitude and Mixpanel.
How does Apple charge users for subscription upgrades?
It depends on subscription level and subscription duration of current and purchasing subscription. For example, if the user purchased promo offer of the same subscription, user will be charged only after current period is over. However, if the user purchased another subscription, he may be charged immediately with partial refund of remainder of current subscription if new subscription duration is the same or subscription level is higher. Read more about subscription levels here.
What is the difference between “In Billing Grace Period” and “In Billing Retry Period”?
Billing Grace Period is Apple’s new feature. With Billing Grace Period turned on, Apple tries to charge subscriber within 16 days maximum. Developer must grant premium access to subscriber during this time. Once subscriber enters grace period, his subscription goes to Grace state, and Apphud SDK
isActive() method still returns
true. With Billing Grace Period turned off, subscription goes to Expired state and
isActive() method returns
false. However, Apple still attempts to recover subscription within up to 60 days but less aggressively. In both cases when subscription is reactivated, it will change to Regular state. You can manage Billing Grace Period feature in your app’s “Features” tab in App Store Connect.
Apphud is absolutely stable. Most of the data is cached on device, even
SKProduct objects. However, if there are issues with receipt validation, our SDK tries to re-submit receipt until success.
Our SDK listens to any purchases or restorations being made and automatically uploads customer receipt to Apphud. Purchase methods are just wrapper methods around StoreKit. You can purchase subscription with your own code or other library, and you will still be able to use
Apphud.hasActiveSubscription() and other subscription related methods.
User ID is generated on device if not specified directly. It is being saved to current device Keychain. However, if the user restores purchases from their another device, user ID will change to one from the first device. It will be also saved in Keychain of second device.
Apphud automatically merges users into an original user in this case.
Currently, we have only iOS SDK written in Swift. You can install Apphud SDK via CocoaPods, Swift Package Manager or manually.
Yes, you can. Just follow this guide.
I have problems with sandbox In-App Purchase testing.
Please read our In-App Purchase Testing Tips.
How to test integrations?
Please read here.
Screens are a part of Rules. As for now, you can only present Screens in your app by using Rules. There are 4 types of Screens are available now:
Promo offer screen. To show a discount for lapsed or existing customers.
Survey screen. To ask a customer a question with a set of available options.
Feedback screen. To ask a customer for a text feedback.
Billing issue screen. To ask a user to update their billing info. Typically, used in case of billing issue.
Yes. You can combine different screens to implement complex scenarios. For example, you may create a survey with a set of options. You may also push another screen if user selects certain option. For example, you may push Promo offer screen with a discount for lapsed subscriber after a user selects “Too expensive” option when answering to a “Why did you cancel a subscription?” question.
Gross revenue inside Rule Analyze section is less than expected.
There may be three reasons:
If user purchased free trial offer, he won't be charged immediately.
If user upgraded to another subscription, he won't be charged immediately in some cases. See: "How does Apple charge users for subscription upgrades? "
User still may cancel auto renewal before actually being charged.
My customer purchased promo offer from your Screen but wasn't charged.
See "Gross revenue inside Rule Analyze section is less than expected." above.
Yes. We have REST API to get current customer by their user ID. REST API is available on paid plans.
Apphud can send POST requests to your server about subscription events. These requests are called Webhooks (server-to-server notifications). They are available on paid plans. You can use these events to implement custom logics or send data to in-house analytics. Read more about webhooks here.
AppsFlyer shows events in “Events” tab according to app installation date. Let imagine, you select certain date range in AppsFlyer. It will show all events occurred to users who installed the app within this date range. However, under "Activity > Activity Summary > In App Events" AppsFlyer shows all events occurred within selected date range regardless app installation date.
Apphud only shows data received from attribution platform. If you face this issue, please make sure you accepted Facebook Advanced Mobile Measurement Terms. If you have done this already, but attribution still not showing in Apphud, please check documentation of your attribution platform.
Once you exceed the free plan limit, 14-days grace period will start. During this time you should choose and activate paid plan. Otherwise, Integrations and Rules will stop working. Nonetheless, the core functionality of Apphud won’t be disabled. Thus, in-app purchases will continue working in your app.