Subscription statuses
A subscription's status is the single most important piece of state: it determines whether renewals fire, whether the customer keeps access, and what actions are available. This page lists every status, what causes each transition and what behaviour changes when the status changes.
The six statuses
| Status | Meaning | Renewals fire? | Customer has access? |
|---|---|---|---|
| active | Healthy subscription, charges happen on schedule. | Yes | Yes |
| scheduled | Order taken, start date in the future. Held in wc-scheduled until then. | Not yet — transitions to active on the start date. | Depends on your setup (typically no until active). |
| on-hold | Last renewal failed; retries in progress. | Paused while retries run. | Yes (grace period). Configurable. |
| paused | Customer (or admin) paused. Will resume on a date or on-demand. | No | Configurable (you decide). |
| cancelled | Customer or admin cancelled. Terminal state. | No | No |
| expired | Reached the configured length. Terminal state. | No | No |
Common transitions
Who triggers each transition and how to listen to it:
| From → To | Triggered by | Hook (action) |
|---|---|---|
| (new) → active | Successful initial checkout, no start date. | aswc_after_created_subscription |
| (new) → scheduled | Successful initial checkout with future start date. | aswc_subscription_scheduled |
| scheduled → active | Start date reached. Action Scheduler. | aswc_subscription_activated |
| active → on-hold | Renewal payment failed. | aswc_subscription_on_hold |
| on-hold → active | Retry succeeded, or customer paid manually. | aswc_subscription_reactivated |
| on-hold → cancelled | All retries failed. Configurable threshold. | aswc_subscription_cancelled |
| active → paused | Customer pause from My Account, or admin. | aswc_subscription_paused |
| paused → active | Customer resume, or scheduled resume date. | aswc_subscription_reactivated |
| active → cancelled | Customer or admin cancel. | aswc_subscription_cancelled |
| active → expired | Reached the configured length (N renewals). | aswc_subscription_expired |
Grace period during on-hold
When a renewal fails, the subscription moves to on-hold. The plugin retries the charge up to 3 times with exponential backoff (see Retry attempts). During that window the customer typically keeps access — you can use this as a grace period to give them time to update their card.
If the customer's role is being toggled (e.g. subscriber while active, customer when not), the toggle happens on the transition away from active, so on-hold typically still grants access.
Where to see the status
- Admin: WooCommerce → Subscriptions. Each subscription has a status badge.
- Customer: My Account → /aswc-subscriptions/. Same badges, customer-friendly labels.
- REST API:
GET /wp-json/aswc-route/v1/aswc-view-subscription/returns the status string.
Relevant hooks
Every transition fires a documented action. Filter or listen to whichever you need:
aswc_subscription_status_updated— fires on every status change. Bridge-only (WCS) — see callout there.aswc_can_subscription_be_updated_to— filter to veto a transition.aswc_subscription_statuses— filter the registered status list.- Full list of 236 hooks: Hooks reference.