I am trying to calculate the proper LTV ("Lifetime Value") of a player in our system and our app makes heavy use of free subscriptions that are auto-renewing into paid subscriptions. The problem is that our current implementation counts the initial purchase with a price of 0 and we never count renewals. What's the best way to leverage the new SubscriptionInfo methods to capture the renewals that happen when the player is not logged in (which is 90% of the time)? From what I gather, when the player makes a subscription we should: 1. Track Expiration date using: getExpireDate() 2. We verify isAutoRenewing() is true Then upon seeing a repeat session from the same user: 3. Check isSubscribed() to see if this player is still subscribed 4. Compare today's date to see if it is after the getExpireDate that we had previously stored 5. Track the renewal price: product.metadata.localizedPriceString() If both conditions 3 and 4 are true above, then we assume a renewal happened before the user logged in and can throw an event to our analytics provider for the retroactive date and the price of the renewal. Then to setup the next renewal period we update the getExpireDate and isAutoRenewing flags again. Does this sound about right? If so, a couple questions: a. What happens if a player has auto-renewal on and forgets about the app for several subscription cycles before logging back in? Any easy way to validate and calculate several auto-renewals? b. What happens if a player accidentally auto-renews, goes to her subscriptions in Apple settings and cancels the auto-renew so the app will no longer auto-renew, then comes back to our app in several months. Under the methodology I listed above, this user will fail the isSubscribed() check and we will not capture the one-time accidental auto-renewal. c. Is it possible to capture renewals on the day they happen rather than the day the user logs-in? Without the messiness of parsing Apple receipts. Thanks in advance folks!