Monthly to Annual Upgrade Email: Move Monthly Subscribers to Annual With One Campaign
Short answer: a monthly to annual upgrade email offers your active monthly subscribers a discount for paying a year up front. Send it to customers who've stayed a few months, frame the saving in their own numbers, link straight to the plan switch in your Stripe customer portal, and time a follow-up a few days before their next monthly renewal.
Annual plans are good for both sides. The customer pays less, and you get a year of revenue up front and a customer who doesn't face a cancel decision every month. Yet it's easy to offer one at checkout and never mention it again.
One well-targeted campaign fixes that. This guide covers who to send it to using Stripe data, how to frame the offer, two example emails and a follow-up, when to send, how the switch happens, and how to measure it.
Who to target with an annual plan email
The audience is narrower than "everyone on a monthly plan". You want people who are paying, settled, and likely to stay.
1. On a monthly plan. With Stripe connected, each contact carries a Stripe Plan field. It shows the price's nickname if you've set one, otherwise the product name. If your monthly and annual prices share a product, give them nicknames in Stripe, such as "Pro Monthly" and "Pro Annual". Then the rule is Stripe Plan includes Monthly.
2. Active. Add Stripe Subscription Status is active. That leaves out trials, past-due accounts and cancelled customers. Past-due customers in particular should get your dunning emails, not an offer to pay more up front.
3. Settled in. Someone in their first month hasn't decided whether they like you yet. Audienceful doesn't sync a "customer since" date from Stripe, so approximate tenure in one of two ways:
- Total spend. Total spend has spent at least three or four months' worth of your monthly price, any time. On a $19 plan, $57 means roughly three payments. This needs the historical import with payments, or it only counts payments since you connected.
- An early payment. Total spend has spent $1 between a date long before you launched and a date three months ago. That finds customers who paid you something more than three months back.
Don't use the contact's created date for this. For imported customers, it's when they arrived in Audienceful, not when they first paid.
With the spend threshold, the saved audience updates itself: monthly customers join as they pass it, and anyone who switches to annual drops out. The date range is fixed, so move it forward before each send. Building rules like these is covered in how to segment Stripe customers.
How to frame the annual discount
The offer is simple. The framing is where most annual discount emails go wrong.
- Use their numbers. "Pay $190 a year instead of $228" is clearer than "save 17%". Send each plan its own version so the figures match.
- Name the saving in months. "Two months free" is easy to picture, and it's the same offer as a discount.
- Make it about what they already use. They're paying monthly because the product works for them. Remind them of that, then show the cheaper way to keep it.
- Be honest about the commitment. Say what happens if they cancel mid-year, per your terms. Hiding it erodes trust in the next email.
- Add a reason to act now, if it's real. A deadline on the offer works. A fake countdown doesn't.
Example monthly to annual upgrade emails
Two versions of the first email, then a follow-up. Swap in your own brand and prices.
Example 1: the straightforward offer
Subject: Two months of Company, on us
Hi {{first_name}},
You've been on our monthly Pro plan for a while now, so here's a way to pay less for it.
Switch to annual billing and you'll pay $190 for the year instead of $228. That's two months free, and one less charge to think about each month.
Everything else stays the same: same plan, same features, same account.
Switch to annual →
The link takes you to your billing page, where you can review the change before confirming.
Sam, founder
Example 2: the usage angle
Subject: You've used Company every week since spring
Hi {{first_name}},
Quick one. You're clearly getting value from Company, which is exactly who our annual plan is for.
On annual billing, Pro costs $190 a year, about $15.83 a month instead of $19. You keep everything you've set up.
See the annual plan →
If annual isn't right for you, no problem. Your monthly plan carries on as it is.
Sam
Only use a claim like "every week since spring" if you can back it with data. Otherwise keep the subject line about the saving.
The follow-up
Subject: Before your next Company bill
Hi {{first_name}},
Your monthly Pro plan renews in a few days. If you switch to annual before then, you'll pay $190 for the next twelve months instead of $19 every month.
Switch before my renewal →
Sam
When to send it: timing around renewal
There are two moments that work.
The campaign goes to the whole audience at once. Send it mid-week, like any newsletter, and accept that it lands at a random point in each customer's billing cycle.
The follow-up works best a few days before each customer's next monthly renewal, when the next charge is on their mind. The Stripe Renews On field holds that date, so a date trigger can send it at the right moment for everyone:
- Create an automation with a Date trigger on Stripe Renews On, 5 days before, recurring once.
- Limit it to your monthly audience.
- Add a Conditional step on whether the contact clicked the campaign email, so people who already clicked don't get the same pitch twice.
- Add the follow-up email.
Set a goal of Stripe Plan includes Annual. Customers who switch exit the flow and count as conversions. New automations are created paused, so you can check it before switching it on.
How the upgrade actually happens
Audienceful sends the email. It doesn't change anything in Stripe, so the plan switch has to happen somewhere your customer can confirm it. You have three options:
- The Stripe customer portal. Turn on Switch plan in the portal settings. It's off by default, and you choose which products and prices customers can move between. The same settings control proration: whether customers are credited for the unused part of their month.
- A deep link to the plan change. Stripe can create a portal session that opens straight on the subscription update flow. That needs a little code in your app, since each link is created per customer.
- Your own billing page. If your app already has one, link there.
Whichever you pick, test it with a monthly subscription in Stripe's test mode before the email goes out. A broken upgrade link on an upgrade email is a wasted send.
Measure the switches
Three numbers tell you how it went:
- Conversions. Watch the size of an audience like Stripe Plan includes
Annual, and the goal conversion rate on the follow-up flow. - Revenue attributed to the campaign and the follow-up. A switch usually brings an annual payment, credited to the email the customer clicked or opened in the 5 days before paying. Here's how to measure email revenue from Stripe, including why annual payments make these campaigns look large.
- Clicks without switches. If plenty of people click and few switch, the problem is on the billing page, not in the email.
One caution: if your portal moves customers to annual at the end of their current period rather than right away, the annual payment may land outside the attribution window. Count switches with the goal and the audience, not only with revenue.
How to do it in Audienceful
- Connect Stripe and run the historical import with All selected. Step-by-step.
- Name your prices in Stripe so monthly and annual plans are distinct in Stripe Plan.
- Build the audience: Stripe Plan includes
MonthlyAND Stripe Subscription Status isactiveAND a total spend threshold. - Set up the switch in your Stripe customer portal, and copy the link.
- Send the campaign to the audience, one version per plan if prices differ.
- Add the follow-up as a date trigger on Stripe Renews On with a goal of Stripe Plan includes
Annual.
The other campaigns you can build on Stripe data, from emailing your Stripe customers to announcing a price increase, use the same fields. The Stripe email automation guide and the Stripe integration page cover the rest.
Audienceful is free up to 1,000 contacts, then paid plans start at $29/month billed yearly ($37.50 monthly) for 3,000 contacts. Start free and connect Stripe in a few clicks.
FAQs
How much of a discount should an annual plan offer?
There's no single right number. "Two months free" is a common framing because it's easy to understand. Pick a discount your margins can support, and keep it the same in every email.
Can Audienceful switch customers to annual billing?
No. Audienceful never changes anything in Stripe. Your email links to the Stripe customer portal, a deep link to its plan change screen, or your own billing page, where the customer confirms the switch.
How do I find customers who've been on a monthly plan for a while?
There's no tenure field from Stripe, so approximate it. Use total spend of at least a few months' payments, or a payment made more than a few months ago, combined with a monthly plan and an active status.
When should I send a monthly to annual upgrade email?
Send the campaign whenever suits you, then a follow-up a few days before each customer's next monthly renewal using a date trigger on Stripe Renews On. That's when the next charge is most on their mind.
Sources
Email? Easy.
Audienceful is how smart companies do AI email newsletters, marketing automation, and transactional email.
