Subscription is frozen
subscription.subscription_frozen fires when Shopify reports the subscription as frozen and it wasn’t frozen already. A repeated frozen report doesn’t fire again.
This is an involuntary state, not a decision the merchant made. The email that works here is a heads-up about payment, not a win-back.
Subscription is unfrozen
subscription.subscription_unfrozen fires when a frozen subscription returns to active. It’s deliberately distinct from Subscription is activated: the store was already a customer, so a first-purchase welcome would read badly.
What they carry
Both carry the store’s variables plus the subscription payload’ssubscription_plan and subscription_status.
Building on them
- On frozen: email the merchant that billing failed and their access is at risk, and set a custom field your app can read to soften what it gates.
- On unfrozen: clear that field, and optionally confirm to the merchant that everything’s back.
- Branch either on a segment if you only want to chase paying tiers.
As with every subscription trigger, an out-of-order Shopify delivery describing an older state than the one recorded is ignored. A freeze followed by a late-arriving “active” from before it won’t fire the unfreeze. A “frozen” that Shopify sent before the store uninstalled your app but that reaches Meridian after the uninstall fires nothing either: the uninstall cancelled the subscription, and it is recorded as cancelled.