Skip to content

Commit

Permalink
Sidebar + doc files - adding What's Adapty, Migration category & Migr…
Browse files Browse the repository at this point in the history
…ation from Adapty
  • Loading branch information
Lutik-sun committed Jul 15, 2024
1 parent 9a6a7eb commit 80505e1
Show file tree
Hide file tree
Showing 4 changed files with 272 additions and 4 deletions.
62 changes: 62 additions & 0 deletions docs/migrate-to-adapty-from-another-solutions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: "Migrate to Adapty"
description: ""
metadataTitle: ""
---

Migration has three steps:

1. Switching to Adapty SDK.
2. Changing [Apple](app-store-server-notifications)/ [Google](real-time-developer-notifications-rtdn) server2server notifications webhook.
3. (Optional) [Importing historical data to Adapty](importing-historical-data-to-adapty) to instantly pull statistics.

Let's quickly go through each part.

> 👍 Your subscribers will migrate automatically
>
> All users who have ever activated subscription will move as soon as they open a new version with Adapty SDK. The subscription status validation and premium access will be restored automatically.
### Installing Adapty SDK

Install Adapty SDK for your platform ([iOS](ios-installation), [Android](android-installation), [React Native](react-native-installation), [Flutter](flutter-installation), [Unity](unity-installation)) in your app and replace your legacy logic with appropriate methods from Adapty SDK. Core things you need to replace:

- Checking an [Access level](access-level) to open a gated content;
- Making a purchase;
- Restoring purchase;
- Getting/setting information about your user.

> 🙀 Switching from another susbcription provider?
>
> Follow our guide for a detailed walk though giude:
>
> - [Migration from RevenueCat](migration-from-revenuecat) (20 minutes)
### Changing Apple server notifications

Apple and Google send us events that happen with users' subscriptions outside of the application (renewal, cancellation, pausing, refund, etc.) via [App Store server notifications](app-store-server-notifications).

Adapty can work without this URL, but you'll get a limited feature set. For example, [Integrations](integrations) to 3rd party services will be delayed, subscription analytics won't be in real-time, and paywall A/B testing metrics won't be accurate.

When switching from a legacy system, sometimes you want two systems to work simultaneously for some time. In that case, you can use our [raw events forwarding](app-store-server-notifications#raw-events-forwarding), where Adapty is a proxy server for your legacy system.


<div style={{ textAlign: 'center' }}>
<img
src="https://files.readme.io/c7d4fd0-Seamless_migrat_a.png"
alt="Raw Apple events"
style={{ width: 'auto', border: '1px solid grey' }}
/>
</div>





### Move historical data to Adapty

Moving historical data is optional and won't affect your subscribers' state. However, there are a number of reasons why it's better to do so:

1. **Analytics will work correctly instantly**. Adapty matches subscribers by original transaction ID, and we don't count events from Apple webhook without exposing them to Adapty SDK (we technically can't do it).
2. **Used data will be there**. You'll have all Adapty profiles with user properties and can use them in [Segments](segments), and [Profiles/CRM](profiles-crm).

Follow our [tutorial](importing-historical-data-to-adapty) to send us historical data.
171 changes: 171 additions & 0 deletions docs/migration-from-revenuecat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
---
title: "Migration from RevenueCat"
description: "The document outlines a migration plan for switching from RevenueCat SDK to Adapty SDK, which involves learning the core differences, installing Adapty SDK, switching App Store server-side notifications, testing and releasing a new app version, and optionally importing historical data."
metadataTitle: ""
---

Your migration plan will have 5 logical steps and take an average of 2 hours. 90% of all migrations take less than one working day.

