Skip to main content
Fixes for the most common Subscription Upgrade issues. If you are still stuck after trying these, contact support with the details listed under Testing and verifying.

Monitoring upgrade failures

Aftersell monitors for terminal upgrade failures over a rolling 7-day window. If the number of failures crosses the alert threshold, a warning banner appears on your home page describing how many upgrades failed and over how many days. The same alert also surfaces in the Needs attention panel of the home page. The alert includes a Review orders button that takes you directly to the order browser filtered to subscription upgrade issues, so you can see the affected orders and the specific cause for each failure. It clears automatically once the failure count drops below the threshold within the rolling window. If you see this alert, open the order browser and check the cause shown on each affected order, then refer to the relevant troubleshooting steps below.
The Subscription Upgrade template is never hidden — it is always listed under Add Funnel, whatever your provider setup. What blocks you is the Step 1 connection check: Continue stays disabled until Test API key returns API key verified with a green tick.Two different outcomes render the same red cancel icon, so read the message beside it:
  • Your provider rejected the key. The token is missing required scopes or has been revoked, and the message names the specific problem. Issue a new token in your provider dashboard with the scopes listed in Setup & configuration, paste it in, and test again.
  • Aftersell could not reach your provider — “Could not verify the API key. Please try again.” Nothing is necessarily wrong with the token; the call itself failed. Click Test API key again.
Editing the provider or the token clears the previous verdict, so re-test after any change.
This is expected behaviour. The product is the offer product, the placeholder line item added to the Shopify order as a record of the accepted upgrade. To reduce confusion, rename the offer product to something clear and add a description in Shopify Admin explaining what it represents. See What the customer sees.
The Shopify changeset and the provider API call are independent. If the offer product was added to the order but the subscription was not changed, the most common causes are:
  • Your provider API token is expired or lacks the required permissions. For Recharge, the token must have read_orders, read_subscriptions, write_subscriptions, and read_plans. Go to Step 1: Connect provider, re-test your key, and check the error message for the specific missing scopes.
  • The eligible product in the funnel does not match what the customer actually subscribed to.
  • For Loop, the target selling plan does not exist in your Loop dashboard for the configured frequency.
  • The retry workflow may still be working through its schedule: after a failed call it tries again at +1 hour, then at +24 hours. This is the same for every provider — Loop included, whose upgrade calls are synchronous and show up in the dashboard immediately when they succeed.
Aftersell automatically retries failed provider calls in a background workflow. The workflow checks the provider’s current state before re-running, so a successful but slow upgrade is not applied twice.If a replay can’t fix the cause, the workflow either refunds the charge — when no provider mutation succeeded and the charged line was a placeholder — or flags the upgrade for manual reconciliation, leaving the order intact. Net-new subscriptions and box upgrades are never auto-refunded, because the shopper receives real products. Contact support with the details listed in Testing and verifying.
The “Use an existing selling plan” option pulls plans directly from Recharge, Skio, or Loop. If the dropdown is empty:
  • Confirm selling plans are configured in your provider dashboard.
  • Make sure your API token has read access to Plans (Recharge: read_plans scope) or the appropriate scopes (Skio, Loop).
  • Go back to Step 1: Connect provider, re-test your API key, and continue.
This is expected. On Loop the Billing frequency field is not shown at all — only Delivery frequency, with the note “Loop syncs billing to delivery — customers are charged on each renewal”. Whatever you set as the delivery frequency is also the billing frequency.That is also why prepaid subscriptions — a billing frequency longer than the delivery frequency — are not supported on Loop: the integration rejects them outright rather than offering a field you cannot use. The other providers show both fields.
The offer product is subscription-only — either the product itself, or every one of its variants — and the customer’s checkout already contained a subscription. Shopify does not allow a second subscription on the same order, so the offer was skipped.The order details panel spells out which case it was: “The customer’s checkout already has a subscription, and the offer product is subscription-only”, or “All variants of the offer product are subscriptions, and the customer’s checkout already has one.” Both are fixed the same way — edit the offer’s product selection and swap in a one-time-purchase product, or use the Create new option in Step 4: Offer product to generate a placeholder.
  • Check that Show this funnel for all customers is not enabled. This overrides all other triggers.
  • Check the Variant on subscription trigger. It shows the funnel only when the order includes one of the selected products purchased as a subscription. On a funnel that has a subscription upgrade offer, the wizard owns this trigger and keeps it in sync with the product being upgraded, so it is read-only — the panel reads “Managed by this funnel’s subscription upgrade offer.” If it is targeting the wrong products, correct the upgrade offer’s trigger product rather than the trigger itself.
  • Check funnel priority. A higher-priority funnel with broader triggers may be firing first.
Do not try to reproduce this with a separate product trigger plus a subscription trigger. That pairing is exactly what Variant on subscription replaced: the two matched independently, so an order containing your trigger product as a one-time purchase and an unrelated subscription item satisfied both, fired the funnel, and the upgrade then failed downstream. One trigger, matching product and subscription state together, is the supported setup.