Skip to content

A switch-to-yearly prompt for people who pay monthly

Someone who pays every month already likes the product. A short screen with the yearly price and the saving gives them a reason to switch, and an easy way to stay as they are.

A popup over a notes app titled Pay less for the same plan, showing a yearly plan at $59.99 marked Save 50% next to the monthly $9.99, with a Switch to yearly button
Display
Popup
Where
Centered over a dimmed page
When it shows
When your code opens it
Starts from
Switch to Yearly template

Try it. This is the real thing.

The phone runs the same Web SDK your site would load, with the template exactly as it ships. Tap a button and see what your code would receive. Prices here are examples; your site passes the real ones.

The button below opens it as a popup over this page, the way it appears on a site.

Loading the live demo

Tap anything, and scroll inside the phone for the rest. Your site gets the event.

When to use it

  • A few months after someone joins on a monthly plan.
  • After a good moment in the product, such as finishing a project.
  • Before a monthly price change, to offer the yearly price first.

What goes on it

  • A headline that names the benefit: pay less for the same plan.
  • The yearly plan, with its price per month and the saving.
  • A Switch to yearly button and a quiet Maybe later.

Set it up in three steps

  1. Start from the Switch to Yearly template

    Edit the words. The yearly price and the saving come from your site, so the screen always matches what you charge.

  2. Give it a placement

    Name it something like switch_to_yearly. Your code opens it only for people on a monthly plan, because Miniwall does not know who pays what.

  3. Run your own switch

    When someone taps the button, your code gets the plan ID and changes the subscription with your billing provider. Miniwall does not handle payments.

The code on your site

Prices and checkout stay in your product. The screen itself comes from Miniwall, so a new version reaches your site without a release.

Open it for people on a monthly plan
// account and changeToYearly are your own.
// Miniwall does not know who pays monthly.
if (account.plan === "monthly") {
  await UIKit.presentPaywall({
    paywall: { placement: "switch_to_yearly" },
    products: {
      monthly: { price: 9.99, currency: "USD", period: "month" },
      annual: { price: 59.99, currency: "USD", period: "year" },
    },
    onPurchase: async ({ packageId }) => changeToYearly(packageId),
  });
}

Good to know

Where does the saving come from?
From the prices your site passes in. The screen compares the yearly price with the monthly one you provide, so it never shows a number you do not charge.
Can I test two versions of the wording?
Yes. A/B tests are on Indie and up: half of your visitors see one screen, half see the other, and you can see which one led to more purchases.
  • A popup over a reporting app titled PDF export is a Pro feature, listing three benefits and a Pro plan at $9.99 a month with an Unlock export button

    Popup

    Upgrade popup

    Your plans in a popup when someone taps a locked feature or reaches a limit.

    See how it works
  • A popup over a task board titled Your plan renews in 3 days, with a box showing the yearly plan and a card on file, and Keep my plan, Change plan and Cancel renewal buttons

    Popup

    Renewal reminder

    A heads-up before a plan renews, with buttons to keep it, change it or cancel.

    See how it works
  • A popup over a notes app titled Welcome to Pro, listing what is unlocked, with a Start exploring button

    Popup

    Welcome after purchase

    Confirm the purchase and point to the first thing to do.

    See how it works

Stop waiting on a release

Start free