Subscription cancellation scenarios and lack of documentation

ProveSource
Tourist
8 0 24

Shopify billing API guides offer no guidance on how to monitor cancelled subscriptions and what's the best approach.

 

At first, we opted to the "app/uninstall" webhook initially and thought this would be a solution.

We later found out that RecurringCharges will be frozen if a user "frozen" his store which can be found using the "shop/update" webhook and checking the `plan_name` in the payload.

Later we found out that `plan_name` is not documented fully and can have many values that symbolize a closed store, e.g.

  • frozen
  • cancelled
  • dormant
  • fraudulent

And we probably missed a few more.

 

We also found the "app_subscription/update" webhhook but there is no documentation for this one whatsoever and it seems it's not implemented yet.

 

Eventually, it seems the only option right now to identify if a RecurringApplicationCharge is cancelled with 100% certainty is by polling the API with a CRON which is not very efficient or simple.

 

Why is it so complicated and not documented?

So many documentation pages:

but none of those pages have any mention of dealing with cancellation.

 

Shopify team, please update your documentation.

Replies 10 (10)

ProveSource
Tourist
8 0 24

Bump

SBD_
Shopify Staff
1829 269 405

Hey @ProveSource,

 

shop/update will fire when a shop property is updated (including plan changes).

Scott | Developer Advocate @ Shopify 

ProveSource
Tourist
8 0 24

@SBD_ 

Thanks, but as mentioned there are many undocumented possible values for Shop's plan:

frozen
cancelled
dormant
fraudulent

And the shop/update webhook does not tell us if the merchant will be billed for your app in the future or not.

Unless you can specify how to do it better?

 

This is exactly what the post is about - there's no documentation about how to handle subscription cancellations other than manual cancellations or uninstall of the app.

SBD_
Shopify Staff
1829 269 405

Valid feedback. Thanks, I'll pass this on.

Scott | Developer Advocate @ Shopify 

Brian29
Shopify Partner
2 0 1

I agree with poster. It is extremely difficult on our end to sync up reliably with who actually has an active shopify subscription in a bulk fashion. It does seem the only "reliable" way is to iterate over all users on our end and query the shopify api billing system. Curious as to how anyone else is managing this on their end.

ProveSource
Tourist
8 0 24

We've created a daily polling mechanism to check the billing API response for each and every user.

Moreover, the Shopify billing API will report a user's plan as valid even though his store is no longer active.

For example, a shop is to be billed on April 15th, but the shop is frozen/cancelled.

The billing API will still report the subscription charge as active and billed on April 15th.

 

The billing API will only report the billing is inactive on April 15th.

edwardupton
Shopify Partner
16 0 7

+1 for clarifying the states that `plan_name` can return

Littledata: Smart connectors for ecommerce growth
Natashz
Tourist
7 0 14

Strongly agree with the poster. We spent SO much time, trying to understand all the scenarios.

After doing that we subscribed to the appSubscriptionUpdate webhook, however, it seems we're not getting ANY of the expected notifications there when the shop updated the plan.

There is no documentation as to when this will fire, how the data is expected to look like, or anything at all basically. This is very frustrating... 

 

This is what we came up with:

  • Canceled - The shop is closed permanently. Recurring application charges are removed. Partners must create new recurring application charges if the store re-opens.
  • Frozen - The shop is paused temporarily. Recurring application charges become inactive but remain in the store. The recurring application charges will resume after the store is unfrozen.
  • Dormant - Open with no orders, usually temporarily. Recurring application charges stay active and are charged normally
  • Fraudulent - Shop has been closed (can be permanent or temporary). Probably like “canceled”.
1080
Shopify Partner
282 8 38

@Natashz   can you please the status code code reference block for the same 

EugeneKim
Shopify Partner
60 3 27

Shopify staff can we please get an update on this? Clarification on plan_name has been asked again and again without sufficient responses from staff. This isn't something that partners can figure out on our own and this is internal knowledge that isn't publicly documented.

I just asked a related question here.

This post also asked for a full list of plan_name values. No response from shopify staff and it was asked four years ago. Other Shopify partners tried their best to crowd source the various values but without context as to what plan_name can mean, it doesn't really help us.

Shopify Staff, please help us write better software for merchants. Tell us something, even if it's just that there are no plans to document plan_name at this time. It would be disappointing but still less frustrating than the silence.