The following requirements are used at Shopify to review all apps distributed through the Shopify App Store. These requirements are the same for both full and limited visibility apps. They're intended to provide the best experience across the entire app lifecycle, from branding, to installation, to onboarding, functionality, and quality. By following them, you can make sure that the review process is as quick as possible when you submit your own apps.
Some app types, such as sales channel apps, need to meet additional requirements based on how they're configured. You can find these requirements in the Specific requirements for certain app configurations section below.
CautionThese requirements are subject to change, as we're continuously making improvements to the Shopify App Store and developer platform. Your app will be expected to meet any new requirements that are added here. The Shopify App Review team can reject an app at their discretion if it doesn't meet the set standards.
The requirements in this section apply to both full and limited visibility apps distributed through the Shopify App Store. Depending on how your app is configured, it might also need to meet the requirements in the Specific requirements for certain app configurations section below.
Shopify PlusAs of October 1, 2022, apps that work for merchants only on the Shopify Plus plans can be listed in the Shopify App Store by changing your app's visibility. If you require assistance with changing your app's visibility, then please reach out to Shopify Partner Support.
Some types of apps aren't permitted on the Shopify App Store and others must have their visibility set to limited visibility.
The following app types aren't permitted on the Shopify App Store:
These requirements make sure that merchants can quickly set up and start using your app. The installation requirements describe the correct flows for authentication, app install charges, and any sign-up steps (if required). These requirements make sure that you provide merchants with the guidance they need when they start learning to use your app.
Merchants shouldn't be able to interact with the user interface (UI) before OAuth.
Permissions are the levels of access that your app has to a merchant's store through the API. The permissions that you request are shown to the merchant on the OAuth grant page, where the merchant can either grant or decline them.
Any connection that your app makes from its UI to either link to another shop or install other apps must go through the Shopify App Store listing first.
Apps must be installed and initiated only on Shopify services. Your app must not request the manual entry of a myshopify.com URL or a shop's domain during the installation or configuration flow.
For merchant security, your app must not use pop-up windows for essential app functionality, like running OAuth or approving app charges. Avoiding the use of pop-up windows also protects your app from being compromised by pop-up blockers.
If your app adds secondary payments to orders because of post-purchase upsells or other order edits, then you need to tell merchants that orders might have multiple payments associated with them. Include a note in your Shopify App Store listing and the app setup instructions to tell merchants that if they're capturing payments manually, then they might need to capture more than one payment for a single order.
For your app to be successful, it should offer a consistent and positive experience for the merchants who use it. The following functionality and quality requirements apply to the core features of your app, such as its user interface, performance, and billing.
By offering a great user interface, you can make it easier for merchants to use your app to grow their businesses. Your app's user interface must meet the following requirements:
Need help designing and building your app's user interface? The resources at Shopify Polaris are a great place to start.
Shopify offers managed pricing as well as an API-based billing system to support different types of app charges. It bills merchants through the same system that's used for their Shopify subscription, and makes it easier for them to keep track of their payments.
Your app must allow merchants to upgrade and downgrade their pricing plan without having to contact your support team or having to reinstall the app.
This includes ensuring that the charges are successfully processed in the application charge history page in the merchant admin.
Enterprise-level pricing plans must be referenced in the Description of additional charges section of the pricing section of the app's listing.
If your app has any charges, it must implement the Billing API so it can accept, decline, and request approval for charges again on reinstall.
Make sure your app is compliant with the latest Google Chrome cookie behavior and compatible with the SameSite cookie attribute.
Merchants are busy, and every minute matters when running their businesses. By making sure that your app performs well, you can help merchants achieve their goals faster and spend more time on the problems that need their attention the most.
Your app must be complete and testable. That means there shouldn't be user interface bugs, display issues, or error pages that prevent our reviewers from testing the app.
For example, an app might fail this requirement if buttons return errors when they’re clicked, or the app returns a success state in the user interface when an action has failed.
Apps that no longer reflect the original core functionality submitted to the App Store will be re-evaluated and will need to be resubmitted for a full App review.
If your app synchronizes data between Shopify and an external platform, then it must ensure all synchronized data is consistent across the Shopify admin, your app, and any additional platforms your app depends on.
For merchants to be successful, their online stores must have best-in-class speed and user experience. Apps can easily slow down performance, and we require apps to keep performance top-of-mind while helping merchants, to follow our performance requirements and best practices, and to test that their products continue to meet our minimum requirements for speed.
read_advanced_dom_pixel_events
must implement heatmap or session recording functionality on checkout pages according to the API’s requirements.For best practices and recommendations on app performance, refer to our app performance recommendations.
For apps that affect storefronts directly, Shopify tests the app's effect on store performance by measuring the Lighthouse score before and after the app is installed. We calculate a weighted average of score from the following pages:
The pages that are used to calculate the performance impact of apps on the storefront, and their weights. Page Weight Home 17% Product details 40% Collection 43%The difference in the score before and after the app is installed and configured on the above pages indicates whether the app improves or worsens store performance. To meet Shopify App Store requirements, your app must consistently demonstrate low or no negative impact on the performance of real merchant stores over time.
NoteLighthouse scores can vary between runs. Consider running these tests frequently during your development, and averaging your scores across a few consecutive Lighthouse tests before submission.
The app listing is your calling card - it helps merchants find your app and understand how it can help them run their businesses. Your listing explains the features, user interface, and functionality of your app. Your listing should clearly communicate functionality and pricing so that merchants can quickly understand the benefits of your app.
The app listing is your first point of contact with a merchant, and it's where they'll go to determine whether your app is right for them. All approved public apps have a listing on the Shopify App Store, regardless of whether you choose to make it full or limited visibility.
The listing is often your biggest marketing tool—an effective app listing encourages Shopify merchants to try your app for themselves. Make sure that your app listing is clear, and that it answers the questions that a potential user might have.
To create a Shopify App Store listing, you first need to select Shopify App Store as the distribution method for your app.
The app listing submission form lets you do the following:
Follow these requirements and guidelines when you're filling out the app submission form to make sure that merchants can easily find your app, understand what they can use it for, and see how much it costs.
NoteThe Shopify logo must not be used in any of the graphic elements of your app listing, including but not limited to the feature image, app icon, or screenshots.
The following image shows an example app listing, and shows where some of the fields in the app submission form are used in the app listing.
Translated listings help your app to reach a wider audience, as they convert in non-English speaking markets up to 4x better than English-only listings. You can add and delete translated app listings for any of the supported languages in the Shopify App Store on the App listings page in the Partner Dashboard.
Certain listing details can be managed only on your primary listing. If you have created translated listings for your app, then you can choose which one to set as your primary listing.
Every English-language primary listing is automatically translated into the following languages:
Automated listing translations get updated each time you publish an updated version of your app’s primary listing. Automated translations are clearly labeled on the app listing page, and merchants can toggle those translations off to view the listing in its original language. The listing also indicates to merchants if the app isn't available in a given language.
NoteAutomated listing translation covers the following fields: App card subtitle, App introduction, App details, Features, Pricing details, Search terms, and alt text for your images. To manage any other fields for a given language, you need to provide your own translated listing.
Adding your own translated listing for an automatically translated language overwrites and disables automatic translation for that language. Deleting your translated listing resumes automated translation for that language.
You can use this form to edit the translated listing for your app in the language you chose. To change which listing you're editing, go back to the App listings page and choose another listing.
Before you can submit your app for review, you need to make sure there are no issues with any translated listings you've added. When there are no issues, you can submit all your translated listings by clicking Submit app.
Your app name is an important part of how you brand yourself to merchants, and how they refer to your app. Follow these requirements when deciding on an app name:
When you create an app, you must also enter an app name in the Partner Dashboard. The app name is displayed in the Shopify admin. This name can be shorter than the name in the app listing so that it fits into the Shopify admin app nav. For more information, refer to the App Design Guidelines.
You can add and update your app icon from the app submission form. When making your app icon, follow these guidelines:
When merchants visit the Shopify App Store, they can search for apps by using categories, subcategories, and tags.
The tags impact your store's discoverability on the App Store. In this field, you must select a primary tag that best describes your apps' core functionality. You can add an additional secondary tag if your app has other core functionality that isn't described by the primary tag.
Changes to this field will trigger a review by the Shopify app review team.
If your app capabilities change and you want to change how your app is categorized, then you can submit an appeal to change the app categorization by using the link in the app submission form. After the Shopify app review team completes their review, they'll send a response, whether it's approved or rejected.
Each category requires additional structured features about your app. This makes it easier for merchants to identify and compare relevant app features by category.
You can select up to 25 structured features per category field in the app submission form and they will appear on the app listing. These details can be updated at any time and don't require an appeal for review.
We’ve curated the most common features that merchants might be looking for within each category. If your app has more functionality than what's listed for each category, then consider either using your features list to specify the functionality or let us know in this feedback form
In the Languages section of your app listing, you need to enter all the languages in which merchants can use your app’s UI within the Shopify admin. The Shopify admin itself can be used in any supported languages. To learn more about translating your app, refer to Internationalization.
If any languages listed under the Languages section of the app listing aren't available within your app, then you'll be asked to remove them from the list.
NoteIf the content displayed by your app on a merchant’s storefront is available in multiple languages, then you can list those languages in the app details field.
Your app store listing content should describe your app's features at a high level. When creating your app store listing content, don't reference your other apps and services in your app store listing content.
You must add a feature image or video for the listing header. A feature image or video is a required part of the app listing. It shows merchants more about your app in a highly visible part of your listing.
A short video is the best way to showcase the impact of the app on the business and how customers experience the app. If you don't have a video, then you can use a static image instead.
A feature video should promote the core features and functionality of your app and how it interacts with Shopify. Merchants want to understand what to expect from your app and how it will help them run their businesses. An effective promotional video will encourage the merchant to take a deeper look through your app listing to learn more about the features that were introduced in the video.
Follow these guidelines when making your feature video:
If you don't have a video, then use a static image to highlight your app. Your image should convey the benefit, functionality, or unique value of your app. For example, the image might show the customer experience on the storefront, or how the merchant's workflow or business results are impacted.
Follow these guidelines when you're preparing your feature image:
Here are some examples of feature images:
Provide a link to a demo store that showcases your app so merchants can see a live demonstration of how the app works. This lets the merchant get a sense of how your app can benefit them.
As a Shopify Partner, you can use a free development store as your demo store. If you use a development store, then the store must be owned by the Partner account that you're submitting your app with.
Follow these guidelines when providing a demo URL:
Development stores are password-protected. However, when merchants visit your demo store from the Shopify App Store, the development store password page won't appear.
In the Screenshots section, you must provide screenshots to show what your user interface looks like in action. Screenshots provide an opportunity to visually share what your app does in the storefront or the Shopify admin.
Follow these guidelines when you're preparing screenshots:
The app introduction field gives you 100 characters to explain your app's purpose and main benefit to merchants. The app introduction appears as prominently displayed text on your app store listing.
Follow these guidelines when writing your app introduction:
The following table shows some good examples and bad examples of app introductions:
Examples ReasonThe app details field gives you 500 characters to expand on your app's main features. In this field, you should let the merchant know what makes your app unique. The app details should be concise, but informative.
Follow these guidelines when writing your app details:
The feature list should include a list of the functional features of your app. The content for each listed feature should be short so that merchants can easily scan the list to understand what your app offers. You can use up to 80 characters per feature.
When writing your feature list, you should describe the functionality, not the mechanics behind each feature. The following table shows some good examples and bad examples for features:
Examples ReasonThe Integrations field lets you list a maximum of six integrations. If your app has more than six integrations, then list the ones that merchants will be most interested in.
Don't include the following in your list of supported integrations:
Data and user privacy are extremely important to merchants, and they value Partners who take security seriously. You need to include a privacy policy for your app.
Having a website that gives more information about your app can help merchants to decide if they want to install it. This URL needs to be set to the landing page of your developer website. If the URL goes to a special promotional page, then you'll be asked to change it.
This is a great opportunity to answer frequently asked questions in detail to merchants. This URL must redirect the merchant to a dedicated FAQ page on your website. If the URL redirects to a cloud document or PDF, then you'll be asked to change it.
A changelog is a great way to show merchants what's new with your app, and show that you're actively supporting and updating your app. The URL must redirect the merchant to a dedicated changelog page on your website.
You can provide a link directly to your support portal to give merchants a more complete view of the support services that you offer.
In order to set merchants up for success, you can provide a link to a relevant tutorial or other onboarding guidance.
In this field, you can provide a link to any other additional documentation that would be helpful and relevant to merchants using your app.
The pricing section lets you clarify app pricing information for merchants. You're required to provide names for all plan names. Only include pricing information in the designated area of the listing.
Select your app's primary billing method. There are three primary billing methods that you can use for your app:
Free to install Select this option if you won't charge the merchant anything for installing the app. Apps that are free to install can have additional usage charges or charges that are charged outside of the Shopify Billing API. If there are no additional charges, such as commissions or usage charges, then your app will appear as Free in the Shopify App Store. If you do specify additional charges, then your app will appear as Free to install. Recurring charge Select this option if you will charge the merchant each month (every 30 days) or each year that they have the app installed. If you select this option, then you'll be able to add information about the different monthly or yearly plans that you offer. One-time payment Select this option if you will charge the merchant a single fee for installing the app. NoteAny of the billing methods above can be combined with additional charges or external account charges. For example, if you charge a $10 one-time charge and $2 per 100 orders, then select One-time charge and provide details about the usage charges in the Additional charges section.
You can have a maximum of one free plan. If your app has only one plan for the entire app, and that plan is free, then that plan can't be listed as a recurring charge. For this type of a pricing model (with or without additional charges), select Free to install as your primary billing method.
If you have more than one plan and one of them is free, select Recurring charge as your primary billing method, then specify one of your plans as Free in the Plan pricing section. When your app appears in search results, it will be flagged as Free plan available.
To describe how merchants will be charged for using your app:
Enter the length of the free trial period for each of your pricing plans, after which you will begin to charge for the app. If the free trial length is 0 days, then charges begin immediately. When you choose the length of the free trial period for each of your pricing plans, make sure that it's enough time for the merchant to try your app. We recommend a period of 14 days. If you have a free plan, then there won't be any trial days associated with it.
Enter the details of your recurring plans. For each plan, specify whether it is free, billed monthly, or billed yearly:
If you offer a monthly plan that also has a discount option for the merchant to make a one-time yearly payment, then select Monthly charge and enter both the regular monthly charge and the discounted yearly charge. For example, if you have a plan that is $150 per month and you offer a yearly discounted price of $1200 a year, then enter $150 for the amount billed every 30 days and $1200 for the amount billed as one charge per year:
If you offer a plan with a recurring charge that has only a yearly charge option, then select Yearly charge and enter the total charge per year. For example, if you have a yearly plan that is $1200, then enter $1200 for the amount billed as one charge per year.
Select whether your plan has additional charges, such as usage fees or commissions. Provide a detailed description of these fees so that the merchant can understand how the charges are calculated. Do not enter yearly plan information in this field. Instead, enter yearly plan information either as a yearly charge or a yearly discounted price.
Optional: In the Plan details section, enter a name for the plan and a list of features that it includes. Enter each feature on a separate line, without any bullet points or leading characters. Bullet points will be added when the feature list is rendered in the app listing.
If you want to add another plan, then click Add another plan.
Plans will be displayed from lowest price to highest price in your app listing, regardless of the order in which you specify the plans.
All app charges must go through the Shopify Billing API unless you have prior approval from Shopify. If you've received approval from Shopify, then select I have approval to charge merchants outside of the Shopify Billing API and provide a link so that merchants can read about the external charges and sign up for any external services that are required.
Here's an example of how the pricing details for your app might be presented in your app listing:
1. A link to a page that describes any charges that are billed outside of Shopify's Billing API. 2. The name of each pricing plan. 3. A free monthly plan. 4. The paid monthly plan price. 5. The discounted yearly price for a monthly plan. 6. A description of any additional charges for this plan. 7. A list of features for this plan. 8. A link to a page that describes the app's pricing in detail.App discovery refers to how merchants discover your app on the Shopify App Store and other Shopify surfaces. This section helps merchants to better understand the value of your app when compared to other apps.
The app card subtitle should summarize your app in a concise phrase, and explain the value of your app. The subtitle should help merchants to quickly understand what your app does, and what sets it apart from others.
Follow these requirements when writing your app card subtitle:
The following table shows some good examples and bad examples for app card subtitles:
Examples ReasonThe Search terms field lets you enter a maximum of five search terms for your app. To help merchants discover your app, include only relevant terms that you want to rank higher when merchants search the Shopify App Store. You must enter at least one search term.
NoteOnly listed apps appear in Shopify App Store search results. By default, apps are listed when they're approved.
Follow these guidelines when picking your search terms:
In this section, you can input a title tag and meta description for your app store listing.
The title tag is used by search engines such as Google as the main heading for a search result. The title tag provides important information about where the link will send the user who clicks on the link. It's often the primary piece of information that users read on your search results, so you should make sure to follow best practices for writing influential title tags.
The meta description is a quick summary of the app store listing's content. Search engines show it in search results under the title tag. Along with the title tag, the meta description can influence whether users decide to click through to your app store listing. For tips on how to write an effective meta description, you can refer to our blog post about writing an effective meta description.
The following image is an example of how the title tag and meta description would appear in Google's search results for your app store listing.
You can specify which merchants can install your app by setting the install requirements in the app submission form. By adding install requirements in the app submission form, you can reduce the number of uninstalls and negative reviews related to merchant eligibility for your app.
For example, when a merchant installs an app that they can't use, such as a free shipping app that doesn't work in their country, they will uninstall your app shortly after installing it. They may also be frustrated about the experience and leave a negative review. Both uninstalls and negative reviews affect your ranking in the Shopify App Store.
If your app requires the Shopify Online Store or Shopify POS sales channels in order to work, then you only want merchants who use either, or both, to install your app. For example, if a merchant doesn't have an online store, then you want to prevent them from installing your app.
If your app interacts with the merchant's online store, such as using theme app extensions or editing theme assets, then select Shopify Online Store. If your app embeds features in Shopify Point of Sale, then select Shopify POS.
Shopify is responsible for the final determination about whether your app has specific sales channel requirements, and may update this setting before approving your app.
Set the geography requirements to make your app available only to merchants who meet specific geographic criteria. For example, if your app is a tax app that helps merchants in Germany file their taxes, then you should specify that only merchants with a business address in Germany can install your app. You can restrict the installation of your app to merchants who:
For each requirement, you can specify a list of countries or currencies that meet the requirement. For example, if your app works for stores who accept any of USD, CAD or GBP, then you can specify all three acceptable currencies.
NoteIf you specify multiple geographic requirements, then only merchants who meet all of the requirements can install the app.
Within your app, use endpoints and webhooks to check if a merchant changes their store settings after installation. If a merchant does change their settings, then you can notify them within the app or by email.
You can track your app listing traffic by entering a Google Analytics or Facebook pixel code for your app listing. You can also retarget merchants who view your app listing by adding a Google remarketing code or an AdRoll retargeting code.
Contact information is an important part of your app listing. The information that you enter here helps merchants learn more about your app and contact you with questions or issues. Shopify also uses this information to contact you about your app submission.
This email is used to notify you when a merchant has left a review on your app. The notification email includes the star rating that the merchant left, the comment that they left in their review, and the name of the merchant's store.
This is the email we use to contact you about your app submission to the Shopify App Store. You should enter the email of the person that will be the primary point of contact for making any necessary changes to your app submission.
If you've added a translated listing to your app listing, then you need to indicate whether you offer phone or email support in the language of the translated listing. You aren't required to offer support in the language of the translated listing, but you must indicate in the listing whether that support is available.
This is the email that merchants will use to contact you if they have support questions.
Having phone support can boost merchant confidence when selecting your app. If you want to offer phone support for your app, then you need to include a functioning phone number that a merchant can call to get phone support. We'll call this phone number during your app review to make sure it can be reached. If the number can't be reached, then you must remove or update the phone number.
In this section, you can provide instructions on how to test your app during your app review. You also need to include your app's performance ratio. To calculate your app's performance ratio, refer to B. Testing methodology in section 4. App performance of this document.
Including instructions on how your app should be used lets us give you valuable feedback if we encounter issues while testing.
Login credentials must be provided if your app integrates with third-party platforms. For example, if your app requires account access to a marketplace, then you must provide credentials for an active test account for that specific marketplace. Failure to provide a test account will result in the rejection of your app submission.
If your app requires login credentials, then the credentials you provide for review must be valid, and grant full access to the app's complete feature set. Double-check any credentials before submission to avoid issues during review.
Include a screencast when you submit your app for review. Follow these guidelines:
Security is a critical part of any web-based business because online apps can be exposed or compromised in many different ways. Before you submit your app, you need to make sure that it's secure so that the merchants who use it won't be at risk.
CautionBy January 31, 2024, embedded apps need to load in the new admin.shopify.com domain. Refer to our changelog for details. To resolve this issue, reference our Setting up Iframe protection document and ensure your app is using App bridge 2.0 or later (App bridge 3.0 is recommended).
Your app must not collect Shopify user credentials. As explained in Shopify API Authentication, public apps must use OAuth and public embedded apps must use session tokens and OAuth.
If your app stores its own credentials, then it must only store salted password hashes instead of actual passwords, as described on the Open Web Application Security Project website.
Your app must be protected against common web security vulnerabilities.
Your app must have a valid TLS/SSL certificate without any errors.
Your app must protect iFrames and prevent domains other than the shop domain from using the app in an iFrame.
Your app must not expose network services unnecessarily.
Your app must subscribe to mandatory webhooks.
Your app must not expose its shared secret. If your secret is inadvertently exposed, then you must rotate the secret immediately.
If your app uses offline tokens, then your app must not expose a shop's offline access token.
Your app must generate secure tokens, including expirations and search indexing protections, where applicable.
Your app must not process payments or orders outside of Shopify's checkout.
Your app must not alter or modify Shopify's checkout, except through the APIs and components that Shopify provides for that purpose.
Apps using the Admin APIs to capture payments must subscribe to the GraphQL ORDERS_EDITED webhook topic, to be notified when an order is edited and a secondary payment needs to be captured.
If your app uses app proxies, then it must verify the authenticity of requests.
Make sure that your app meets all requirements and best practices for querying, storing, processing, and deleting Shopify data.
If your app gathers, stores, processes, or shares personal data, then it's your responsibility to make sure that it complies with privacy laws.
You must include a link to a privacy policy in your app listing to communicate how your app uses data, and to provide transparency and build trust with merchants.
If your app handles a significant amount of customer data, then it should have a system in place to manage that data properly, including secure storage and the ability to erase data at the user's request where applicable, as per the data rights of individuals.
If your app runs marketing or advertising campaigns that require personal data, then it must have a system for allowing users to provide consent and/or opt-out for marketing promotions where applicable.
All public apps must subscribe to mandatory webhooks so that you can receive any data deletion requests that are issued by merchants.
Customer data collected by your app through a Shopify hosted service using the Online Store/Point of Sale channels must be synced to the Shopify admin and be made accessible to merchants. More information can be found in the Shopify API License and Terms of Use under section 2.3.17. See Storing customer data for information regarding which customer data must be sent back to the merchant.
If your app has an Export Control Classification Number (ECCN) other than EAR99
, then you must enter its ECCN number in the Configuration page.
If your app processes any protected customer data, you must implement and attest to all protected customer data requirements, including:
Shopify periodically deprecates and removes API functionality in accordance with our API versioning policies.
After you submit your app, you need to support the merchants who use it. There are different ways to do this, such as answering merchant inquiries promptly and publishing detailed help documentation, or providing instructive in-app context and support so that merchants can quickly get the help they need when they use your app.
You must have an email address that merchants can use to contact you if they need help with setting up or using your app. Providing great customer support is an important part of Shopify's own business, and you're expected to provide prompt support to the merchants who use your app as well.
Your support contact information and content should be easy to find, and it should include clear instructions that are specific to how your app integrates with Shopify. To learn more about writing effective help documentation, refer to Help documentation in Shopify Polaris.
Your Partner Dashboard must have up to date emergency developer contact information in the case that you need to be contacted regarding your app.
Apps are grouped into different categories depending on how they solve problems and meet merchant needs. If your app is in one of the following categories, then it needs to meet the requirements listed below. These requirements are in addition to the General requirements for all apps above.
In some cases, an app can have more than one type of configuration. For example, an app could be both a third-party integration and a dropshipping app.
An online store app modifies a merchant's storefront and theme by using either Shopify's API or other technical resources.
If your app modifies the merchant's theme, you need to use theme app extensions. Merchants should not need to make any manual code changes to their theme.
To support vintage themes, consider alternative integration methods, such as sharing instructions with merchants that detail how to add and remove your app features in their theme.
If you want to forward requests made to a route on an online store's origin to an external origin to display data on a store page, then you need to use app proxies.
Your app widget must be displayed properly and without any errors in the Theme Editor and Online Store.
Your app doesn't use theme app extensions or blocks to promote your app, promote related apps, or request reviews.
If your app adds a visible element to a merchant’s storefront, then you must allow the merchant to preview edits before saving and publishing changes to your app’s visual storefront components.
If your app includes app blocks, then your app must allow merchants to add, reposition, or remove app blocks in the theme editor.
App blocks must be responsive to the size of the section that they're added to.
If your app interacts with a merchant's theme, then you need to ensure that the app also works in the theme editor environment. If necessary, you can set your app to detect the theme editor so that you can adjust your app to work in that environment.
Your app must have detailed setup instructions on how to use your app embeds and app blocks. We strongly recommend providing a deep link to help merchants install and preview your app in their theme.
An embedded app uses app extensions and embedded app libraries to let merchants access its features directly in the Shopify admin or the Shopify POS app.
The embedded app must have a navigation icon that meets the following requirements:
circle
, ellipse
, g
, line
, path
, rect
, svg
, title
.cx
, cy
, d
, height
, opacity
, pathLength
, points
, r
, rx
, ry
, version
, viewBox
, width
, x1
, x2
, xmlns
, y1
, y2
, fill-rule
, clip-rule
.If your app uses bulk action links, then they must be complete, functional, and relevant to their locations in the Shopify admin. You must also make sure that for each bulk action link, the related action is applied to all items that have been selected.
Apps must use the latest version of Shopify App Bridge by adding the app-bridge.js
script tag before any other script tags. We recommend to add it to the <head>
of each document of your app or as the first script element of the body.
If your app uses max modal, formerly known as full screen mode, then it must not launch without a merchant interaction. Max modal can't be launched from the app navigation menu.
Max modal, formerly known as full screen mode, is intended to be used for complex editors or other complex use cases. Max modal should be used to improve user experience when launched.
Your app must function in incognito mode in Chrome.
Use session tokens to authenticate requests between client and your app's backend.
Don't use 3rd party cookies or local storage, because your app might not work on certain browsers, such as Safari for iOS, or browsers that block third party cookies.
If your app embeds into the Shopify POS app, then any POS actions that it uses (such as cart actions or checkout actions) must be complete, fully functional, and relevant to the Shopify POS app's capabilities.
If your app embeds into the Shopify POS app, then your app's user interface must be functioning and accessible from the POS Apps Admin Dashboard.
A product sourcing app lets merchants find and sell a wide range of products by providing product discovery and sales features directly in the app.
Product sourcing apps are exempt from using the Billing API for the sale of goods to their merchants, and can instead use a PCI compliant gateway. However, any other costs associated with the app must be charged using the Billing API.
If your app fulfills product orders on behalf of a merchant, then it must not automatically fulfill orders that are in the pending payment state.
Your app must add the cost of goods to the Cost field on the product page of the merchant's Shopify admin.
Your app must not sell high-risk products. Products that violate Shopify's Acceptable Use Policy and the Terms of Service for Payment Providers are prohibited. Products like cannabis, alcohol, pharmaceutical drugs, weapons and items listed as prohibited businesses are included in this restriction.
Your app allows merchants to request fulfillment. Use the fulfillmentOrderSubmitFulfillmentRequest
mutation to allow merchants to request fulfillment from the dropshipping app when an order is created.
A mobile app builder lets merchants create a mobile app based on their online store.
When reviewing your app, we test both the mobile app builder and the apps it makes to verify that all requirements are met.
The app builder must be converted into a Sales Channel from the App Settings area of the Partner Dashboard. This lets mobile apps that it builds create a checkout.
Your app must use Shopify App Bridge version 2.0. If your app is currently using the Embedded App SDK (EASDK), then you need to migrate to use Shopify App Bridge.
The app builder must have either a customizable theme builder or include preset themes for merchants to choose from.
The app builder must provide detailed instructions on how to create a developer account for either the Apple App Store or the Google Play store.
The app builder must include information about the app marketplace submission process for either the Apple App Store or the Google Play store to inform the merchant of wait times and app requirements.
Apps made by the app builder must not make any requests to the authenticated GraphQL Admin API. The app's client secret and API access token must be stored on a secure web server and not on the mobile device.
Apps made by the app builder must not include the OAuth access token. All calls to the Shopify Admin API must be made through a secure web server.
A sales channel app lets merchants publish their products from their Shopify admin to your platform, whether they're selling online, on mobile apps, or through social media.
CautionEnsure your app meets Shopify's definition of a Sales Channel. If it does, turn your app into a Sales Channel and ensure compliance with all Sales Channel requirements before you submit your app for review.
For a diagram that shows the lifecycle of a sales channel from the merchant's perspective, refer to Building Shopify channels.
The key features of a sales channel app are as follows:
Merchants must install sales channel apps using Shopify managed installation or during authorization code grant, and sales channels must embed in the Shopify admin using Shopify App Bridge.
After the merchant installs the sales channel app via OAuth, they must be redirected to the account section's account connection component. Connecting to the sales channel account must be done in a modal window in the app's UI and occur outside of Shopify. This process returns the merchant to the channel upon completion.
If the sales channel has any qualifying steps, eligibility requirements, or additional onboarding requirements, then these must be included in the account connection form.
The sales channel must have an account section where the account connection component is always visible (labelled with your channel name, such as "Sample channel").
The account section for the sales channel must let merchants disconnect their account.
If there is an approval process for creating an account for the sales channel, then this must be communicated to merchants using the banner component. The app must stay in the pending state while the merchant awaits approval from the channel.
Approval or rejection for the sales channel must be communicated to merchants by using a success or warning banner component.
The commission section for the sales channel must be created using the card component and the annotated layout. The commission section must state the commission rate. The commission section must state how and when merchants are charged.
The sales channel must include a terms and conditions section. Any links in that section must open in a new window.
The sales channel must have a help footer that links to a support page in a new window. The support page must include links to documentation and support contact information. The help footer must be visible on every page of the sales channel within Shopify admin.
The sales channel's publishing section must be created by using a card component and the layout shown in the following publishing example:
The sales channel's publishing section must show the number of products currently published, and provide links to the Shopify bulk editor to view and manage those products.
The sales channel's publishing section must report any products with errors that prevent them from being published on the sales channel:
Product issues with the sales channel must be communicated to the merchant using a feedback message banner component and the ResourceFeedback resource.
The sales channel must use the ProductListing resource to retrieve products set for publication by the merchant.
As of March 9th, 2020, all sales channels (with the exception of mobile app builders) must have the read_only_own_orders
scope applied. The read_only_own_orders
scope is added by the review team during the approval process and ensures that a channel can read only the orders it created. Make sure that your channel is requesting only orders it created for a faster review and approval.
Shopify supports a variety of ways of building sales channels. The way that you decide to build can determine who is responsible for payment processing, order fulfillment, and refunds.
Build your sales channel with cart permalinks. These links take customers who want to buy a product from the sales channel directly to a merchant's store checkout to complete the purchase.
Take customers to Shopify's checkout with items pre-loaded in the cart.
Use the Billing API. For sales attribution, you can use a storefront access token.
The sales channel must include a 16px by 16px navigation icon in SVG format, uploaded through the Partner Dashboard.
The icon must be a single color with a transparent background.
The icon's SVG file should be less than 2KB.
The icon's SVG file can contain only the following permitted tags: circle
, ellipse
, g
, line
, path
, rect
, svg
, title
.
The icon's SVG file can contain only the following permitted attributes: cx
, cy
, d
, height
, opacity
, pathLength
, points
, r
, rx
, ry
, version
, viewBox
, width
, x1
, x2
, xmlns
, y1
, y2
, fill-rule
, clip-rule
.
A purchase option app provides merchants and customers with various ways to sell and buy products, beyond the "buy now, pay now, and ship now" experience. For example, merchants can sell a product as a one-time purchase, a recurring subscription, or a pre-order.
OTHER
and fill out our request form, where we'll review your request for a new purchase option.The purchase option app must clearly show a merchant's customers the price of the purchase option and when the customer will be charged. We recommend that this is done through a standalone widget, as described in the subscription UX guidelines and deferred purchase option UX guidelines.
Apps that offer subscriptions must clearly disclose to a merchant's customers the amount charged, the length of the subscription term, the price per delivery, and the unit price for pre-paid items. We recommend that this is done through a standalone widget, as described in the subscription UX guidelines.
The purchase option app must display the selling plan name in the cart page, if the store's codebase is not already doing so.
TipThe Shopify Theme Store requires themes to display the selling plan name in the cart. Be sure to check whether the selling_plan.name
is already present in the theme's cart.liquid
file before attempting to insert it.
Apps that offer subscriptions must include navigation to a customer portal, both on the order status page and through a post-purchase email to a merchant's customers so that they're able to manage their subscription.
A donation distribution app collects and distributes funds to a charity on behalf of a merchant.
A payments app integrates with the Shopify admin to provide payment processing services.
Third-party payments apps must meet the minimum product requirements in addition to the following requirements:
https://{shop}.myshopify.com/services/payments_partners/gateways/${api_key}/settings
) after it's installed. After redirecting to that page, the merchant will then immediately be redirected to the payments app's corresponding page in the Shopify admin.Checkout::PaymentMethod::Render
Purchase.checkout.payment-option-item.details.render
Purchase.checkout.payment-option-item.hosted-fields.render-after
When you submit your payments app to the Shopify App Store for review, you need to fill out Part I. App review instructions on the app listing with the following testing details:
To make choosing additional payment methods as straightforward as possible for merchants, you should adhere to the following rules when naming your payments app:
The name of the payments app can't contain marketing text: For example, the name “World's Best Provider: Get 50 payment methods” isn't allowed. This is because merchants won't see the name of the payments app until they have chosen the payment method they wish to add to their store.
The name of the payment app can't be used by partners to gain a higher listing: There isn't a general alphabetized directory of payments apps for merchants to navigate. Instead merchants will discover payments apps using the payment methods they want to add.
You should make sure that the payment methods and locations offered are accurate because this is the only information that's used to surface the app to merchants. If a name appears to have been created with the purpose of gaining a higher listing on an alphabetized list, then it will not be allowed.
The name of the payments app has minimal impact on whether or not merchants add it to their store. How a merchant discovers a payments app is determined by the payment methods the app offers and the locations where these payment methods are offered.
Cryptocurrency payments apps enable merchants to accept cryptocurrency as a form of payment. All cryptocurrency payments apps must be accepted into the blockchain app program. Reach out to Partner Support to begin the application process.
Given the evolving regulatory landscape in the crypto payment industry, partners are expected to stay up to date on the latest requirements for their payments app, in the markets where they operate. In order to operate a crypto payments gateway on Shopify, your app must have the following functionality:
Crypto payment apps are excluded from being required to use Shopify’s automated refund functionality. If the refund session URL is blank in your payments app extension, then refunds are handled manually through the partner's software.
A Post Purchase app allows merchants to add a post-purchase page directly into the Shopify checkout in multiple ways. For example, merchants can create an upsell offer or text-based requests like surveys.
Checkout apps enable merchants to add custom UI or content to the checkout process. For example, merchants can add a custom field for order notes, or make product offers at checkout based on what's in the customer's cart.
The extension must not request that customers input payment information using a checkout UI extension.
The extension can’t be used to display promotions or advertisements, unless the merchant can fully configure, modify, test, and approve all extension elements, including content and links.
The extension can’t automatically add or pre-select optional charges to a buyer’s cart that increase the total checkout price. Apps can only add optional charges to carts or at checkout after displaying the additional cost in a manner that is clear to the buyer, and upon obtaining explicit buyer consent.
The extension can’t alter or re-order shipping options in a manner that increases the default shipping price. The cheapest shipping option must always be selected by default. This restriction doesn’t apply to non-shipping delivery methods, such as in-store pickup, local delivery, and pickup points.
Upsell product offers must display the same price as the product in the merchant’s store.
Extensions must not add countdown timers to the checkout.
Extensions must not collect information, including personally identifiable information, that's already captured by a standard Shopify checkout form field.
Extensions must use only the documented APIs that Shopify provides for customizing checkout.
Extensions must either request network access or use a metafield if they need to get data into checkout that they can't currently get from Shopify.
Extensions using network access must not negatively affect the performance of checkout.
Extensions using network access must keep response time to under one second. If the extension requires a response from a network call to render its components, then it must render skeleton components initially, to avoid blocking checkout rendering.
Your app doesn't use extensions to promote your app, promote related apps, or request reviews.
Extensions must be feature-complete, and provide novel functionality or content.
Apps that implement Chat UI components on checkout pages must use them to provide customer service using real-time chat as their core feature.
A blockchain app is defined as any application that exposes merchants to blockchain assets or functionality, including but not limited to cryptocurrency, NFT distribution, and tokengating.
Apps should in no event facilitate the sale or marketing of NFTs that could be classified as one or more of the following:
Royalties should never be dispersed to buyers or recipients of NFTs.
NFT distribution apps include the following types of apps:
Tokengating apps on Shopify enable merchants to gate access to products, promotions, and content based on the contents of a customer’s Web3 wallet.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3