Cannot Delete Customer with Cancelled Subscription

Topic summary

Issue: Stores cannot delete customers that have or previously had subscription contracts, even after canceling/removing subscriptions and orders. CMS shows an “Active subscription” block, while GraphQL reports “Existing subscription contracts.”

Platform update/position:

  • Deletion is currently blocked by design if any subscription contracts exist(ed).
  • Alternative: use “Erase personal data” (GDPR). Processing may take ~10 days. A screenshot shows where to access it in the customer profile menu.
  • The GUI error wording (“Active”) is a known bug; language will be aligned to “Existing.”

Feedback and impact:

  • Merchants testing in production report being unable to clear test customers, affecting stats and data hygiene.
  • Some report no active subscriptions (e.g., via Recharge) yet deletion remains blocked; “deleted” subscriptions may still appear in order histories.

Webhooks guidance:

  • For failing webhooks, return HTTP 200 quickly to stop retries and handle processing asynchronously (per Shopify webhook best practices).

Latest stance and status:

  • Deleting customers will not be an option; only data erasure is available.
  • Discussion about enabling deletion continues internally, but no ETA or resolution. Open issues remain around cleaning up test data and removing lingering subscription artifacts.
Summarized with AI on December 25. AI used: gpt-5.

That makes general sense, however this seems to be a stop gap. It looks like it takes 10 days for a data erasure to go through or take effect.

Additionally, it might be helpful to have a distinction between “existing” and “active”, right? Like, a user could have an active subscription, it could expire at some point, but you might also want to just get rid of the subscription and customer later.

I guess the thing that would be helpful to solve and have documentation around is testing subscriptions in a production environment. We’re only running into this problem because we’ve created test users and test subscriptions in prod to ensure that we’re connected correctly to some custom third party integrations. And, again, this ended up clogging up our webhook queue and caused some problems in the days following our release. In that way, it might also be great to get some documentation or insight into terminating failing webhooks. For example, if bad data gets into the webhook pipeline, what’s the best way to tell Shopify to just stop trying to rerun a webhook that you know is going to fail?

In whatever case, thanks for looking into this. Here’s hoping for a solution in the near future.

2 Likes