Skip to content

Subscription lifecycle

Click any row on the Subscriptions list to open its detail page. This is where you read history, change billing dates, swap the payment method, and cancel.

Subscription detail page header with buyer name, external ID, status badge, and Amount, Billing, and Payment method info cards

The top of the page shows:

  • Buyer name + email as the heading.
  • External ID (msub_...) below — useful for support tickets and webhook correlation.
  • Status badge on the right.
  • Cancel button (hidden once already canceled or expired).

Info cards

Three cards at the top summarise the subscription:

CardShows
AmountPer-cycle charge and interval (e.g. $29.99/month). Setup fee, if any, appears below.
BillingCompleted cycles vs. total (5 / 12 or 5 / ∞ for unlimited). Next charge date underneath.
Payment methodCard brand + last 4. Customer email underneath.

Details grid

The Details card lists the structured fields:

  • Current period start and end — the boundary of the current billing cycle.
  • Trial ends — only shown during a trial.
  • Created — the signup date.
  • Cancelled — date and reason, only after cancellation.
  • Dunning attempts — only when past_due, see Dunning.
  • Created from — Source chip plus, when applicable, a link to the originating Payment Link and the upstream system's subscription ID (e.g. the GHL subscription ID).

Original signup details

If the link's custom fields captured anything at signup (t-shirt size, mailing address, consent), it appears in a frozen snapshot under Original signup details. The snapshot keeps the field labels and values from the moment the buyer signed up, so it stays accurate even if you later changed the link's schema.

Event timeline

Event timeline listing created, charged, charge_failed, and other state-transition events with timestamps and amounts

Every state transition is logged. You'll typically see:

EventWhen
createdThe subscription was first registered.
chargedA renewal (or the first cycle) succeeded.
charge_failedA renewal attempt failed; dunning starts (or continues).
pausedYou paused renewals.
resumedRenewals re-enabled.
payment_method_updatedThe buyer (or you) swapped the card on file.
canceledYou or the buyer canceled.
expiredTotal-cycles cap reached.

Each entry shows the timestamp and, where relevant, the charged amount.

Actions

Cancel

Click Cancel in the header. The modal lets you record a reason (free-text, optional) which is saved on the subscription and shown to the GHL side if applicable. After confirming, status flips to canceled and no further charges occur.

Pause / Resume

Pause and resume are supported by the backend service. Pausing freezes renewals at the current cycle date; resuming reactivates them from now. The event timeline records both transitions.

Payment-method swap

The buyer can update their card from the customer portal; you can trigger the same flow from the subscription detail page when supported. The payment_method_updated event logs every swap.

How states propagate to integrations

When a subscription was created from HighLevel, lifecycle changes propagate back to GHL via outbound webhook:

Internal statusGHL status sent
active, trialactive
past_duepast_due
pausedunpaid (GHL has no native paused state)
canceledcanceled
expiredexpired

If the outbound sync fails, a retry marker is recorded so the ghl:retry-failed-state-syncs job can replay it.

Next step

Dunning and past-due handling →

Released under the proprietary Genius Checkout license.