Built for Shopify requirements
To qualify for Built for Shopify status, your app must meet the requirements listed below. Each requirement in this list helps your app meet our app quality standards. Some requirements are general and apply to all apps, and others apply to specific categories of apps.
Along the way, you'll qualify for smaller achievements that grant you unique benefits. For details about the benefits of each achievement, refer to the Built for Shopify overview.
For details about changes to the Built for Shopify requirements, refer to the Built for Shopify changelog.
1. Prerequisites
Some prerequisites are automatically evaluated while others require manual validation. Visit your app's Distribution page in your Partner Dashboard for a comprehensive breakdown.
1.1 General
1.1.1 Meet App Store requirements
The app needs to continue to meet the requirements for distributing apps on the Shopify App Store.
Your app will be audited for these requirements when you apply for Built for Shopify status.
1.1.2 Have a good Partner standing
The app needs to comply with the Partner Program Agreement and Shopify API License and Terms of Use. Your Partner Account must have no active or outstanding infractions. Resolving an outstanding infraction is the first step in getting your account back into Good Partner standing, however, even after resolving issues, previous violations can still temporarily impact your BFS status depending on their severity and frequency. Read more about Enforcement of Shopify's Partner Program Policies.
1.2 Merchant utility
1.2.1 Have a minimum number of installs
Your app must have a minimum of 50 net installs from active shops on paid plans.
1.2.2 Have a minimum number of reviews
Your app must have a minimum of five reviews.
1.2.3 Have a minimum app rating
Your app must meet a minimum recent app rating threshold in the Shopify App Store.
2. Performance
Optimizing your app for performance directly influences conversion rates, repeat business, and search engine rankings.
2.1 Admin performance
Shopify uses Web Vitals to determine the performance of your app in the Shopify admin. To enable Shopify to gather Web Vitals metrics, your app needs to use the latest version of App Bridge.
Learn how to measure your app's performance in the Shopify admin using Web Vitals
When your app loads in the Shopify admin, it needs to meet Web Vitals targets for the following metrics, at the 75th percentile of page loads:
2.1.1 Minimize Largest Contentful Paint (LCP)
Your app's Largest Contentful Paint (LCP) is 2.5 seconds or less. Your app needs to have a minimum of 100 calls for LCP over the last 28 days to be assessed.
2.1.2 Minimize Cumulative Layout Shift (CLS)
Your app's Cumulative Layout Shift (CLS) is 0.1 or less. Your app needs to have a minimum of 100 calls for CLS over the last 28 days to be assessed.
2.1.3 Minimize Interaction to Next Paint (INP)
Your app's Interaction to Next Paint (INP) is 200 milliseconds or less. Your app needs to have a minimum of 100 calls for INP over the last 28 days to be assessed.
2.2 Storefront performance
2.2.1 Minimize the impact on store speed
Your app must not reduce the storefront Lighthouse performance score by more than ten points.
2.3 Checkout performance
2.3.1 Minimize the impact on checkout speed
You need to optimize how your app fetches and stores carrier rates to minimize impact on checkout speed.
For Shopify to assess your impact on checkout speed, your app must make a minimum of 1000 requests over the last 28 days.
Your requests must have a p95 value of 500ms or less, with a 0.1% failure rate.
3. Integration
Design your app so that all of its primary functionality is available within the Shopify admin. Integrating your app into the Shopify admin makes it feel familiar, gives you access to Shopify UI elements, and lets users use it easily on mobile devices.
3.1 Embedded apps
3.1.1 Embed the app in the Shopify admin
Apps should be embedded in the Shopify admin using the latest version of Shopify App Bridge by adding the app-bridge.js
script tag to the <head>
of every document of your app. Use session token authentication to further optimize the merchant's experience.
Embedding your app in the Shopify admin makes your app feel familiar, gives you access to Shopify UI elements, and lets merchants use your app more easily on mobile devices.
Apps should not embed external web pages. For example, an app named Puzzlify should not have an embedded app home that looks identical to the puzzlify.com website.
3.1.2 Keep primary app workflows within Shopify
By default, apps should be embedded in the Shopify admin with the latest version of App Bridge. Merchants should be able to complete primary app workflows inside the Shopify admin. Merchants shouldn't need to access an external website or external surface to complete a primary workflow.
Exceptions apply on apps that need a standalone site to provide more complex features in a user-friendly way. An example is messaging apps, where users need to continuously monitor their conversation inbox, while accessing other areas of the Shopify admin.
3.1.3 Enable seamless sign up based on Shopify credentials
Apps should make sign up seamless for merchants, without requiring an additional login or sign-up prompt. Users should be able to start using the app immediately after installing it, without having to complete another sign up.
Exceptions apply on apps that can't be easily accessed by merchants in a self-service manner and require a more complex sign-up, which often involves a business-to-business contract.
In these cases, the app's onboarding in the Shopify admin must first ask merchants to connect their store to their existing credentials. If your app offers both self-service and business-to-business sign up, then the onboarding must include an option to sign up for the service using the merchant's existing Shopify credentials.
3.1.4 Include simplified monitoring or reporting
Expose key metrics that are helpful for merchants on the app's home page. If your app includes monitoring or complex reports that can only exist on an external website or app surface, then you must include a simplified version of the monitoring or reporting in the Shopify admin.
3.1.5 Keep third-party connection settings within Shopify
Any settings or configurations that control the connection between Shopify and a third-party system must be available inside the Shopify embedded app interface.
For instance, when merchants link a social media account, they should have the ability to connect and disconnect it through the Shopify admin at any time.
3.2 Installation and asset management
3.2.1 Provide a clean uninstallation process
If your app is meant to be used in a merchant's online store, then you need to use theme app extensions to build the elements to be included in the theme.
Theme app extensions allow apps to integrate with themes seamlessly, without injecting code into the theme. When merchants uninstall apps, blocks that are associated with the apps are automatically and entirely removed from online store themes.
3.2.2 Doesn't use the Asset API to create, modify, or delete files
Your app shouldn't add, remove, or edit a merchant's theme files. There are three exceptions to this rule:
You can still use the Asset API to read theme files.
Your app will be audited for Asset API usage when you apply for Built for Shopify status.
4. Design
The design of your app should not result in merchants feeling confused, stressed, or misled. Instead, your app should be designed to feel familiar, helpful, and user-friendly.
4.1 Familiar
Your app generally looks and behaves like the Shopify admin. It offers merchants a predictable and familiar experience. Your app should leverage Shopify App Bridge where appropriate.
4.1.1 Follow UX best practices
Your app's UI should mimic Shopify's core look and feel to ensure merchants experience a consistent and familiar environment.

