Skip to main content
Question

How can redirect user back to custom URL(my own website) from customer portal in Web Billing after upgrade or downgrade of plans?

  • April 16, 2026
  • 1 reply
  • 17 views

Forum|alt.badge.img

Hello RevenueCat Team,

I have implemented subscriptions on my website with monthly and yearly plans. Once a user purchases a plan, they can upgrade or downgrade to another plan. This is currently handled using RevenueCat Web Billing.

 

However, Web Billing does not provide a flow like the App Store or Play Store. Instead, upgrades and downgrades must be handled through the customer portal, as described here:  RevenueCat Web Billing - Upgrade/Downgrade

 

The documentation also states that users can upgrade or downgrade their plans through the customer portal link sent via email by RevenueCat.

In my implementation, I am handling this through APIs using the following flow:

  1. Search for the subscription using the Search subscriptions by store subscription identifier API.
  2. Retrieve the Subscription ID from the response.
  3. Use that ID to get the customer portal URL via the Get an authenticated Web Billing customer portal URL API.
  4. Redirect the user to that URL.

The issue I am facing is that there is no way to redirect the user back to my website after they successfully upgrade or downgrade their plan.

Could you please advise how I can redirect users back to my website after they complete the process in the customer portal?

1 reply

guilherme
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • April 20, 2026

Hey ​@iroidvinay !

At the moment, the customer portal doesn't support a return_url or post-action redirect like the checkout flow does. Once users complete a plan change there, there's no native way to send them back to your site. A few workarounds are available today though.

For the redirect itself, the most reliable approach is to poll the Get Subscription endpoint from your frontend after sending the user to the portal. Since the plan change is reflected in the subscription state as soon as it's processed, you'll pick it up quickly and can redirect the user programmatically as soon as you detect the change.

If you also need to sync state on your backend, listen for the PRODUCT_CHANGE webhook event. When a subscription change is processed in the customer portal, we generate that event:

When a subscription change is processed, RevenueCat generates a PRODUCT_CHANGE event.

more context here

Just keep in mind that webhooks can have delivery delays, so it's not the best fit if you need to redirect the user in real time (hence the polling approach being more predictable).

But I can definitely see the gap here, so I’ll be sure to the redirect feedback to our team and for consideration. Thanks for raising this!