| [ Web Proxy ] |
| Viewing: https://shopify.dev/docs/api/usage/access-scopes | [Back] [Original] |
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.
For more information on how to configure your access scopes, refer to app configuration and manage access scopes.
For more information on how to configure your access scopes, refer to app configuration and manage access scopes.
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. Any permission to write a resource includes permission to read it, so request the write scope only when your app needs both.
| Scope type | 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. |
|
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.
To assign scopes to an existing admin-created custom app, see access scopes for admin-created custom apps. For a new app, declare the scopes it needs and deploy your app. Merchants approve the scopes when they install it.
To assign scopes to an existing admin-created custom app, see access scopes for admin-created custom apps. For a new app, declare the scopes it needs and deploy your app. Merchants approve the scopes when they install it.
| 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. |
| Available as of API version |
write_app_proxy | Allows your app to use app proxies. |
| As of API version 2024-10, |
| CartTransform |
| CheckoutBranding |
| CheckoutAndAccountsConfiguration |
| 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, Company, CompanyLocation |
| DeliveryCustomization |
| Discounts features |
| DraftOrder |
| GenericFile |
| FulfillmentService |
| GiftCard |
| InventoryLevel, InventoryItem |
| InventoryShipment, InventoryShipmentLineItem, InventoryShipmentTracking |
| Received items on an InventoryShipment. write_inventory_shipments_received_items authorizes the inventoryShipmentReceive mutation. Received quantities are returned on InventoryShipment and InventoryShipmentLineItem, which read_inventory_shipments grants access to. |
| InventoryTransfer, InventoryTransferLineItem |
| 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 |
|
|
|
|
| Return |
| ScriptTag |
| DeliveryCarrierService |
read_shopify_payments_disputes | ShopifyPaymentsDispute |
|
You need to request permission for these access scopes from Shopify before adding them to your app. |
| Dispute file upload endpoints of the REST Admin API permissions required You need to request permission for these access scopes from Shopify before adding them to your app. |
read_shopify_payments_payouts | ShopifyPaymentsPayout, ShopifyPaymentsBalanceTransaction |
read_store_credit_accounts | StoreCreditAccount |
| StoreCreditAccountDebitTransaction, StoreCreditAccountCreditTransaction |
| OnlineStoreTheme |
| TranslatableResource, Translation |
read_users | StaffMembershopify plus |
| Validation |
Follow the procedures below to request specific permissions for access scopes. Most permissions are requested in the Partner Dashboard, but some require contacting Shopify Support.
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:
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 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:
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.
The read_shopify_payments_dispute_evidences, write_shopify_payments_dispute_evidences, read_shopify_payments_dispute_file_uploads, and write_shopify_payments_dispute_file_uploads scopes are restricted. Shopify grants these scopes to individual apps. To be eligible:
You can't add these scopes to your app configuration until Shopify approves your app for them. If you declare one before approval, then creating an app version fails with an app_access validation error on scopes.
To request access, contact Shopify Support and describe your app and why it needs to read or submit dispute evidence.
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 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:
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,unauthenticated_write_checkouts | Cart object |
unauthenticated_read_customers,unauthenticated_write_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 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:
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_write_customers | Customer object |
customer_read_orders,customer_write_orders | Order object |
customer_read_draft_orders | Draft Order object |
customer_read_markets | Market object |
customer_read_metaobjects | Metaobject object |
customer_read_store_credit_accounts | Store Credit Account object |
customer_read_own_subscription_contracts,customer_write_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,customer_write_companies | Company object |
customer_read_locations,customer_write_locations | Company Location object |
You can check your app's granted access scopes using the appInstallation query in the GraphQL Admin API.
| Web Proxy Viewer | New URL | Original Page |