Skip to main content
Question

Multiphase Offer Missing Variables in Paywall-Editor

  • May 12, 2026
  • 1 reply
  • 44 views

Forum|alt.badge.img

Hi Together, I really love RevenueCat, but I sometimes run into limitations especially in the RevenueCat Paywall Editor.

For example in Google Play Console (Android) I have 2 Subscriptions setup (3 Month and 1 year). For both subscriptions I have setup a Multiphase-Offer like this:
 

  1. 7 days Free-Trial
  2. 40% Percent Discount on the first Subscription-Cycle (3 Month, 1 Year)
  3. Then after Auto-Renew it is the normal price without discount

Now the issue is that, the customer wants to display the Monthly-Price for (3 Month and 1 Year), which is possible with the normal variable without any active offers:

Normal:

product.price_per_month

14.99$

 
But in the Paywall-Logic section the variable is not working like this:

~{{ product.price_per_month }}~ **{{ product.offer_price_per_month }} per Month**

which results in this

~~14.99$~~ 14.99$
 

So I read the documentation and found out that you have too use the Secondary Offer for Multiphase-offer setups:

https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls/variables#secondary-offer

But the problem is there are only 3x-VARIABLES for Secondary Offers and there is no:

product.secondary_offer_price_per_month

Is there a workaround for this? Or is it possible that you add support for them? Because many people want to show basically monthly prices instead of the full price. It is a common Marketing strat.

Thank you!!

 

1 reply

Tarek
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • May 14, 2026

Hi ​@familyfit.io ,

 

Tarek from the RevenueCat Support Team here, happy to assist you!

 

Thanks so much for the kind words, and for the detailed write-up.

 

First, let me address why offer_price_per_month returns the unchanged price in your setup:

With a multi-phase offer, the regular offer_* variables refer to the primary offer phase. In your setup, that primary phase is the 7-day free trial.

A 7-day free trial can’t meaningfully be normalized into a monthly price given the total price is zero.

In practice, the paywall renderer ends up showing the regular price_per_month value for offer_price_per_month, which is why your strikethrough renders as your shared.

 

For multi-phase offers like yours, the discounted paid phase is represented by the Secondary Offer variables instead.

 

And you're totally right on the current limitation: the Secondary Offer variable set is currently limited to secondary_offer_price, secondary_offer_period, and secondary_offer_period_abbreviated. There isn’t a secondary_offer_price_per_month variable today, or equivalent per-day/week/year variants.

 

Workarounds you can use today

Since no `secondary_offer_price_per_month` variable exists currently, your immediate option is to use a Custom variable to inject the monthly equivalent.

You can compute the discounted monthly equivalent in your app, format it for the customer’s locale, and pass it into the paywall as a custom variable.

This gives you the display you want, for example `$8.99/mo`, but you’ll need to manage the calculation and pass the correct value for each relevant package. It won’t behave like a built-in package-scoped product.* variable.

 

In the meantime, I’m passing this along internally as a feature request.

 

Let me know if there's anything I can clarify further!

 

Best regards,