Shopify API access scopes
All apps need to request access to specific store data during the app authorization process. This guide provides a list of available access scopes for the GraphQL Admin, Storefront, Payment Apps APIs, and Customer Account APIs.
How it works
Anchor link to section titled "How it works"After you've generated API credentials, your app needs to be authorized to access store data.
Authorization is the process of giving permissions to apps. Users can authorize Shopify apps to access data in a store. For example, an app might be authorized to access orders and product data in a store.
An app can request authenticated or unauthenticated access scopes.
Type of access scopes | Description | Example use cases |
---|---|---|
Authenticated | Controls access to resources in the GraphQL Admin API, Web Pixel API, and Payments Apps API. Authenticated access is intended for interacting with a store on behalf of a user. |
|
Unauthenticated | Controls an app's access to Storefront API objects. Unauthenticated access is intended for interacting with a store on behalf of a customer. |
|
Customer | Controls an app's access to Customer Account API objects. Customer access is intended for interacting with data that belongs to a customer. |
|
Authenticated access scopes
Anchor link to section titled "Authenticated access scopes"This section describes the authenticated access scopes that your app can request. In the table, access to some resources are marked with permissions required. In these cases, you must request specific permission to access data from the user in your Partner Dashboard.
Scope | Access |
---|---|
read_all_orders |
All relevant orders rather than the default window of orders created within the last 60 daysPermissions required This access scope is used in conjunction with existing order scopes, for example You need to request permission for this access scope from your Partner Dashboard before adding it to your app. |
|
As of API version 2024-10, |
|
CartTransform |
|
CheckoutBranding |
|
Article , Blog , Comment , Page |
|
Web Pixels API |
|
CustomerMergePreview , CustomerMergeRequest |
|
You need to request permission for this access scope from your Partner Dashboard before adding it to your app. |
|
Customer , Segment |
|
DeliveryCustomization |
|
Discounts features |
|
DraftOrder |
|
GenericFile |
|
FulfillmentService |
|
GiftCard |
|
InventoryLevel , InventoryItem |
|
ShopPolicy |
|
ShopLocale |
|
Location |
|
Market |
|
MarketingEvent , MarketingActivity |
read_merchant_approval_signals |
MerchantApprovalSignals |
|
MetaobjectDefinition |
|
Metaobject |
|
UrlRedirect |
|
CalculatedOrder ,
DeliveryCarrierService
|
|
AbandonedCheckout , Fulfillment , Order , OrderTransaction , DeliveryCarrierService |
|
GraphQL Admin API You need to request permission for these access scopes from your Partner Dashboard before adding them to your app. |
|
PaymentCustomization |
|
Payments Apps API PaymentsAppConfiguration |
|
PaymentMandate |
write_payment_sessions |
Payments Apps API PaymentSession , CaptureSession , RefundSession , VoidSession |
|
PaymentSchedule , PaymentTerms |
|
PriceRule |
|
CookieBanner , PrivacySettings |
|
Product , ProductVariant , Collection , ResourceFeedback |
|
SellingPlan |
|
Return |
|
ScriptTag |
|
DeliveryCarrierService |
read_shopify_payments_disputes |
ShopifyPaymentsDispute
|
read_shopify_payments_dispute_evidences |
ShopifyPaymentsDisputeEvidence
|
read_shopify_payments_payouts |
ShopifyPaymentsPayout , ShopifyPaymentsBalanceTransaction
|
read_store_credit_accounts |
StoreCreditAccount |
|
StoreCreditAccountDebitTransaction , StoreCreditAccountCreditTransaction |
|
OnlineStoreTheme |
read_translations |
TranslatableResource |
read_users |
StaffMember SHOPIFY PLUS |
|
Validation |
Requesting specific permissions
Anchor link to section titled "Requesting specific permissions"Follow the procedures below to request specific permissions to request access scopes in the Partner Dashboard.
Orders permissions
Anchor link to section titled "Orders permissions"By default, you have access to the last 60 days' worth of orders for a store. To access all the orders, you need to request access to the read_all_orders
scope from the user:
- From the Partner Dashboard, go to Apps.
- Click the name of your app.
- Click API access.
- In the Access requests section, on the Read all orders scope card, click Request access.
- On the Orders page that opens, describe your app and why you’re applying for access.
- Click Request access.
If Shopify approves your request, then you can add the read_all_orders
scope to your app along with read_orders
or write_orders
.
Subscription APIs permissions
Anchor link to section titled "Subscription APIs permissions"Subscription apps let users sell subscription products that generate multiple orders on a specific billing frequency.
With subscription products, the app user isn't required to get customer approval for each subsequent order after the initial subscription purchase. As a result, your app needs to request the required protected access scopes to use Subscription APIs from the app user:
- From the Partner Dashboard, go to Apps.
- Click the name of your app.
- Click API access.
- In the Access requests section, on the Access Subscriptions APIs card, click Request access.
- On the Subscriptions page that opens, describe why you’re applying for access.
- Click Request access.
If Shopify approves your request, then you can add the read_customer_payment_methods
and write_own_subscription_contracts
scopes to your app. If you're using the Customer Account API, you can add the customer_read_own_subscription_contracts
or customer_write_own_subscription_contracts
scopes.
Protected customer data permissions
Anchor link to section titled "Protected customer data permissions"By default, apps don't have access to any protected customer data. To access protected customer data, you must meet our protected customer data requirements. You can add the relevant scopes to your app, but the API won't return data from non-development stores until your app is configured and approved for protected customer data use.
Unauthenticated access scopes
Anchor link to section titled "Unauthenticated access scopes"Unauthenticated access scopes provide apps with read-only access to the Storefront API. Unauthenticated access is intended for interacting with a store on behalf of a customer. For example, an app might need to do one or more of following tasks:
- Read products and collections
- Create customers and update customer accounts
- Query international prices for products and orders
- Interact with a cart during a customer's session
- Initiate a checkout
Request scopes
Anchor link to section titled "Request scopes"To request unauthenticated access scopes for an app, select them when you generate API credentials or change granted access scopes.
To request access scopes or permissions for the Headless channel, refer to managing the Headless channel.
You can request the following unauthenticated access scopes:
Scope | Access |
---|---|
unauthenticated_read_checkouts ,
|
Checkout object |
unauthenticated_read_customers ,
|
Customer object |
unauthenticated_read_customer_tags |
tags field on the Customer object |
unauthenticated_read_content |
Storefront content, such as Article, Blog, and Comment objects |
unauthenticated_read_metaobjects |
View metaobjects, such as Metaobject |
unauthenticated_read_product_inventory |
quantityAvailable field on the ProductVariant object and totalAvailable field on the Product object |
unauthenticated_read_product_listings |
Product and Collection objects |
unauthenticated_read_product_pickup_locations |
Location and StoreAvailability objects |
unauthenticated_read_product_tags |
tags field on the Product object |
unauthenticated_read_selling_plans |
Selling plan content on the Product object |
Customer access scopes
Anchor link to section titled "Customer access scopes"Customer access scopes provide apps with read and write access to the Customer Account API. Customer access is intended for interacting with data that belongs to a customer. For example, an app might need to do one or more of following tasks:
- Read customers orders
- Update customer accounts
- Create and update customer addresses
- Read shop, customer or order metafields
Request scopes
Anchor link to section titled "Request scopes"To request access scopes or permissions for the Headless or Hydrogen channel, refer to managing permissions.
You can request the following customer access scopes:
Scope | Access |
---|---|
customer_read_customers ,
|
Customer object |
customer_read_orders ,
|
Order object |
customer_read_draft_orders |
Draft Order object |
customer_read_markets |
Market object |
customer_read_store_credit_accounts |
Store Credit Account object |
customer_read_own_subscription_contracts ,
|
Subscription Contract object for records that belong to your app |
customer_write_subscription_contracts |
Subscription Contract object for all records. Only available for Hydrogen and Headless storefronts |
customer_read_companies ,
|
Company object |
customer_read_locations ,
|
Company Location object |
Checking granted access scopes
Anchor link to section titled "Checking granted access scopes"You can check your app’s granted access scopes using the appInstallation
query in the GraphQL Admin API.
Limitations and considerations
Anchor link to section titled "Limitations and considerations"- Apps should request only the minimum amount of data that's necessary for an app to function when using a Shopify API. Shopify restricts access to scopes for apps that don't require legitimate use of the associated data.
- Only public or custom apps are granted access scopes. Legacy app types, such as private or unpublished, won't be granted new access scopes.