Live demo · not a real product

Cancel the subscription. See what happens instead.

Below is a pretend SaaS billing page running the real RetainFast widget — the same file your own customers would load, not a video and not a screenshot. Press the cancel button, pick a reason, and take or decline the offer it makes you.

A pretend billing page

Hit cancel. The log underneath shows what your backend would receive.

What just happened

Your code did the billing. Ours never could.

Every outcome above arrived in your page as a callback — onSave with the offer they accepted, onCancel with the reason they gave. You wire those to the billing code you have already written. RetainFast holds no Stripe key, no OAuth token and no write access, so there is no configuration in which it could apply that discount itself. That is the whole design.

<script src="https://retainfast.xyz/w.js" data-key="rf_pub_xxx" defer></script>

<button data-retainfast>Cancel subscription</button>

<script>
  // your code, your billing provider
  RetainFast.onSave   = ({ offer })  => yourApi.applyOffer(offer.value);
  RetainFast.onCancel = ({ reason }) => yourApi.cancelSubscription(reason);
</script>

That is the entire integration: one script tag, one attribute on the cancel button you already have, and two callbacks. About five minutes, most of it copy and paste.

Build your own version of this.

Your reasons, your offers, your wording, your accent colour — edited in a dashboard with the real widget previewing beside you. $25 for your first 3 months, then $12/month.

Want the source of a bare install? The same demo as one standalone HTML file