4.1.2 Mobile-friendly
Design your app to be responsive and adapt to different screen sizes and devices.

4.1.3 Concise app name
App names in the admin should not truncate in the Shopify navigation menu.

Use the App Bridge ui-nav-menu (or NavMenu React component) to integrate your app's primary navigation into the Shopify admin navigation menu.

4.1.5 Use the contextual save bar
Form inputs should generally be saved using the App Bridge Contextual Save Bar (CSB).

4.1.6 Use modals appropriately
In a ui-modal (or Modal React component), use the ui-title-bar (or TitleBar React component) when a modal title, primary action and/or secondary action is needed.

4.2 Helpful
Your app generally works well and is easy to use. The steps required to set up and implement your app's core workflow should be clear and easy to follow. The process should be free of errors and bugs. If error messages are necessary, they should be clear and the method to rectify any errors should be obvious.
4.2.1 Spelling, grammar and phrasing
Apps must use clear and easy to understand language, proper grammar, and proper spelling throughout.

4.2.2 Helpful onboarding
Apps should have a concise onboarding experience that helps merchants establish the app's core functionality.

4.2.3 Helpful homepage
Your homepage should clearly indicate if the app is set up and working, and, if possible, indicate how well the app is performing.

4.2.4 Helpful error messages
Errors should be red, guide merchants to solutions, and appear next to relevant fields when possible.

4.2.5 Guide merchants to logical actions
When presenting a group of related actions, the most logical action should appear visually dominant.

4.2.6 Visible previews
If an app allows merchants to customize something visual, merchants must be able to see their changes in real-time.

4.3 User-friendly
Your app doesn't mislead, pressure or overwhelm merchants. Your app should not implement dark patterns. Deceptive or manipulative practices erode merchant trust in your app and in Shopify.
4.3.1 Don't make false claims
Don't guarantee, promise, or strongly suggest merchant outcomes.

4.3.2 Don't pressure merchants
Don't pressure merchants with visible timers, language that could cause guilt or shame, or offer rewards for 5-star reviews.

4.3.3 Don't distract merchants
Don't distract merchants with unnecessary animations, modals, popovers, or colors.

4.3.4 Don't overwhelm merchants
Don't overwhelm merchants with poorly organized forms, overwhelming amounts of text, or multiple banners.

4.3.5 Don't impersonate Shopify
Don't do anything that might reasonably lead a merchant to mistake your app (or a feature of your app) for a first-party Shopify app or for Shopify itself.

4.3.6 Dismissible ads
Advertisements and/or promotional content must be dismissible by merchants.