1. Learn the core differences; create and prepare an Adapty account _(5 minutes)_;
2. Install Adapty SDK for your platform ([iOS](ios-installation), [Android](android-installation), [React Native](react-native-installation), [Flutter](flutter-installation), [Unity](unity-installation)) instead of RevenueCat SDK _(1 hour)_;
3. Set up [Apple App Store server notifications](app-store-server-notifications) to Adapty and (optionally) [raw events forwarding](app-store-server-notifications#raw-events-forwarding) _(5 minutes)_;
4. Test and release updates of your app _(30 minutes);_
5. (Optional) Ask RevenueCat support for historical data in CSV format _(5 minutes);_
6. (Optional) Import historical data via Adapty support _(30 minutes)_.

> 👍 Your subscribers will migrate automatically
>
> All users who have ever activated a subscription will instantly move to Adapty as soon as they open a new version of your app with Adapty SDK. The subscription status validation and premium access will be restored automatically.
Before you push a new version of your app with Adapty SDK, make sure to check our [release сhecklist](https://docs.adapty.io/docs/release-checklist).

### Learn the core differences; create and prepare an Adapty account

Adapty and RevenueCat SDKs are similarly designed. The biggest difference is the network usage and the speed: Adapty SDK is designed to provide you with information on demand as fast as possible when you ask for it. For example, when requesting a paywall, you get the [remote config](paywalls#remote-config-table-view) first to pre-build your onboarding or paywall and then request products in a dedicated request.

Naming is slightly different:

| RevenueCat | Adapty |
| :---------- | :-------------- |
| Package | Product |
| Offering | Paywall |
| Paywall | Paywall Builder |
| Entitlement | Access level |

Adapty has a concept of [placement](placements). It's a logical place inside your app where the user can make a purchase. In most cases, you have one or two placements:

- Onboarding (because 80% of all purchases take place there);
- General (you show it in settings or inside the app after the onboarding).


<div style={{ textAlign: 'center' }}>
<img
src="https://files.readme.io/2406d97-image.png"
alt="Adapty Placement concept"
style={{ width: '600px', border: '1px solid grey' }}
/>
</div>





### Install Adapty SDK and replace RevenueCat SDK

Install Adapty SDK for your platform ([iOS](ios-installation), [Android](android-installation), [React Native](react-native-installation), [Flutter](flutter-installation), [Unity](unity-installation)).

You need to replace a couple of SDK methods on the app side. Let's look at the most common functions and how to replace them with Adapty SDK.

#### SDK activation

Replace `Purchases.configure` with `Adapty.activate`.

#### Getting paywalls (offerings)

Replace `Purchases.shared.getOfferings` with `Adapty.getPaywall`.

In Adapty, you always request the paywall via [placement id](placements). In practice, you only fetch no more than 1-2 paywalls, so we made this on purpose to speed up the SDK and reduce network usage.

#### Getting a user (customer profile)

Replace `Purchases.shared.getCustomerInfo` with `Adapty.getProfile`.

#### Getting products

In RevenueCat, you use the following structure:`Purchases.shared.getOfferings` and then `self.offering?.availablePackages`.

In Adapty, you first request a paywall (read above) to get immediate access to Adapty's [remote config](paywalls#paywall-remote-config) and then call for products with `Adapty.getPaywallProducts`.

#### Making a purchase

Replace `Purchases.shared.purchase` with `Adapty.makePurchase`.

#### Checking access level (entitlement)

Get a customer profile (read above first) and then replace

`customerInfo?.entitlements["premium"]?.isActive == true`

with

`profile.accessLevels["premium"]?.isActive == true`.

#### Restore purchase

Replace `Purchases.shared.restorePurchases` with `Adapty.restorePurchases`.

#### Check if the user is logged in

Replace `Purchases.shared.isAnonymous` with `if profile.customerUserId == nil`.

#### Log in user

Replace `Purchases.shared.logIn` with `Adapty.identify`.

#### Log out user

Replace `Purchases.shared.logOut` with `Adapty.logout`.

### Switch App Store server-side notifications to Adapty

Read how to do this [here](migrate-to-adapty-from-another-solutions#changing-apple-server-notifications).

### Test and release a new version of your app

If you're reading this, you've already:

- [x] Configured Adapty Dashboard
- [x] Installed Adapty SDK
- [x] Replaced SDK logic with Adapty functions
- [x] Switched App Store server-side notifications to Adapty and optionally turn on raw events forwarding to RevenueCat
- [ ] Made a sandbox purchase
- [ ] Made a new app release

If you checked the points above, just make a test purchase in the Sandbox and then release the app.

> 👍 Go through [release checklist](release-checklist)
>
> Make the final check using our list to validate the existing integration or add additional features such as [attribution](attribution-integration) or [analytics](analytics-integration) integrations.
### (Optional) Ask RevenueCat support for historical data in CSV format

:::warning
Don't rush the historical data import

You should wait for at least a week after the release with the SDK before doing historical data import. During that time we will get all the info about purchase prices from the SDK, so the data you import will be more relevant.
:::

Ask RevenueCat about the historical data on their [support page](https://app.revenuecat.com/settings/support). For the file format reference, check this page: [Importing Historical Data to Adapty](importing-historical-data-to-adapty). Also, you can use this [Google Sheets file](https://docs.google.com/spreadsheets/d/162LMI9D7-BP63Jkllj2AtpaD7FQFa0-V-Yht1U65Ojs/edit#gid=70701724).


<div style={{ textAlign: 'center' }}>
<img
src="https://files.readme.io/2bce57f-CleanShot_2022-03-16_at_15.40.072x.png"
alt="Image"
style={{ width: 'auto', border: '1px solid grey' }}
/>
</div>





### Write us to import your historical data

Contact us using the website messenger or just email us at [[email protected]](mailto:[email protected]) with your CSV file.



### FAQ

#### I successfully installed Adapty SDK and released a new app version with it. What will happen to my legacy subscribers who did not update to a version with Adapty SDK?

Most users charge their phones overnight, it's when the App Store usually auto-updates all their apps, so it shouldn't be a problem. There may still be a small number of paid subscribers who did not upgrade, but they will still have access to the premium content. You don't need to worry about it and force them to update.

#### Do I need to request historical data from RevenueCat as quickly as possible, or will I lose it?

You don't need to make it super fast; make a release with Adapty SDK first, and then give us your historical data. We will restore the history of your users' payments and fill in [profiles](profiles-crm) and [charts](charts).

#### I use MMP (AppsFlyer, Adjust, etc.) and analytics (Mixpanel, Amplitude, etc.). How do I make sure that everything will work?

You first need to pass us the IDs of such 3rd party services via our SDK that you want us to send data to. Read the guide for [attribution integration](attribution-integration) and for [analytics integration](analytics-integration). For historical data and legacy users, **make sure you pass us those IDs from the data export you asked for from RevenueCat.**
20 changes: 20 additions & 0 deletions docs/what-is-adapty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: "What is Adapty?"
description: "Unlock the potential of your app's monetization strategy with Adapty – a versatile in-app purchase platform designed to fuel subscriber growth. From startups to established giants, Adapty simplifies the process of optimizing subscription prices and testing various approaches to ensure your app's success. Discover how Adapty empowers you to maximize revenue and enhance user engagement effortlessly"
metadataTitle: "Discover Adapty: Your Ultimate In-App Purchase Platform"
---

Adapty is a powerful and adaptable in-app purchase platform that helps you grow your subscriber base. Whether you're just starting or already have millions of users, Adapty makes it easy to set up the best subscription prices, test different approaches, and see what works best for your app's success.

### Marketing automation and testing

- Subscriptions/in-app purchases SDK for [iOS](ios-installation), [Android](android-installation), [Flutter](flutter-installation), [React Native](react-native-installation) and [Unity](unity-installation). Adapty performs server-side receipt validation for you and syncs your customers across all platforms, including [web](getting-started-with-server-side-api). It also works in [observer](observer-vs-full-mode) mode, so you can use SDK without changing your existing purchase infrastructure.
- [A/B testing](ab-test) for subscription plans. Test different prices, durations, trial periods for your subscriptions as well as different visual elements.
- [Analytics](analytics-charts) for the app economy. Detailed metrics related to your app monetization.
- Adapty can send [subscription events](events) to 3rd party analytics: [Amplitude](amplitude), [AppsFlyer](appsflyer), [Adjust](adjust), [Branch](branch), [Mixpanel](mixpanel), [Facebook Ads](facebook-ads), [AppMetrica](appmetrica), and custom [Webhook](webhook).

### Adapty works for developers, marketers, and executives

Marketers can directly engage users with promotional offers to return them to the service or upsell new products. With Adapty there is no need for programmers and analysts to manually extract segments.

For product managers and executives, Adapty has a dashboard with viable subscription metrics with daily/weekly/monthly reports to Slack and Emails.
23 changes: 19 additions & 4 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,27 @@ const sidebars = {
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'doc',
id: 'what-is-adapty',
label: 'What is Adapty?',
},
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
label: 'Migrate to Adapty',
link: {
type: 'doc',
id: 'migrate-to-adapty-from-another-solutions',
},
collapsible: true,
collapsed: false,
items: [
{
type: 'doc',
id: 'migration-from-revenuecat',
label: 'Migration from RevenueCat',
},
],
},
],
*/
Expand Down

0 comments on commit 80505e1

Please sign in to comment.