Requirements for listing on the Shopify App Store
The following requirements are used at Shopify to review all apps that are submitted to the Shopify App Store. They're intended to provide the best experience across the entire app lifecycle, from branding, listing, and 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.
General requirements for all apps
The requirements in this section apply to all apps that are submitted to 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.
A. Prohibited configurations
- Apps that act as a payment gateway, or apps that modify an existing payment gateway - Our Hosted Payment SDK was designed to let payment processors integrate with the Shopify checkout. All payment processors must use this SDK and not distribute through the Shopify App Store.
- Apps that are pieces of standalone software that need to be downloaded to a computer - The Shopify App Store's distribution method is through the use of web applications. There currently isn't an infrastructure to distribute these types of apps safely and securely to our merchants.
- Apps that mostly rely on merchant or partner interaction to operate - Apps that rely on mainly person-to-person interactions should consider listing as a service in our Experts Marketplace.
- Apps that make little or no use of Shopify's APIs - Apps submitting to the Shopify App Store must make efficient use of Shopify APIs in order to function. This is to make the merchant experience better by using direct shop data and mitigate user error.
- Apps that falsify data to deceive merchants or buyers - These apps violate part C - Section 3.3 of our Partner Program Agreement as well as Section 6 of our Acceptable Use Policy.
- Apps that alter or process payments outside of Shopify's checkout - Shopify can't guarantee the safety or security of an order that has been placed through a modified checkout, or processed by circumventing it.
- Apps that are marketed or available only to merchants on the Shopify Plus plan - The Shopify App Store currently caters to all different businesses and plan types. Although it's acceptable to create and market an enterprise plan, all compatible Shopify plan types must be able to use your app if needed.
- Multiple apps with overlapping functionality created by the same partner - If you want to list more than one app on the Shopify App Store, then each app must be clearly different from other apps that you've already listed. In some cases, you can combine multiple apps into one. See section C.2.4 of our Partner Program Agreement.
- Apps that host marketplaces on Shopify - Apps that connect merchants to marketplaces can't host those marketplaces on Shopify. Apps also can't let merchants turn their stores into marketplaces. To learn more about best practices for marketplace apps, see Build a sales channel.
Writing a Shopify App Store listing
The app listing is your first point of contact with a merchant, and it’s where they’ll look to see if your app is right for them. It’s also your biggest marketing tool — an effective app listing will encourage Shopify merchants to try out your app for themselves. Make sure that your app listing is clear, and that it answers the questions that a potential user might have.
The app listing submission form lets you do the following:
- highlight app features so merchants can easily see what your app can do for them
- suggest a category for your app so merchants can find it easily
- provide clear pricing information
- specify which merchants can install your app
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.
Localize your app listing
If your app is available in multiple languages, you can also make your app listing available in those languages to help your app reach a wider audience. From the app listing submission form, you can add and delete localized app listings for any of the supported languages on the Shopify App Store.
The English listing is considered the primary listing. This means that some parts of the form, such as the app's Pricing and Category, can be edited only from the English listing page. If you edit those parts of the submission form for the English listing, then those changes are also applied to any localized listings.
Add a localized listing
- Log in to your Partner Dashboard.
- Click Apps.
- Click the name of your app.
- In the App actions menu, click Edit Shopify App Store listing.
- Click Add localized listing.
- Select the language that you want to use for your listing.
- Click Add listing.
You can use this form to create and edit the localized listing for your app in the language you chose. To change which listing you're editing, select a language from the Listing language drop-down menu.
Before you can submit your app listing submission form, you need to make sure there are no issues with any localized listings you've added. After that, you can submit all your localized listings by clicking Submit all listings.
Delete a localized listing
- Log in to your Partner Dashboard.
- Click Apps.
- Click the name of your app.
- In the App actions menu, click Edit Shopify App Store listing.
- Select a language from the Listing language drop-down menu.
- At the bottom of the form, click Delete listing.
A. App information
1. App name and tagline
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:
- The app name can't include the word "Shopify."
- The app name must be 30 characters or fewer.
- The app name can't be a generic description of your app's functionality, such as "Banner Slider." Your app name should be distinct and to the point.
- The app name can't include the name of your Shopify Partner account, which appears beside the app name on the Shopify App Store.
- Your tagline should be unique and summarize your app to help promote it. Your tagline can't contain “Shopify” or the name of your Shopify Partner account.
2. App icon
You can add and update your app icon from the app submission form. When making your app icon, follow these guidelines:
- The app icon's dimensions should be 1200px by 1200px.
- Don't include text in your app icon.
- Don’t include screenshots or photographs in your app icon.
- Use padding around your app icon. Your logo shouldn't touch the edge of the image.
- Keep the corners square. The image's corners are automatically rounded when it's displayed.
- Use bold colors and recognizable patterns.
- Make it simple and focus on one or two elements. Visual clutter can make an image less effective.
You can suggest a top-level category for your app, which determines where your app will be grouped in the Categories menu on the Shopify App Store. If your app fits into multiple categories, then choose the category where merchants are most likely to look for it. The Shopify Apps QA team will then review the category that you've suggested, and will further subcategorize your app to make it easier for merchants to find it.
For example, if your app adds a countdown timer to a merchant's store, then it likely fits best under Store Design. If you choose this category, then the Shopify Apps QA team will review the app, and tag it for appropriate subcategories within Store Design, such as Timers and Counters.
4. Search terms
The 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.
Follow these guidelines when picking your search terms:
- Use complete words. For example, use "dropshipping" instead of "dropshi" or another partial form of the word.
- Include the single, complete form of a term instead of several versions of the same term. For example, if you include "dropshipping" as a search term, then you don't need to include other terms such as "dropship", "shipping," or "drop ship."
- Don't include "Shopify" in any of your search terms.
- Don't list your competitors as a search term. If you do, then the Shopify Apps QA team will reject your app submission.
- Don't convey more than one idea in a single search term. For example, "email marketing" is appropriate, but "email marketing for leads" is not.
B. App details
1. Promotional video
A promotional video isn’t mandatory, but we strongly recommend including one to help show merchants more about your app. The promotional video should be created to promote the core features and functionality of your app and how it interacts with Shopify. Merchants want an honest picture of 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 promotional video:
- The video should be no longer than 2-3 minutes.
- Don’t include long screencasts of someone using the application. Up to 25% of the video can use screencasts for demoing features, but the video should be promotional, not instructional.
- Be mindful of any third-party logos or elements that you include in the promotional video to avoid potential trademark issues.
2. Key benefits
This section lets you highlight three key benefits that your app offers to merchants. You can include an image for each benefit and a brief description about the problem that each benefit solves.
Make sure to use this space to speak to the merchant's needs, not the specifics of how a particular feature works. You can talk about specific features in the Detailed description section.
Here are some examples of how you can write an app feature as a benefit that will appeal to merchants:
|App feature||Merchant benefit|
|Reports that use push technology so they're never out of date||
Data when you need it
Get your real-time sales data all in one view
|30 different chart options, including bar charts, line graphs, scatterplots||
Spot trends easily with graphically displayed data
|Sign up for alerts to your phone||
Stay in the loop
Get notified about any significant spikes or dips
|WYSIWYG editor for creating reusable email templates||
Spend less time writing emails
Quickly and easily create reusable email templates
Follow these guidelines when you're preparing images for your app's key benefits:
- Each image's dimensions should be 1600px by 1200px (4:3).
- Don't use text in your images.
- Don’t use screenshots.
- Don’t include the Shopify logo in your images.
- Keep the corners square. The image's corners are automatically rounded when it's displayed.
- Avoid using a white background. Instead, use bold, recognizable colors or patterns.
- Make it simple and focus on one or two elements. Visual clutter can make an image less effective.
- Be consistent. The icon and key benefits images for your app should look like they belong to the same brand and product.
Here's an example of how the key benefits for your app will be presented on a Shopify App Store listing:
3. Staff picks section
The Shopify Apps QA team regularly selects outstanding apps to be featured in the Staff picks section of the Shopify App Store home page. If you want your app to be considered for the Staff picks section, then you need to provide an image that can be used to showcase your app.
Follow these guidelines when you're preparing an image for the Staff picks section:
- The banner image's dimensions should be 1600px by 900px.
- Don’t include any text in the banner except for your app name.
- Keep the corners square. The banner's corners are automatically rounded when it's displayed.
- Leave a margin of 100px around the outside edges of the image. Keep the icon and app name inside the safe zone, as shown in the example images below.
- Avoid using a white background. Instead, use bold, recognizable colors, patterns, or photography.
- Be consistent. The icon, benefits, and Staff picks banner images for your app should all look like they belong to the same brand and product.
- Don’t use screenshots of your application. Screenshots are too small to see at the size that the banner appears on the Shopify App Store homepage.
It's a good idea to use the template provided to create your Staff picks banner image. This template outlines a safe zone for placing your app name and icon. Before you generate your final image, make sure that you remove the embedded assistance elements, such as the help text and the dotted line highlighting the safe zone.
The following example images show the correct and incorrect placement of these elements relative to the safe zone.
Incorrect placement of app icon and name:
Correct placement of app icon and name:
In the Screenshots section, you must provide screenshots to show what your user interface looks like in action. Add annotations or highlighting to draw attention to important elements, such as any links that your app inserts in the Shopify admin.
Follow these guidelines when you're preparing screenshots:
a) General screenshot guidelines
- Provide alt text for all images for accessibility and to improve SEO.
- Don’t use a merchant's personal information without consent in the images. This includes information like store names, phone numbers, and
b) Desktop screenshot guidelines
- Each screenshot's dimensions should be 1600px by 900px (16:9) for desktop, and 900px by 1600px (9:16) for mobile.
- Include between 3-6 screenshots of your app on desktop.
- Include at least one screenshot of your app's user interface.
- Provide alt text for all images for accessibility and to improve SEO.
- Don’t include desktop backgrounds and browser windows in your screenshots. Crop them so your images aren't cluttered and don't distract merchants from your app.
- If your app is embedded, then don't include Shopify admin header content in your screenshots, such as the store name, the search bar, or any user information. You can include the left-hand navigation.
c) Mobile screenshot guidelines
- Each screenshot's dimensions should be 900px by 1600px (9:16).
- If your app is mobile responsive on the storefront, then include screenshots that show your app's mobile functionality. This helps merchants visualize how your app will look to a customer on their storefront.
- Your mobile screenshots should not be duplicates of your desktop screenshots. This means they must display the responsiveness of your user interface when viewed on a mobile device.
d) Point of sale screenshot guidelines
- Each screenshot's dimensions should be 2048px by 1536px (4:3).
- If your app is for Shopify Point of Sale or has features that work with it, then you must include a screenshot showing this. This helps merchants specifically looking for point of sale apps understand that yours integrates with it.
5. Detailed description
The Detailed description field gives you 2800 characters to tell merchants all about your app. This field supports a limited set of Markdown formatting options. Markdown is simpler to use and less error-prone than HTML because it requires fewer tags.
The following table lists supported formatting options and the corresponding markdown notation to use:
||# This is a title|
|Ordered (numbered) list item||
1. Ordered list item 1
2. Ordered list item 2
|Unordered (bulleted) list item||
* Unordered list item 1
* Unordered list item 2
You can toggle between the Edit and Preview tabs to see how your description will be displayed in the app listing.
Follow these guidelines when writing your detailed description:
- Explain each of your app's key features in detail. Merchants want to know what your app is capable of doing for their store.
- Don’t use special characters or emojis in your description.
- Don’t include testimonials in the detailed description.
- Don’t use personal merchant information without consent from the merchant.
- Don't include links and URLs in the detailed description. The submission form lets you provide links to your website's homepage, your FAQ page, and your pricing information, where you can host whatever additional information.
- Don’t include support information such as emails and phone numbers in your detailed description. Support information should be included in section D of the submission form.
- Don’t include data or statistics in your detailed description since Shopify can't confirm this data. Feel free to share this information on your website and landing pages.
- Don't mention Shopify competitors except in specific cases (Example: If your app is mentioning how it migrates data from other platforms to Shopify).
6. Demo URL
Provide a link to a demo store that showcases your app so merchants can see a live demonstration of how the app works. If your app requires a more in-depth walkthrough, then you can instead link to a demo video that shows the app in action. This lets the merchant get a sense of how your app can benefit them.
The 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:
- other shopping carts, unless you provide synchronization or cross-platform compatibility
- other apps in the Shopify App Store, unless your app directly integrates with them
The pricing section lets you clarify app pricing information for merchants.
1. Pricing details
Select your app's primary billing method in the Pricing details section. 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.|
Set up an app subscription plan with recurring charges
To describe how merchants will be charged for using your app:
Enter the length of the free trial period, 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, make sure that it's enough time (at least 14 days) for the merchant to try your app.
Enter the details of your recurring plans. For each plan, specify whether it is free, billed monthly, or billed yearly:
- If your app charges the merchant monthly, then select Monthly charge and enter the amount that the merchant will be charged every 30-day billing cycle.
- 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.
- The app listing lets you describe up to four pricing plans for your app. If you offer more than four plans, then you can provide a URL for an external pricing page that describes the additional plans. You can also let merchants know that you offer additional plans by selecting This plan has additional charges for one of the plans (typically the plan with the highest price) and then entering a note in the Description of additional charges field. For example, the note might say "Additional plans available. See our pricing page for details."
Plans will be displayed from lowest price to highest price in your app listing, regardless of the order in which you specify the plans.
Apps with only a free plan
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 cannot 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.
Apps with free and paid plans
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.
Charges outside the Shopify Billing API
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 the app's pricing in detail.|
|2.||A link to a page that describes any charges that are billed outside of Shopify's Billing API.|
|3.||The name of each pricing plan.|
|4.||A free monthly plan.|
|5.||The paid monthly plan price.|
|6.||The discounted yearly price for a monthly plan.|
|7.||A description of any additional charges for this plan.|
|8.||A list of features for this plan.|
D. Contact information
Contact information is an important part of your app listing. The information 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.
1. Review notification email
This email is used to notify you when a merchant has left a review on your app. The notification email includes the star rating the merchant left, the comment they left in their review, and the name of the merchant's store.
2. App submission contact email
This is the email that the Shopify Apps QA team uses 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.
3. Sales and support
Support for other languages (Required)
If you've added a localized listing to your app listing, then you need to show if you offer phone or email support in the language that's associated with it. You aren't required to offer support in the language of the localized listing, but you must include information in your listing about whether that support is available.
This is the email that merchants will use to contact you if they have support questions.
Website URL (Optional)
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.
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. A Shopify Apps QA team member will call this phone number during your app review to make sure it can be reached. If the number can't be reached, then you'll be asked to remove or update the phone number.
FAQ URL (Optional)
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.
You can track your app listing traffic by entering a Google Analytics 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.
F. Merchant install requirements
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.
1. Sales channel requirements
If your app embeds features in a particular sales channel, then you only want merchants who use that sales channel 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 it changes the merchant's online store.
If your app embeds features in a merchant's online store, then select Merchant must have online store. If your app embeds features in the Shopify POS app, then select Merchant must have Shopify Point of Sale.
2. Geography requirements
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:
- have a business address in a specific country or countries
- ship to a specific country or countries
- accept a specific currency or currencies.
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.
What if a merchant changes their store settings after installation?
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.
G. Testing instructions
In this section, you can provide the Shopify Apps QA team with instructions on how to test your app during your app review.
1. App testing instructions
Including instructions on how your app should be used lets the Shopify Apps QA team give you valuable feedback if they encounter issues while testing. If you have an app that offers a lot of functionality, then you should consider including a link to a video walkthrough of your app. This helps the Apps QA team understand how to use your app.
If your app connects to other services, then you must include test accounts. For example, if your app requires account access to a marketplace, then you must include credentials for a test account on that marketplace. If testing your app requires a test account and you don't provide one, then your app submission will be rejected.
When a merchant clicks Add App from your app’s listing, your app must immediately authenticate using OAuth before any other steps occur, even if the merchant has previously installed and then uninstalled your app.
A merchant must be able to authenticate and use your app on multiple stores, even if they share the same email address.
After authentication is complete, merchants must be redirected to your app's user interface to start the setup and onboarding process.
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 handshake page, where the merchant can either grant or decline them.
- Your app should request only the permissions that are necessary for it to function.
C. Sign-up forms
If it's necessary for a merchant to sign up for an account before they can use your app, then there must be a clear way for them to sign up for it during the installation process.
Your app must use the API to populate any sign-up forms with available information from the merchant's store.
D. Merchant onboarding and workflows
Your app must include in-app instructions or set-up wizards that teach merchants how to use it properly. These instructions must be written specifically for Shopify merchants, even if your app also connects to other platforms.
Your app must never request that a merchant generate and provide a private API key. The Shopify App Store lists only public applications.
Your app must provide a single, consistent view throughout the onboarding and setup flow. It shouldn't use pop ups for authentication or billing.
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.
A. User interface
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:
Your app must have a user interface, including buttons, controls, setup or onboarding instructions, and features for merchants to interact with.
Your app must be built with mobile-responsive assets and best practices.
Shopify has an API-based billing system that supports 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 their payments.
All charges associated with your app must go through the Billing API. You aren't permitted to use other payment methods or systems, unless you've been notified otherwise by Shopify. Contact us if you have any questions or concerns.
If your app has multiple pricing plans, then merchants must be able to upgrade and downgrade their plan without having to delete the app or contact support.
Enterprise-level pricing plans must be referenced in the Description of additional charges section of the pricing section of the app's listing.
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 a stable, finished product when you submit it to the Shopify App Store. It shouldn't be in beta or an otherwise unfinished state. If your app is broken or has bugs, then it can discourage merchants from using it, and in some cases it might even interfere with their businesses.
Your app app should load quickly and run smoothly. Make sure that you optimize your app to have a fast start up time (400ms or faster) and fast load times.
Your app must store salted password hashes instead of actual passwords, as described on OWASP.
Your app must be served over HTTPS using a valid SSL certificate.
Your app must not process payments or orders outside of Shopify's checkout.
Your app must not alter or modify Shopify’s checkout.
A. Data and user privacy
If your app is used by merchants based in Europe, or merchants with buyers based in Europe, then it's your responsibility to make sure that your app is GDPR compliant.
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 (as per the data rights of individuals).
If your app runs marketing or advertising campaigns that require personal information, then it must have a system for allowing users to provide data consent for marketing promotions.
If your app requests or manages user data, then it must subscribe to the GDPR webhooks so that you can receive any data deletion requests that are issued by merchants.
Your supporting documentation must be hosted either in the app's UI or on websites that are hosted by the app. Documentation must not be hosted on cloud-based services.
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, see 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.
Specific requirements for certain app configurations
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 be more than one type of configuration. For example, an app could be both a third-party integration and a dropshipping app.
A. Platform integrations
Follow these requirements if you're building an app that connects your own service or platform to a merchant's store.
You must make sure that you're building a full integration and not an app that just passes data to or from the service in a single direction.
The merchant must not be required to use API keys or token based credentials to connect the app. The app must create a connection to the merchant's store so that the merchant doesn't have to.
If your app requires a manual approval process for account creation, then it must have a status update on the process within 48-72 hours for the merchant. During this approval timeline, you must provide access to the user interface prior to the approval process along with information on how your app functions, within the app UI.
If your app connects to an external service, then there must be a clear establishment or validation of a login and connection from the app to the merchant's store. Merchants should not be asked to login multiple times.
B. Platform connectors
Follow these requirements if you're building an app that connects a service or platform that you do not own to a merchant's store.
Your app must provide necessary documentation in its user interface for the fourth-party service or platform it connects to.
Your app must provide instructions on how and where to locate and generate an API key or connecting credentials (if required).
Your app must provide installation and account creation instructions.
Your app must provide information on the limitations, functionality, and requirements of the service or platform it connects to.
If your app has little control over the service or platform it connects to, then your app must offer additional functionality beyond connection, such as a dashboard that the merchant can use.
A. Online store
If your app interacts with a merchant's online store, then this process must be as automated as possible. This means using the ScriptTag resource or app proxies whenever possible so that merchants don't have to add or remove code from their theme. If the app must modify a merchant's theme then you can do so by using the Asset resource. If the app modifies a merchant's theme, make sure to also include manual instructions within the app's user interface. This makes the installation and uninstallation process faster, simpler, and ensures a much better merchant experience.
If your app directly impacts a merchant's online storefront, then your app must include an activation toggle that merchants can use to show or hide the app's functionality on their storefront. This toggle must be placed in a prominent section in the app's user interface. The modal must be deactivated by default, so that merchants have the option to make changes before they display the app's functionality.
Your app shouldn't use storefront proxies unless they're necessary to the overall functionality of the app.
If your app modifies a merchant's storefront and displays visual content (such as a widget that appears on the merchant's storefront), then the content must be mobile responsive.
A. Embedding into the Shopify admin
If your app uses embedded app methods, then it must do so consistently. This means that it must provide a consistent embedded user interface experience that begins after authentication.
If your app uses admin links, then each link must be complete, functional, and relevant to its location in the Shopify admin.
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.
B. Embedding into POS
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
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.
In addition to the standard onboarding instructions about how your app works, you must also provide the merchant with all necessary information about the fulfillment service and its products, such as shipping costs and product costs.
A. Mobile app builders
When reviewing your app, the Shopify Apps QA team tests both the mobile app builder and the apps it makes to verify that all requirements are met.
The app builder must use the Embedded App SDK, since sales channel apps are designed to embed inside the Shopify admin.
The app builder must use the Shopify web checkout to process payments. No other payment methods are permitted.
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 iOS App Store or the Google Play store.
The app builder must include information about the app marketplace submission process for either the iOS App Store or the Google Play store to inform the merchant of wait times and app requirements.
The app builder must not ask the merchant to provide private API credentials. Instead, you should use the StorefrontAccessToken resource to provision a storefront access token for each store.
Apps made by the app builder must not make any requests to the authenticated Shopify Admin API. The app's secret key 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.
The following diagram shows the lifecycle of a sales channel from the merchant's perspective, including installation, onboarding, and functionality. It indicates some unique characteristics of sales channel apps.
- Merchant clicks to install the sales channel app.
- Merchant agrees to sales channel app permissions as part of OAuth.
- App redirects to eligibility requirements and terms of service (TOS) page within Shopify admin. Eligibility requirements are communicated using feedback messages.
- Merchant is prompted to authenticate to their channel account using the account connection component. If they do not already have an account, then they are prompted to sign up. Authentication takes place in a pop-up provided by the app's UI and occurs outside of Shopify.
- If there are additional steps to complete or an approval period, then this information is communicated using feedback messages.
- Once the merchant is approved, the approved state is communicated to the merchant using a feedback message.
- The app prompts the merchant to agree to any commissions or other fees using the Billing API.
- Merchant publishes products to the installed channel. Sales channel app sends feedback to the merchant for any product publishing errors.
- The Checkout API enables buyers to purchase products on the channel; orders are created in the Shopify admin.
A. Installation and onboarding
The sales channel app must use the Embedded App SDK.
Eligibility issues must be communicated using a red banner feedback message.
After the merchant completes the install and eligibility steps for your app, they must be redirected to the account section with the account connection component.
Authentication (sign-up or sign-in) for 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 there is an approval process, 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 must be communicated to merchants by using a green or red banner component.
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 must let merchants disconnect their account.
The 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 publishing section must report any products with errors that prevent them from being published on the sales channel.
The channel must use the ProductListing resource to retrieve products set for publication by the merchant.
The app must perform marketplace testing to verify that products are properly set up for publishing.
Sales channel apps must use the Checkout API to enable product purchasing and order creation for the channel.
If third-party payment processing is enabled, then you must perform payments testing.
E. Commission section
The commission section must state the commission rate.
The commission section must state how and when merchants are charged.
F. Terms and conditions section
- The channel must include a Terms and conditions section. Any links in that section must open in a new window.
G. Help footer
The 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.
H. Navigation icon
The 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 whitelisted tags:
The icon's SVG file can contain only whitelisted attributes:
- Testing your app before submitting - Learn our recommended best practices for testing your app before submitting it for review.