Change in shop/update Webhook Behavior for New Next-Gen Development Stores

For the shop/update webhook in new next-gen development stores, the shopifyPlan value now returns the actual plan name instead of “partner_test”. Previously, we used this webhook to verify if a store was a development store by checking for the “partner_test” shopifyPlan value, but this no longer seems possible.

The payload reference for this webhook topic is listed as “Shop,” but it does not return the complete Shop object. Many properties are missing. For instance, if it returned the full plan object, we would not be facing this issue.

(Reference: Shop - GraphQL Admin )

Currently, we can work around this problem by making an additional Shop GraphQL query when the webhook is triggered.

We require this check to detect when a development store initiates a Shopify plan. A long time ago, when a Shopify plan was initiated on a development store, our application would trigger the app/uninstalled webhook. This behavior later changed, and the plan transition started happening automatically without uninstalling the app.

Our request is to add a partnerDevelopment boolean value to the shop/update webhook payload.

Is there anything we are missing? Is there a different webhook topic that is triggered by the creation of a Shopify plan on development stores? If you are aware of a different solution, we would greatly appreciate it if you could let us know.

1 Like

Hey @Perugia,

You can distinguish development stores directly from the webhook payload without needing that extra GraphQL query. The plan_display_name field will contain “Development” for development stores created in the Partner Dashboard (transferable to merchants) or “App Development” for stores created in the Dev Dashboard.

For context, here are some examples from tests I just ran on different store types:

Partner Dashboard stores (transferable):

{
  "plan_display_name": "Development",
  "plan_name": "affiliate"
}

Dev Dashboard stores:

{
  "plan_display_name": "Advanced App Development",
  "plan_name": "unlimited"
}

or

{
  "plan_display_name": "Basic App Development",
  "plan_name": "basic"
}

I’ve passed along your feedback about the partnerDevelopment field to the team, since having it directly in the webhook payload would make this even more explicit.