Skip to content

Instantly share code, notes, and snippets.

@sshaw
Last active July 26, 2025 22:36
Show Gist options
  • Save sshaw/265b4e09121de6a7c000d1097fca2159 to your computer and use it in GitHub Desktop.
Save sshaw/265b4e09121de6a7c000d1097fca2159 to your computer and use it in GitHub Desktop.
Table of Shopify Plan Names Returned by their GraphQL and REST APIs

Shopify Plan Names from GraphQL and REST APIs

The REST values are not listed anywhere in the docs. They are derrieved from an app with 100s of shops. GraphQL fields come from the Admin API's shops query. displayName is depricated.

REST plan_name REST plan_display_name GraphQL displayName GraphQL publicDisplayName
affiliate Development Development Development
basic Basic Basic Basic
business Business
dormant Pause and Build Pause and Build Paused
npo_lite NPO Lite
partner_test Developer Preview Developer Preview Development
professional Grow Shopify Grow
retail Retail
shopify_plus Shopify Plus Shopify Plus Plus
staff Staff Staff Development
unlimited Advanced Advanced Advanced
module ShopifyPlan
PLANS = [
{ "plan_name" => "affiliate", "plan_display_name" => "Development", "displayName" => "Development", "publicDisplayName" => "Development" },
{ "plan_name" => "basic", "plan_display_name" => "Basic", "displayName" => "Basic", "publicDisplayName" => "Basic" },
{ "plan_name" => "business", "plan_display_name" => "Business", "displayName" => "", "publicDisplayName" => "" },
{ "plan_name" => "dormant", "plan_display_name" => "Pause and Build", "displayName" => "Pause and Build", "publicDisplayName" => "Paused" },
{ "plan_name" => "npo_lite", "plan_display_name" => "NPO Lite", "displayName" => "", "publicDisplayName" => "" },
{ "plan_name" => "partner_test", "plan_display_name" => "Developer Preview", "displayName" => "Developer Preview", "publicDisplayName" => "Development" },
{ "plan_name" => "professional", "plan_display_name" => "Grow", "displayName" => "Shopify", "publicDisplayName" => "Grow" },
{ "plan_name" => "retail", "plan_display_name" => "Retail", "displayName" => "", "publicDisplayName" => "" },
{ "plan_name" => "shopify_plus", "plan_display_name" => "Shopify Plus", "displayName" => "Shopify Plus", "publicDisplayName" => "Plus" },
{ "plan_name" => "staff", "plan_display_name" => "Staff", "displayName" => "Staff", "publicDisplayName" => "Development" },
{ "plan_name" => "unlimited", "plan_display_name" => "Advanced", "displayName" => "Advanced", "publicDisplayName" => "Advanced" }
].freeze
VALID_COLUMNS = PLANS[0].keys
#
# Convert input to the Shopify plan name format specified by convert_to
#
def self.convert(input, convert_to)
convert_to = convert_to.to_s.strip
unless VALID_COLUMNS.include?(convert_to)
raise ArgumentError, "Invalid format #{convert_to}: must be one of #{VALID_COLUMNS.join(', ')}"
end
row = PLANS.find { |plan| VALID_COLUMNS.any? { |col| plan[col] == input } }
row[convert_to] if row
end
end
if $0 == __FILE__
puts ShopifyPlan.convert(ARGV[0], ARGV[1])
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment