App requirements checklist for submitting apps to the Shopify App Store
If you build your app following the requirements in this checklist, then our merchants are much more likely to be delighted when using your app. This is the same checklist that Shopify's Apps team will use to review your app before it can be published in the
Shopify App Store, so make sure you can check off each item.
If your app stops meeting these requirements, Shopify's Apps team might choose to delist it until it meets the requirements again.
Shopify's Apps team can reject an app at their discretion if they consider that the quality and consistency of an app do not meet the set standards.
Please read our success criteria
documentation when submitting your app. Uniqueness
Multiple apps submitted by the same developer are held to a higher standard of uniqueness. Apps that are essentially the same need to be combined into one. App name
App names can not contain “Shopify” and can not be generic feature names. For example “Wishlist” is not allowed, but “Wishlist by DevShop” is acceptable.
App descriptions should not be included in the app title.
App names should be short since they might be truncated in areas of the App Store if they exceed 21 characters. APIs
Implement Shopify’s OAuth flow for authentication immediately upon installation.
Only use documented Shopify APIs.
Avoid asking for merchant information if it can be fetched via the API. Listing
The app listing is your calling card - it helps merchants find and understand how your app can help run their business. Your listing explains the features, user interface and functionality of your app.
Your listing is complete and well written.
Your listing is written in English. If your app is offered in another language, you may include a translated version in a second language.
Both your short and long description are included.
Your listing does not include testimonials, ratings or reviews of any kind.
You have included an app icon and banner.
You have included at least 3 screenshots. Use images from your app’s interface to communicate how your app works. Installation
When a merchant clicks “Get” from the app's listing, the app should immediately authenticate using Oauth before any other steps occur.
An Admin link should be used to initiate a specific action or function inside your app that is relevant to the page where that Admin link is listed. For any other purpose, it is best practice to explore different options rather than trying to implement an Admin link.
If an account is required, it can be automatically created by fetching the credentials from the merchant's store, and creating one for them (recommended). If a manual sign up/sign in form is required, it should be simple process for new and existing merchants.
If a sign up form is required, the form's fields should be autopopulated. This can be done by retrieving information from the Shop object of a merchant's store.
The app should take advantage of our Embedded app SDK (recommended).
Handle uninstallation gracefully. Merchants may install your app, remove it, and try reinstalling it later.
App install process is automated and does not require your manual review. Functionality
The app must use Shopify-specific merchant workflows. This means having onboarding and instructions specific to Shopify rather than generalized workflows used for multiple platforms. For example, the app must not mention other platforms or connected service guides when setting up the app.
Each app listing must connect to a standalone service, and it should not be possible to enable/configure other listings from within the service dashboard. If you plan on offering various tools you can either do so from a single application dashboard, or completely separate applications each with their own listing.
The app must include an interface for merchants to interact with. This is where the merchant should be redirected to after authenticating the app through OAuth or approving app charges. Pricing
To list apps that are not free in Shopify's App Store, ensure that you have implemented the Shopify Billing API. Use of other payment methods or systems is not permitted unless you have otherwise been notified by Shopify. Contact email@example.com if you have any questions or concerns.
Pricing accurately reflects the 'all-in' price. If a service costs money but the integration is free, the app listing should reflect the price of the service. Bugs
App is feature-complete, fully-functional and operates as described in the app description.
Thoroughly user-tested, and completely bug free. Support
Include a support email address. Great support is a key value for Shopify, and if you don’t measure up to our standards, your app can be delisted. You are expected to provide timely support to users.
Easy to use, and includes clear documentation and instructions that are specific to Shopify.
If your app requires manual editing of a merchant's theme files, then you must include uninstallation instructions. Security
Store salted password hashes, not actual passwords, as described on OWASP.
Build a secure app that is protected against cross-site request forgery ( CSRF) attacks, cross-site scripting ( XSS) attacks and other security vulnerabilities.
Served over HTTPS using a valid SSL certificate.
App does not process payments or orders outside of Shopify’s checkout.
App does not alter or modify Shopify’s checkout. Submitting your app
If you can confidently check off each item in the checklist above, then you're ready to submit your app for review by Shopify's Apps team.
Learn more ›
Sales Channel requirements
This is the checklist that Shopify will use to review your channel before it is made available for public install by merchants. Make sure you can check off these items before submitting your sales channel for review. You will also need to abide by the
general requirements created for the App store.
If your channel stops meeting these requirements, your sales channel may be removed from Shopify until the requirements are met again.
Channels should leverage the
Embedded App SDK to create embedded apps capable of managing settings. These apps must be created using the Shopify Polaris component library. This allows apps to be loaded directly in the Shopify admin and access its native interface, and improves the workflow for merchants. Setup
If your channel requires authorization, the
account connection component is the only visible section within the sales channel after install (other sections are visible only after an account has been connected). If merchants have to log in or sign up for your service to use your sales channel, this process takes place in a new window outside of the sales channel and return to the channel once completed.
Any fees are made explicit during setup.
If there is an approval process, this is communicated to merchants using a
banner component. Approval or rejection is communicated to merchants via a green or red banner respectively. Account page
Page has an
account connection component always visible (labelled with your channel name, i.e. Sample channel). 'Account' section allows merchants to disconnect their account. Publishing section
Both the Publishing and Commission sections can be created using
cards and the annotated layout shown in the publishing example screenshot. 'Publishing' section shows number of current products published, and links to the Shopify bulk editor to view and manage those products.
'Publishing' section shows any products with errors preventing publication. Commission section
'Commission' section states the commission rate.
'Commission' section states how and when merchants will be charged. Terms and conditions section
Has a Terms and conditions section, with links that open up in a new window.
help footer that links to support on your platform in a new window. This must include links to documentation and support contact information. Help footer is visible on every page of the sales channel. Navigation icon
App has a 16x16 SVG navigation icon uploaded through
Shopify Partners Must be a single color with a transparent background
Should be less than 2KB
Can contain only whitelisted tags:
Can contain only whitelisted attributes:
Select an option
What was good or bad about this page?