Features that are gated by a particular plan, must be disabled (both visually and functionally) and clearly indicated. Features exclusive to Shopify Plus must be hidden for non-Plus merchants.

5. Category-specific
Not all apps are the same. A great app for one workflow uses different APIs, has different extensions, and looks different from an app for another workflow. Category-specific requirements ensure that apps excel in meeting unique user needs.
If your app belongs to one of the categories listed below, then it must meet all of the criteria listed for that category.
5.1 Ads apps
Any app that enables merchants to create and manage digital advertising campaigns to promote their stores and products.
5.1.1 Use web pixels for ads apps
If your app provides ad attribution, audience creation, segmentation, analytics, pixels, retargeting, or lookalike targeting, it must create and use Web Pixel extensions to subscribe to relevant events emitted by Shopify when needed. You may not use script tags or require merchants to copy JavaScript into their stores in order to gather this data.
5.1.2 Use Shopify segments for ads apps
Your app must allow merchants to use any segment defined in the Shopify admin when targeting advertisements or any other operation that targets multiple customers. It must also make these actions available through a customer segment action extension.
5.2 Affiliate program apps
Any app that enables merchants to create and manage systems for influencers to promote their products for commissions.
5.2.1 Use web pixels for affiliate program apps
Your app must create and use Web Pixel extensions to subscribe to relevant events emitted by Shopify when needed. You may not use script tags or require merchants to copy JavaScript into their stores in order to gather this data.
5.3 Analytics apps
Any app that provides merchants with data-driven insights about their store's performance.
5.3.1 Use web pixels for analytics apps
Your app must create and use Web Pixel extensions to subscribe to relevant events emitted by Shopify when needed. You may not use script tags or require merchants to copy JavaScript into their stores in order to gather this data.
5.4 Carrier services apps
Any app that connects to a carrier service (also known as a carrier calculated service or shipping service) to provide real-time shipping rates to buyers. Learn more about how to optimize your app's carrier rates performance. To assess your app's performance, you must make a minimum of 1000 requests in the last 28 days.
5.4.1 Respond quickly to rate requests
Over the last 28 days, the carrier rate endpoint provided by your app must respond in fewer than 500 milliseconds for 95% of calls.
5.4.2 Complete rate requests reliably
Over the last 28 days, the carrier rate endpoint provided by your app must successfully respond to 99.9% of requests.
5.5 Discount apps
Any app that enables merchants to define and configure price reductions.
5.5.1 Use discount primitives
Your app must either use discount functions to define custom discount types or use the native discount APIs to create discounts.
5.5.2 Don't use draft orders with custom discounts
Your app must not create draft orders to give custom discounts. Drafts with custom discounts are designed for one-off merchant-driven flows rather than automated customer-driven flows and do not have the same reporting tools.
5.5.3 Use a single redeem code per discount
Your app must use the mutation to create any discounts with multiple redeem codes.
Instead of creating separate discounts with the same value and different codes through the GraphQL Admin API, using ensures that all codes are linked to the same discount characteristics, making it easier to manage and update them as needed.
5.5.4 Create high quality links
All links to your app from the Create discount button on the Discounts page must direct to a page in your embedded app where merchants can create the corresponding discount. These pages must follow all relevant App Design Guidelines.
5.6 Email marketing apps
Any app that enables merchants to communicate with customers via targeted email campaigns.
5.6.1 Use web pixels for email marketing apps
If your app provides automation, segmentation, analytics, or pixels, it must create and use Web Pixel extensions to subscribe to relevant events emitted by Shopify when needed. You may not use script tags or require merchants to copy JavaScript into their stores in order to gather this data.
5.6.2 Sync customer data for email marketing apps
Your app must sync all customer information to and from Shopify as required by the Shopify API License and Terms of Use.
5.6.3 Use Shopify segments for email marketing apps
Your app must allow merchants to use any segment defined in the Shopify admin when targeting advertisements or any other operation that targets multiple customers. It must also make these actions available through a customer segment action extension.
5.6.4 Help merchants to identify visitors to their store for email marketing apps
Your app must use the visitors API to log identifying information, such as emails or phone numbers, for any customers that provide this information on the Online Store.
5.7 Forms apps
Any app that enables merchants to create custom fields for customers to submit personal information, preferences, or inquiries on their stores.
5.7.1 Use Shopify segments for forms apps
Your app must allow merchants to use any segment defined in the Shopify admin when targeting advertisements or any other operation that targets multiple customers. It must also make these actions available through a customer segment action extension.
5.7.2 Help merchants to identify visitors to their store for forms apps
Your app must use the visitors API to log identifying information, such as emails or phone numbers, for any customers that provide this information on the Online Store.
5.7.3 Sync customer data for forms apps
Your app must sync all customer information to and from Shopify as required by the Shopify API License and Terms of Use.
5.8 Fulfillment services apps
Any app that uses its own location to prepare and ship orders on behalf of merchants.
5.8.1 Actively fulfill orders
Your app must be active and have fulfilled 100 or more fulfillment orders in the last 28 days. If an app is not active, then it's not possible to accurately assess the other criteria for fulfillment services apps.
5.8.2 Complete fulfillment orders
Your app must have completed 99% of the fulfillment orders assigned to it in the last 28 days. New fulfillment orders that were created in the last 7 days are excluded. A fulfillment order is considered incomplete if it's in one of the following states:
5.8.3 Respond to callback requests
In the last 28 days, your app must have responded successfully to 99% of Shopify callback requests that are sent to it, so merchants are not alerted to failing callback requests.
5.8.4 Wait for merchant requests
Your app must only fulfill fulfillment orders after a merchant requests fulfillment.
5.8.5 Add tracking information
In the last 28 days, your app must have added tracking information to 80% of the fulfillments that it creates within one hour of creation.
In cases where precise tracking information isn't available from a shipping carrier URL, you can provide a custom URL to your app's site by:
5.8.6 Respond to fulfillment requests
5.8.7 Respond to cancellation requests
5.9 Invoices and receipts apps
Any app that generates invoices or packing slips for orders.
5.9.1 Enable printing on orders pages
Your app must use an admin print action extension to let merchants print invoices or packing slips for an individual order directly from the orders detail page as well as for any selected orders from the orders index page.
5.10 Product bundles apps
Any app that groups products together to be sold as a single unit.
5.10.1 Use bundles primitives
Your app must either use the GraphQL Admin API to create static bundles or use a function to create customized bundles.
However, if your app supports a bundles use case that is not yet supported through these APIs — such as selling bundles on unsupported sales channels, selling bundles as a part of a subscription, or editing orders to add or remove bundles after purchase — you may use other methods to create a bundle.
5.11 Product reviews apps
Any app that enables merchants to collect product reviews.
5.11.1 Provide a flow trigger
Your app must provide a Flow trigger that starts a workflow whenever a new review is collected.
5.11.2 Use block extensions
Your app must provide an admin block extension on customer detail pages that gives merchants access to any reviews submitted by the customer.
5.12 Returns and exchanges apps
Any app that facilitates the process of managing and processing product returns, exchanges, and refunds for customers.
5.12.1 Sync returns information
Your app must use the appropriate APIs to communicate all lifecycle events of a return to Shopify. These include:
5.12.2 Include exchange line items
Your app must create exchange line items on an order when managing exchanges. You must also remove exchange lines from the order if they are no longer needed.
5.12.3 Include shipping and restocking fees
Your app must add shipping fees and restocking fees on an order when applicable.
5.13 SMS marketing apps
Any app that enables merchants to communicate with customers via targeted SMS campaigns.
5.13.1 Use web pixels for SMS marketing apps
If your app provides automation, segmentation, analytics, or pixels, it must create and use Web Pixel extensions to subscribe to relevant events emitted by Shopify when needed. You may not use script tags or require merchants to copy JavaScript into their stores in order to gather this data.
5.13.2 Sync customer data for SMS marketing apps
Your app must sync all customer information to and from Shopify as required by the Shopify API License and Terms of Use.
5.13.3 Use Shopify segments for SMS marketing apps
Your app must allow merchants to use any segment defined in the Shopify admin when targeting advertisements or any other operation that targets multiple customers. It must also make these actions available through a customer segment action extension.
5.13.4 Help merchants to identify visitors to their store for SMS marketing apps
Your app must use the visitors API to log identifying information, such as emails or phone numbers, for any customers that provide this information on the Online Store.
5.14 Subscription apps
Any app that enables customers to purchase products on a recurring basis.
5.14.1 Use subscription objects and APIs
Your app must use the following subscriptions objects and APIs:
5.14.2 Use theme app block extensions
Your app must add subscriptions on product detail pages by using an [app block for themes] (/docs/apps/build/online-store/theme-app-extensions/configuration#app-blocks-for-themes) that is compatible with [Online Store 2.0] (/docs/storefronts/themes/os20).
5.14.3 Follow subscriptions UX guidelines
Your app must obey the following subscriptions UX guidelines:
5.14.4 Use Customer Account UI extensions
Your app must use Customer Account UI extensions to enable customers to view and manage their subscriptions.