Docs / Hosted cancel page
Hosted cancel page
A cancel page we host for you. Point your Cancel links at it, and subscribers get your survey and your offers before they go. No code, no server.
Who it is for
Businesses on Stripe with no developer and no server of their own, where subscribers cancel by clicking a link. If you sell through Stripe Payment Links or Checkout and send people to the Stripe Customer Portal, this is your way in. A cancel flow should not need an engineer, so this one does not.
If you do have a cancel button in your own app and a server behind it, the snippet is the smoother path. You can use both.
Set it up
- Connect Stripe. Sign up, then install the AcornRetain app from the Stripe App Marketplace. It connects over OAuth, so there is no secret key to paste.
- Approve the new permissions, if you installed earlier. The hosted page needs two read permissions the snippet does not: customer_read, to find the subscriber by email, and customer_portal_read, to read your portal settings and its login link. If you installed AcornRetain before the hosted page, approve them in Stripe under Apps. The dashboard tells you when they are missing.
- Turn on the hosted page. In the dashboard, open Install, pick Hosted page, and click Turn on the hosted page.
- Check your Stripe portal settings. We read your Stripe customer portal settings and warn you if 'Cancel subscription' or the portal login page is off. Turn both on: the portal is where we send anyone the hosted page cannot match.
- Copy your link. Your live link is https://acornretain.com/cancel/<your app id>. The Test tab gives the same link with ?mode=test on the end. It runs against your Stripe test mode, so try it with a test customer first.
- Put it behind your Cancel links. Use the link wherever a subscriber looks for a way to cancel: the Cancel links on your site, your emails, and your help page.
What the subscriber sees
- They enter the email on their subscription.
- We email them a 6-digit code. It works for 30 minutes. After five wrong tries they ask for a new one.
- They enter the code, and we find their Stripe customer and subscription ourselves.
- They see your cancel flow: your survey question, then the offer their answer picks.
- If they accept, we apply the offer to their subscription in Stripe. If they choose to cancel anyway, we cancel at the end of the billing period.
Their answers and the outcome land in the same dashboard, save rate and webhooks as the snippet.
Limits
The hosted page is strict on purpose. It never guesses whose subscription to touch.
- The email must match exactly one customer on your Stripe account, and that customer must have exactly one subscription that is active, trialing or past due.
- Anyone else, right after the code, sees a screen that sends them to your Stripe billing portal. It shows a sign-in button when we have your portal login link. Without it, the screen tells them to use the portal link in their email from you, or to contact you.
- The page lives on acornretain.com, not on your domain. It shows our wordmark, and
for <your app name>under the heading. - The subscriber must be able to read the inbox for that email. Without the code they cannot get past the first step.
- There is one link for everyone, and no way to fill in the email for them. Each subscriber types it.
- It handles cancelling only. Invoices and card updates stay in your Stripe portal.
The subscriber's email address
We use it to send the code and to find the subscription in Stripe. Then we delete it from our database, always within a day.
Cancellation rules are still yours
Auto-renewal and cancellation laws, such as click-to-cancel rules, apply to your business. You stay responsible for meeting them. The hosted page gives your subscribers one way to cancel online. It is not a legal guarantee, and this page is not legal advice.
Snippet or hosted page?
| Question | Snippet | Hosted page |
|---|---|---|
| Where it opens | In place, inside your app. No redirect. | A separate page on acornretain.com. |
| What you need | A cancel button and a few lines on your server to sign the Stripe customer id. | A Stripe connection and a link. No code. |
| How we know who is cancelling | Your server tells us. | The subscriber confirms their email with a code. |
| Who gets through | Anyone signed in to your app. | An email with one Stripe customer and one active, trialing or past-due subscription. |
Pricing
The hosted page is on every plan, Free included. A live hosted session counts toward your monthly quota exactly like a snippet session: 10 a month on Free, unlimited on Pro. Test mode is never counted. See pricing.
Back to getting started. Questions? Contact us.