Announcing the Magic Pages Open House. Quarterly calls with our team!

Skip to the answer

How to add withdrawal and cancellation pages to your site

Let readers in the EU withdraw from or cancel a paid membership on your own domain. How to set the pages up, and what to do with each request.

Jannis Fedoruk-Betschki Jannis Fedoruk-Betschki

Since 19 June 2026, anyone who sells online to consumers in the EU has to let them withdraw online as well. The rule comes from Directive (EU) 2023/2673. It asks for an easy-to-find link labelled "withdraw from contract here", a second step to confirm, and an email receipt with the date and time. The law firm Loyens & Loeff explains it in plain words.

If you sell paid memberships to readers in the EU, it's likely to apply to your site. In Germany, § 312k BGB also requires a way to cancel a subscription online.

Our withdrawal and cancellation pages give your site both, on your own domain. We host the pages, send the reader a receipt and email you every request. Cancelling and refunding stays with you, in Ghost Admin or Stripe.

The pages follow our reading of these rules. That isn't legal advice, and whether they meet the requirements for your site is up to you. If you're unsure, ask a lawyer.

What your readers see

The pages look like the rest of your site. We take your publication logo, accent colour and fonts from Ghost, and the background and header colours from Ghost or your theme. Without a logo, the page shows your site title. If a colour doesn't work on the page, change it under Look → Edit in the portal.

Readers don't need to log in. The withdrawal page asks for their name, email address and contract (for example the name of their plan). The button at the bottom says "confirm withdrawal".

The withdrawal page with fields for Name, Email address and Contract, and a confirm withdrawal button

The cancellation page asks the same, and the reader picks a type of cancellation. We don't preselect one.

  • An ordinary cancellation ends the membership at the next possible date, or on a later date the reader enters.
  • An extraordinary cancellation ends it immediately for good cause, and the reader has to give a reason.

The button there says "cancel now".

The cancellation page with Name, Email address and Contract, a choice between Ordinary cancellation and Extraordinary cancellation, Reason for cancellation, Requested end date and a cancel now button

After they submit, the reader sees the date and time we received it. They also get an email titled "Confirmation of your withdrawal" (or cancellation) in your site's name, listing what they sent.

What you need

  • Stripe connected in Ghost. Until it is, the section shows Connect Stripe in Ghost first and you can't switch the pages on.
  • A link to each page in your site's navigation, so readers can find it from every page. The setup gives you the link.

Setting up the pages

Log in to your Ghost admin and click Customer portal in the left sidebar. If you can't find it, here's where it lives:

Where can I find the Magic Pages Customer Portal?
Your Magic Pages Customer Portal is built right into your Ghost admin.
  1. Open Configuration and scroll to EU consumer law.
  2. Switch on the Withdrawal page, the Cancellation page, or both.
  3. Check the Page address. It starts as withdraw and cancel (widerruf and kuendigen on a German site). You can use lowercase letters, digits and hyphens. Addresses Ghost needs for itself, like /ghost/ or /members/, aren't allowed.
  4. Under Where we send declarations, enter the email address that should get every request.
  5. Click Save changes. The badge shows Going live while we set up the address, then Live.
  6. Copy the Link for your navigation and add it in Ghost Admin under Settings → Navigation → Secondary navigation. Open navigation settings takes you there.
The EU consumer law section in the customer portal, showing it as Live with 2 open declarations, the Withdrawal page and Cancellation page switched on with their page addresses and navigation links, the email address for declarations, Texts and language, and Look

Name the menu items with the wording the law sets for them. In English that's "withdraw from contract here" and "cancel contracts here". Once a link is in your navigation, the portal shows it under the page. If it isn't, you'll see "We don't see this link in your navigation yet".

If you change the address of a live page later, the old link stops working when you save. Update your navigation at the same time.

Language and wording

The pages and the reader's receipt use one language: English or German. We start from your Ghost language, and any other language starts in English.

Under Texts and language, click Edit to change the wording. Four labels can't be changed because the law sets them: the link and confirm button on each page.

Handling a declaration

Every request arrives as an email titled "New withdrawal on" or "New cancellation on" your site's name. It also appears under Open declarations in the EU consumer law section. We match the reader's email address to your members, so each declaration tells you which membership it concerns and what to do next.

The Declarations list with two open declarations, a cancellation renewing in 3 days and a withdrawal renewing in 24 days, sorted by next billing date

What you do depends on the type:

  • Withdrawal: cancel the subscription immediately in Stripe and refund the payment under Payments. Ghost Admin can only cancel at the end of the period and can't refund, so this one happens in Stripe.
  • Cancellation (ordinary): open the member in Ghost Admin and choose Cancel subscription. The membership stays active until the end of the period.
  • Extraordinary cancellation: read the reason and decide. If you accept it, cancel immediately in Stripe. If you don't, reply to the reader.
A withdrawal declaration with the next step Cancel now and refund in Stripe, the matched member and subscription, what the reader sent, and a Mark handled button

If no member uses the reader's email address, they probably joined with another one. Click Reply by email and ask, then handle it like any other request.

When you're done, click Mark handled. You can add a note for your records first. Marking a declaration handled doesn't notify the reader.

If a declaration is still open after 3 days, we send you a reminder. We also send one when the reader's next billing date is less than 5 days away, so they aren't charged again before you act. The declarations list is sorted by next billing date for the same reason.

What we don't do

We don't cancel subscriptions, refund payments or reply to readers, and we can't see whether you did. That's why you mark each declaration handled yourself.