Requirements for public apps on Shopify
The following requirements are used at Shopify to review all public apps. These requirements are the same for both listed and unlisted 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.
General requirements for all apps
The requirements in this section apply to both listed and unlisted public apps. 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.
Prohibited app types
The following app types aren't permitted on 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 any other type of app 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 2.3 of our Partner Program Agreement as well as Section 7 of our Acceptable Use Policy.
- Apps that process payments outside of Shopify's checkout - Shopify can't guarantee the safety or security of an order that has been placed through an offsite or third party checkout.
- 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.
- Apps that offer capital loans - These types of services are difficult to effectively monitor on an ongoing basis in a manner that ensures merchants are protected from unsound lending practices. In order to protect merchants from unintended risk, apps that lend capital to merchants are not able to be distributed through the Shopify App Store. Apps that directly or indirectly promote capital loans are also prohibited.
- Apps with restricted beta API scopes enabled - If your app has been granted access to beta testing API scopes, then you can't submit your app to the Shopify App Store. For announcements about when betas become publicly available, visit the Shopify Community forums Shopify Community forums.
- Apps that primarily function to share or provide merchant data to third parties - Apps that primarily function to share or provide merchant data to one or more third parties must have prior written consent from Shopify and must comply with our API Terms. Otherwise, they aren't eligible to be listed on the Shopify App Store. Each third party that receives merchant data using the app must agree to Shopify’s API Terms.
- Apps that connect merchants to external developers - If your app connects merchants to external agencies and freelancers, then your app isn't eligible to be distributed on the Shopify App Store.
- Embedded apps that don't use session tokens - Embedded apps submitting to the Shopify App Store must use session tokens to authenticate. Session tokens offer a better merchant experience and avoid service disruptions caused by third party cookies.
- Apps that require a browser extension to function - Apps that require a browser extension to function aren't permitted on the Shopify App Store. Apps can use a browser extension as an optional feature, but must fully function without it.
Unlisted app types
The following app type must remain unlisted on the Shopify App Store:
- Apps that work for merchants only on the Shopify Plus plans - Apps that are listed in the Shopify App Store must work for all merchants, regardless of what plan they have. Apps that work for only a subset of merchants can be approved, but can't be listed.
- Apps that are designed for and marketed to developers - Apps that contain core functionality intended for other developers can be approved, but can't be listed.
- 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.
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.
- Merchants must be redirected to your app's user interface (UI) after they accept permissions access on the OAuth handshake page.
- Your app should request only the permissions that are necessary for it to function.
- You should only revoke API permissions to your app using the delete button located on the app setup page.
C. Setup and merchant workflows
- Your app must include in-app setup instructions that explain to 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.
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.
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.
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.
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.
Your app must not have billing cancelation errors. If a merchant initially declines a charge, then the billing modal must prompt the merchant to confirm the cancelation again. If a merchant declines a plan selection, then previously accepted plans must not be canceled.
C. State of the app
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.
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.
A. Performance score
- To be published in the Shopify App Store, your app must not reduce Lighthouse performance scores by more than 10%. Submissions are evaluated based on this criteria, using the testing methodology outlined in the section below.
- The performance ratio score that you’ve calculated should be included in section G. Testing Instructions in your submission form. Please provide a screenshot of your results. This information must be provided to our App Review Specialist prior to the review process.
B. Testing methodology
The tool used by Shopify to test app performance is Lighthouse. Lighthouse is an open-source, automated tool for improving the quality of web pages. It's available in the Developer Tools panel of Google Chrome, so you can test your app directly in the browser.
To test your application in Google Chrome:
- Start with a clean install of a supported Shopify theme, such as Express, without your app or any other apps installed.
- From the home page of your test store, open Developer Tools in Chrome (View > Developer > Developer Tools).
- In Developer Tools, click the Lighthouse tab.
Select Mobile from the device list, then click Generate Report.
Write down the performance score out of 100. This is your starting score.
Install your app on your test store and verify that it loads correctly.
Go to the Lighthouse tab, and click the Generate Report button.
Write down the new performance score. This is your ending score.
Divide your ending score by your starting score. The result is your app's performance ratio.
For example, if your starting score was 84, and your ending score was 72, then you would calculate 72 / 84 to see that your app’s performance ratio is 0.85.
Include your app's ratio in section G. Testing instructions of the app listing form when you submit your app for review.
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. All approved public apps have a listing on the Shopify App Store, regardless of whether you choose to make it listed or unlisted.
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.
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
- 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.
Translate your app listing
If your app is available in multiple languages, then you can also make your app listing available in those languages to help your app reach a wider audience. You can add and delete translated app listings for any of the supported languages on the Shopify App Store.
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.
Add a translated listing
- Log in to your Partner Dashboard.
- Click Apps.
- Click the name of your app.
- Click App listings.
- Click Add translated listing.
- Return to the App listings page and click Update app.
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.
Delete a translated listing
- Log in to your Partner Dashboard.
- Click Apps.
- Click the name of your app.
- Click App listings.
- Click the listing you want to delete.
- In the More actions drop-down list, 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. For example, your app name can't be "App name by Shopify Partner account name". By default, we provide a "by Shopify Partner account name" suffix to your 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.
3. 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 we'll 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.
4. App listing content
Your app listing content should describe your app's features at a high level. When creating your app listing content, follow these guidelines:
- Remove references to your other apps and services from your app listing content.
- Don’t list your competitors in your app listing content.
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. Featured app banner (optional)
We regularly feature outstanding apps on the Shopify App Store homepage and on our social media channels. If you want us to consider featuring your app, then you need to provide an image that can be used to showcase your app.
Follow these guidelines when you're preparing your featured app image:
- 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 featured app 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 featured app 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.
You can use a development store as your demo store. When merchants visit your demo store from the Shopify App Store, the development store password page does not appear.
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 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.
3. Sales and support
Support for other languages (Required)
If you've added a translated 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 translated 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. 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.
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 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.
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 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.
1. App testing instructions
Including instructions on how your app should be used lets us 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 us 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.
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.
The app must be served over HTTPS using a valid TLS certificate.
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.
You app must subscribe to mandatory GDPR 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.
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.
If your app has an ECCN number other than
EAR99, then you must enter its ECCN number in the app setup.
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. Online store
To support vintage themes, you can use the
AssetREST Admin API resource in addition to theme app extensions to inject the app snippets into the theme's Liquid files. You must also include detailed instructions for the merchant on how to add and remove the code.
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.
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 merchant 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.
App blocks must inherit styling properties from the theme, such as typography and colors.
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.
If your app includes app blocks or app embed blocks, then include detailed setup instructions within the user interface of your app. Include the following content:
- An overview of the app blocks and app embed blocks that are in your app, and their purpose
- How to configure functional settings for the app blocks and app embed blocks
- Which templates app blocks and app embed blocks can be added to
- How to add, remove, and reorder app blocks
- How to activate and deactivate app embed blocks
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.
Your app must add the cost of goods to the Cost field on the product page of the merchant's Shopify admin.
A. Mobile app builders
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 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 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.
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.
For a diagram that shows the lifecycle of a sales channel from the merchant's perspective, refer to Get started building a sales channel.
The key features of a sales channel app are as follows:
- Onboarding and account connection: Get permission from merchants to install your app, and then connect them to your channel.
- Product publishing: Import products into your channel, manage product errors, and stay in sync with merchants' product catalogs.
- Payments and order management: Generate orders for merchants by accepting payments from buyers on your channel.
A. Onboarding and account connection
Merchants must install sales channel apps using OAuth and sales channels must embed in the Shopify admin using Shopify App Bridge version 2.0.
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. Refer to Build a sales channel onboarding and account connection flow for a detailed example.
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.
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.
B. Product publishing
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.
The sales channel must use the ProductListing resource to retrieve products set for publication by the merchant.
C. Payments and order management
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.
The main sales channel types are as follows:
1. Build a sales channel with the Checkout API
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 before publishing the sales channel.
Leverage the Billing API to implement a mechanism for charging merchants.
2. Build a sales channel using cart permalinks
Take customers to Shopify's checkout with items pre-loaded in the cart.
D. Navigation icon
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 permitted tags:
The icon's SVG file can contain only permitted attributes:
A. Storefront requirements
- The subscription app's customer flow must properly display on both desktop and mobile devices.
- The subscription app must be compatible with all supported browser versions specified for the Shopify Theme Store.
- The subscription app must support multi-currency so that pricing and discounts shown to customers reflect the correct currency and price rounding rules.
- The subscription app must automate theme modifications.
- The subscription app must use the correct API scopes to reflect functionality. For more information, refer to the Shopify subscriptions overview and SubscriptionContract reference.
- You must provide screenshots or screencasts of your subscription app functioning on each of the supported browsers.
- The subscription app must clearly show a merchant's customers the price of subscription. We recommend that this is done through a standalone widget, as described in this tutorial.
- The subscription app must clearly show a merchant's customers the price per delivery and the unit price for prepaid items.
- The subscription app must display the selling plan name in the cart page, if the store's codebase is not already doing so. Note: Shopfiy's Theme Store requires themes to display the selling plan name in the cart. Be sure to check whether the
selling_plan.nameis already present in the theme's
cart.liquidfile before attempting to insert it.
- The subscription app 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.
- The customer portal must give each customer a single login to access subscriptions and their order history.
- The customer portal must display to each customer all of their purchased subscriptions. Details must include the associated products, delivery frequency, price, and order schedule.
- The customer portal must include an option for a merchant's customers to cancel their subscription. The subscription app must allow the merchant to clearly communicate conditions of purchase on their storefront's product page and customer portal.
- The customer portal must provide a merchant's customers with the option to modify the payment method associated with their subscriptions.
B. Shopify admin and in-app
- Merchants need to be able to create and manage products they want as subscriptions from the Products page in the Shopify admin.
Extensions and subscription management
- The subscription app must use the product subscription app extension on the product page. Changes made to subscription plans from the Shopify admin must be reflected in the app.
- The subscription app must let merchants remove products from a plan in the Shopify admin using the product subscription app extension.
- The subscription app must include a direct link to orders and customers in the Shopify admin from subscriptions.
- Links to the subscription app from the orders and customers pages in the Shopify admin must go to the correct subscription resource.
- The donation distribution app must use the Billing API or a PCI-compliant third-party gateway when collecting donation funds from merchants through the app’s user interface.
- If the donation distribution app allows merchants to collect charity donation funds from their customers, then you must provide proof of charitable status in the app's user interface.
- The donation distribution app must provide proof to a merchant that the funds collected from a merchant's customers are donated to a registered charitable organization. You can't use a tax receipt as proof.
- The donation distribution app must collect funds from a merchant's customers only through the Shopify checkout.
- Donation products created by the app must be hidden by default from the merchant's online storefront.
A. Requirements for third-party payments apps
Third-party payments apps must meet the minimum product requirements in addition to the following requirements:
- Minimum support requirements: Payments apps must at a minimum be operational and available on a twenty-four-hour, seven days a week (24x7) basis at least 99.95% of the time in any measurement period. In the event of outages or issues, the app must respond within 2 hours. Payments apps must provide servicing support to all merchants.
- API versioning: You need to implement a supported version of Shopify’s Payment Processing APIs. You can configure the API version that their payments app will use for receiving webhooks, but you need to use the same API version for sending GraphQL requests. API versions will be updated in accordance with Shopify’s general API versioning timelines.
- Review and approvals: Any updates or changes to an existing payments app, including the addition of new product features or new payment methods, must be submitted for review and approval.
- Legal and regulatory compliance: You need to comply with any terms, guidelines, or approval processes required pursuant to any card network rules, and applicable laws or regulations.
B. Requirements for testing
When you submit your payments app to the Shopify App Store for review, you need to fill out Part G. Testing instructions on the app listing with the following testing details:
- A test store with the payments app installed
- The required credentials to enable installing the payments app for testing (for example, activation codes and login credentials)
- Instructions on how to process a test payment and refund
- A description of specific testing scenarios including installments / deferred payments and 3D Secure authentication (if applicable)
- A screencast of how the payments app / payment flow will work on each of the supported browsers
C. Prohibited actions
Payments apps aren't permitted to do any of the following:
- Use any Shopify APIs (including the Checkout API, Admin API, or Subscription APIs) other than the Payments Apps APIs.
- Store payment credentials for unapproved purposes. You can only use credentials for the original transaction or services approved by Shopify.
- Redistribute, share, transfer, sell unauthorized access to Shopify’s Payments Platform without Shopify’s approval. Access to Shopify’s payments ecosystem is strictly provided to the approved payments partner only.
- Create fake or fraudulent merchants, orders, or sales.
- Process payment methods for which Shopify already has a direct relationship. This includes, but is not limited to the following: Apple Pay, Google Pay, Shop Pay, PayPal, and Alipay.
D. Naming restrictions
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.
Instead you should use the app listing for marketing messages. Merchants can access app listings when they add a payment method.
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.
- Testing your app before submitting - Learn our recommended best practices for testing your app before submitting it for review.