Skip to main content
Cancellation is scheduled (subscription.cancellation_scheduled) fires when a store cancels its paid subscription, or moves from a paid plan to a free plan, and keeps its plan until the end of the period it has paid for. It’s the moment to reach the merchant while they still have the plan and can still change their mind.

When it fires

When the cancellation is scheduled, at the merchant’s request: from the account page, a cancelSubscription call, or a subscribe to a free plan. See Plan changes.
  • A scheduled downgrade turned into a cancellation fires it too. The merchant had a cheaper plan lined up and chose to cancel instead.
  • A cancellation requested in the last 24 hours of the period fires it as well. The plan still runs to the end of the period, but the merchant can no longer undo it.
  • A repeated cancel while a cancellation is already scheduled doesn’t fire it again, and neither does picking a free plan after cancelling: the cancellation keeps its date.
  • A cancellation that applies at once (during a trial, on a frozen subscription, or on a free plan) doesn’t fire it. Nothing is scheduled, so the triggers of an immediate change fire straight away, such as Subscription is cancelled.
At the end of the period, the plan ends and a second trigger follows: Subscription is cancelled for a cancellation, Subscription is downgraded for a move to a free plan. If the merchant keeps their plan in between, nothing fires and nothing follows. A merchant who keeps the plan and cancels again later fires this trigger again.

What it carries

The store’s variables, plus: In the email editor’s variable picker, the last two read Plan end date and Next app plan.

Building on it

  • Start from the Cancellation save template: one email, sent at once, telling the merchant their plan stays active until {{effective_date}} and that they can keep it from the app before that date.
  • Branch on target_plan_name with a variable condition to write differently to a merchant moving to your free plan and to one leaving entirely.
  • Branch on store_total_revenue and post to Slack so your team can call a long-paying customer before the date.
Last modified on October 26, 2026