What is the paylod of the webhook SHOP_UPDATE?

Topic summary

Main issue: Understand the SHOP_UPDATE webhook payload, which API object to use (REST vs GraphQL), and how to detect development stores vs paid plans.

Key details:

  • A sample REST webhook payload (JSON) was shared, including fields like plan_name and plan_display_name, plus core shop metadata (id, domain, currency, timezone, etc.). This code snippet is central to the discussion.
  • Guidance: You can use the REST payload and infer store status via plan_name. Examples included “partner_test” (observed for development) and “affiliate.”

Plan values:

  • When asked for documented plan_name values, a list of possible values was provided (e.g., affiliate, partner_test, basic, professional, shopify_plus, trial, frozen, etc.). No official documentation link was cited.

GraphQL clarification:

  • In the Shop object, plan.partnerDevelopment returns true for all development stores, which supports making the app free for dev stores and paid for others.

Outcome/status:

  • Practical solution: use GraphQL plan.partnerDevelopment for reliable dev-store detection; use plan_name for plan differentiation.
  • Remaining gap: official documentation of all plan_name values was not confirmed.
Summarized with AI on December 27. AI used: gpt-5.

Hello. Could you please tell me what payload the SHOP_UPDATE webhook returns. Which Shop object can I use (GraphQL or REST) and how can I identify development stores and paid plans in the payload of this webhook?

Hello @andrew_upo

Shop Update Webhook Payload :

{
  "id": 12345,
  "name": "xyz-com",
  "email": "xyz@gamail.com",
  "domain": "test.myshopify.com",
  "province": null,
  "country": "IN",
  "address1": null,
  "zip": null,
  "city": null,
  "source": null,
  "phone": "99999999999",
  "latitude": null,
  "longitude": null,
  "primary_locale": "en",
  "address2": null,
  "created_at": "2024-05-01T07:22:03-04:00",
  "updated_at": "2024-06-06T08:20:46-04:00",
  "country_code": "IN",
  "country_name": "India",
  "currency": "INR",
  "customer_email": "test@gmail.com",
  "timezone": "(GMT-05:00) America/New_York",
  "iana_timezone": "America/New_York",
  "shop_owner": "test",
  "money_format": "Rs. {{amount}}",
  "money_with_currency_format": "Rs. {{amount}}",
  "weight_unit": "kg",
  "province_code": null,
  "taxes_included": false,
  "auto_configure_tax_inclusivity": null,
  "tax_shipping": null,
  "county_taxes": true,
  "plan_display_name": "Developer Preview",
  "plan_name": "partner_test",
  "has_discounts": true,
  "has_gift_cards": true,
  "myshopify_domain": "test.myshopify.com",
  "google_apps_domain": null,
  "google_apps_login_enabled": null,
  "money_in_emails_format": "Rs. {{amount}}",
  "money_with_currency_in_emails_format": "Rs. {{amount}}",
  "eligible_for_payments": false,
  "requires_extra_payments_agreement": false,
  "password_enabled": true,
  "has_storefront": true,
  "finances": true,
  "primary_location_id": 645549,
  "checkout_api_supported": true,
  "multi_location_enabled": true,
  "setup_required": false,
  "pre_launch_enabled": false,
  "enabled_presentment_currencies": [
    "INR",
    "MXN"
  ],
  "transactional_sms_disabled": true,
  "marketing_sms_consent_enabled_at_checkout": false
}

You can use rest API and identify development stores and paid plans in the webhook payload through the plan_name.

If the solution presented meets your needs and addresses your query effectively, I encourage you to accept it as the chosen answer. This will acknowledge the support you received and aid fellow community members in identifying reliable and effective solutions for their similar concerns.
Thank you.

1 Like

Thanks for the reply.
Are there any documented values for the “plan_name” field?
What values can I get there. The documentation gives the value “affiliate” for development stores, but my development store returns “partner_test” as in your reply.

Hello @andrew_upo

Here are All Shopify Plan Name :

[
"affiliate",
"staff",
"professional",
"custom",
"shopify_plus",
"unlimited",
"basic",
"cancelled",
"staff_business",
"trial",
"dormant",
"frozen",
"singtel_unlimited",
"npo_lite",
"singtel_professional",
"singtel_trial",
"npo_full",
"business",
"singtel_basic",
"uafrica_professional",
"sales_training",
"singtel_starter",
"uafrica_basic",
"fraudulent",
"enterprise",
"starter",
"comped",
"shopify_alumni",
"partner_test"
]

If the solution presented meets your needs and addresses your query effectively, I encourage you to accept it as the chosen answer. This will acknowledge the support you received and aid fellow community members in identifying reliable and effective solutions for their similar concerns.
Thank you.

Thank you so much!
Could you please tell me more, in Shop GraphQL object there is a field “plan.partnerDevelopment”. This field will return true for all development stores, right?
My goal is to make the app free for development stores, but require subscriptions for stores on paid plans.

Hello @andrew_upo

You’re correct, The plan.partnerDevelopment field returns true for all development stores.

If the solution presented meets your needs and addresses your query effectively, I encourage you to accept it as the chosen answer. This will acknowledge the support you received and aid fellow community members in identifying reliable and effective solutions for their similar concerns.
Thank you.

1 Like