diff --git a/README.md b/README.md
index 96da3bf..d971b24 100644
--- a/README.md
+++ b/README.md
@@ -51,6 +51,7 @@ This is the Flutter SDK of Adjust™. You can read more about Adjust™ at [adju
### Additional features
+ * [Subscription tracking](#af-subscription-tracking)
* [Push token (uninstall tracking)](#af-push-token)
* [Attribution callback](#af-attribution-callback)
* [Session and event callbacks](#af-session-event-callbacks)
@@ -595,6 +596,109 @@ In this case, this will make the Adjust SDK not send the initial install session
Once you have integrated the Adjust SDK into your project, you can take advantage of the following features.
+### Subscription tracking
+
+**Note**: This feature is only available in the SDK v4.22.0 and above.
+
+You can track App Store and Play Store subscriptions and verify their validity with the Adjust SDK. After a subscription has been successfully purchased, make the following call to the Adjust SDK:
+
+**For App Store subscription:**
+
+```dart
+AdjustAppStoreSubscription subscription = new AdjustAppStoreSubscription(
+ price,
+ currency,
+ transactionId,
+ receipt);
+subscription.setTransactionDate(transactionDate);
+subscription.setSalesRegion(salesRegion);
+
+Adjust.trackAppStoreSubscription(subscription);
+```
+
+**For Play Store subscription:**
+
+```dart
+AdjustPlayStoreSubscription subscription = new AdjustPlayStoreSubscription(
+ price,
+ currency,
+ sku,
+ orderId,
+ signature,
+ purchaseToken);
+subscription.setPurchaseTime(purchaseTime);
+
+Adjust.trackPlayStoreSubscription(subscription);
+```
+
+Subscription tracking parameters for App Store subscription:
+
+- [price](https://developer.apple.com/documentation/storekit/skproduct/1506094-price?language=objc)
+- currency (you need to pass [currencyCode](https://developer.apple.com/documentation/foundation/nslocale/1642836-currencycode?language=objc) of the [priceLocale](https://developer.apple.com/documentation/storekit/skproduct/1506145-pricelocale?language=objc) object)
+- [transactionId](https://developer.apple.com/documentation/storekit/skpaymenttransaction/1411288-transactionidentifier?language=objc)
+- [receipt](https://developer.apple.com/documentation/foundation/nsbundle/1407276-appstorereceipturl)
+- [transactionDate](https://developer.apple.com/documentation/storekit/skpaymenttransaction/1411273-transactiondate?language=objc)
+- salesRegion (you need to pass [countryCode](https://developer.apple.com/documentation/foundation/nslocale/1643060-countrycode?language=objc) of the [priceLocale](https://developer.apple.com/documentation/storekit/skproduct/1506145-pricelocale?language=objc) object)
+
+Subscription tracking parameters for Play Store subscription:
+
+- [price](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getpriceamountmicros)
+- [currency](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getpricecurrencycode)
+- [sku](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getsku)
+- [orderId](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getorderid)
+- [signature](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getsignature)
+- [purchaseToken](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasetoken)
+- [purchaseTime](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasetime)
+
+**Note:** Subscription tracking API offered by Adjust SDK expects all parameters to be passed as `string` values. Parameters described above are the ones which API exects you to pass to subscription object prior to tracking subscription. There are various libraries which are handling in app purchases in Flutter and each one of them should return information described above in some form upon successfully completed subscription purchase. You should locate where these parameters are placed in response you are getting from library you are using for in app purchases, extract those values and pass them to Adjust API as string values.
+
+Just like with event tracking, you can attach callback and partner parameters to the subscription object as well:
+
+**For App Store subscription:**
+
+```dart
+AdjustAppStoreSubscription subscription = new AdjustAppStoreSubscription(
+ price,
+ currency,
+ transactionId,
+ receipt);
+subscription.setTransactionDate(transactionDate);
+subscription.setSalesRegion(salesRegion);
+
+// add callback parameters
+subscription.addCallbackParameter('key', 'value');
+subscription.addCallbackParameter('foo', 'bar');
+
+// add partner parameters
+subscription.addPartnerParameter('key', 'value');
+subscription.addPartnerParameter('foo', 'bar');
+
+Adjust.trackAppStoreSubscription(subscription);
+```
+
+**For Play Store subscription:**
+
+```dart
+AdjustPlayStoreSubscription subscription = new AdjustPlayStoreSubscription(
+ price,
+ currency,
+ sku,
+ orderId,
+ signature,
+ purchaseToken);
+subscription.setPurchaseTime(purchaseTime);
+
+// add callback parameters
+subscription.addCallbackParameter('key', 'value');
+subscription.addCallbackParameter('foo', 'bar');
+
+// add partner parameters
+subscription.addPartnerParameter('key', 'value');
+subscription.addPartnerParameter('foo', 'bar');
+
+Adjust.trackPlayStoreSubscription(subscription);
+```
+
### Push token (uninstall tracking)
Push tokens are used for Audience Builder and client callbacks, and they are required for uninstall and reinstall tracking.