Centsbot · guides · samples · audit · hero · CTA · onboarding · social proof · FAQ · email-capture · comparison · changelog · demo

SaaS trial-expiry & upgrade-prompt copy fixes: 5 before/after rewrites you can copy

A trial-expiry email or in-app upgrade prompt is not a countdown with a price attached. Users open it to decide whether the work they already did survives — and whether paying is a fair next step or a trap. Vague “Your trial ends soon” lines and feature walls that only say “Upgrade” hide the kept value and the next win. Below are five rewrites taken from our public sample micro-audits. Each one quotes live public framing as of the sample date. These are outside-eye suggestions, not results: none of these companies hired us, and we do not claim conversion numbers for them.

1. Name what they keep, not the clock — Linear

Before (expiry framing): "Your trial ends in 3 days — upgrade now"

After: "Keep the triage board and issue history you already built — Pro unlocks unlimited cycles"

Countdowns create panic; naming the artifact they already made (triage board, issue history) and the unlock (unlimited cycles) makes pay feel like keeping work, not buying a timer. Put the kept value in the subject line and the first sentence of the banner.

Full Linear sample

2. Bound the upgrade to one job, not the whole plan — Notion

Before (upgrade framing): "Upgrade to Plus for more features"

After: "You hit the guest limit on this workspace — Plus adds 100 guests so this page can stay shared"

“More features” is a catalog, not a reason. Naming the exact limit they hit, the next capacity, and the page that stays shared turns the prompt into a job fix. Mirror that same sentence in the modal title and the email CTA.

Full Notion sample

3. Show the usage they earned, then the next tier — PostHog

Before (limit framing): "You have reached your event limit"

After: "You tracked 1.1M events this month — Scale keeps the same dashboards and raises the cap to 10M"

A hard stop without context feels punitive. Restating their usage, promising the same dashboards stay, and naming the new cap makes the upgrade a continuation. Put the usage number above the pay button; put the “same dashboards” promise under it.

Full PostHog sample

4. Say what happens to their data if they skip — Vercel

Before (expiry framing): "Trial expired — subscribe to continue"

After: "Projects stay deployed on Hobby for 7 days after trial — Pro keeps bandwidth and preview URLs without pause"

“Subscribe to continue” hides the grace path. Naming what stays live, for how long, and what Pro protects (bandwidth, preview URLs) removes the black hole after the trial. Put the grace window in the expiry email and the in-app banner.

Full Vercel sample

5. Offer a fair downgrade next to the pay CTA — Cal.com

Before (prompt framing): "Upgrade to Teams or lose access"

After: "Keep solo booking free — Teams is for shared round-robin calendars; stay on Free if you book alone"

Threat framing trains users to churn. Offering a clear Free path for solo use next to the Teams CTA respects fit and still sells the shared-calendar job. Put both options on one screen: primary = upgrade for the shared job; secondary = stay Free for solo.

Full Cal.com sample

The 5-point trial-expiry & upgrade-prompt checklist

  1. Lead with kept value, not the countdown. Name the artifact or history that survives when they pay.
  2. Tie the upgrade to one hit limit or one job. Guests, events, bandwidth — not “more features.”
  3. Restate their usage before the price. Numbers they earned make the next tier feel earned too.
  4. State the grace path if they skip. What stays live, for how long, and what pauses.
  5. Offer an honest stay-or-downgrade next to the pay CTA. A fair Free path beats a threat wall.

Ship one clearer expiry email or upgrade modal at a time and watch whether people pay with the work they already did still in mind. Sharper trial copy will not fix a weak product — but a vague “upgrade now” wall can hide a real fit behind a countdown.

Centsbot · samples are illustrative and not affiliated with the companies named · [email protected]