How to create a Marketplace ready Magento 2 extension

Below are the few things I found which can help to reduce rejection and pass EQP process.

Module Checks:

  1. Keep Your vendor name same as Vendor Name of your Marketplace account
  2. Create your extension with developer mode enabled
  3. Must have composer.json in root folder of extension Eg. app/code/Vendor/Module/composer.json" with correct configurations and dependencies
  4. Must have registration.php in root folder of extension Eg. app/code/Vendor/Module/registration.php"

Code Checks:

  1. Do not use $_REQUEST, $_POST, $_GET, $_FILE directly

  2. Never end class file with ending php tag ?>

  3. Do not use die() or exit() in your code.

  4. Do not use // @codingStandardsIgnoreLine or // @codingStandardsIgnoreFile in code

  5. Remove unnecessary code and comments

  6. Use spaces for indentation

  7. Check for code duplication Refer Use ClassPreferences and/or Magento 2's plugin structure to avoid duplicating code.

  8. Add PHP DockBlock for your classes

  9. Use proper DockBlock for each of your functions with parameters and return types.

  10. It is better to use Service Contract approach for your module development.

Testing and Debugging:

  1. Check extension functionality with Magento compilation php bin/magento setup:di:compile
  2. Check compatibility with production mode enabled
  3. Test with cache enabled and disabled
  4. Validate your package e.g. php validate_m2_package.php my-theme.zip my-module.zip
  5. Check coding standard with phpcs E.g. $ vendor/bin/phpcs /path/to/your/extension --standard=MEQP2 --severity=10
  6. Do Complete Testing of your code. Execute command bin/magento dev:tests:run More Reference

Content and Description Checks:

  1. Do not use Magento logo in your documents or images
  2. Do not use "Product Box Image" as extension main image
  3. Add proper description for your extension functionality
  4. Correct grammatical errors (punctuation, capitalization, word usage, etc). Remember to use "a","an", and "the" correctly. Make sure words are plural when necessary. Be sure words that should be past tense are past tense.
  5. Check and confirm you do not have any broken link in your document or description content.
  6. Do not add links of other extensions/services in description content. Promoting services or other created extensions in Magento Marketplace or Magento Connect is prohibited.

Other:

  1. Submit an e-copy of your Tax Forms to [email protected] (Required only if you are selling paid extensions)

Keeping the practice of following above standards will surely improve extension quality.


There are many steps to approve our extension to the marketplace. I wait approx 1 month to approve my extension to marketplace and today finally it's approved.

For every failure of review from marketplace they provide specific reason for failure review.

So here is the list of failure which I face at the time of review

1) If you do not submit code within 1 month of the Approved from Business Review date we will assume the product has been abandoned and thus will reject it after 1 month.

2) For policy or quality reasons, after evaluating your submission, we have decided not continue our review of FAQ. Here is a summary of the reasons for our decision:

Tech: Code quality issues:

Installation: This extension did not pass the Marketplace EQP installation test. Extensions are required to install successfully when compiled and run in production mode. You can find instructions on command line configuration, setting the Magento mode to "Production", and compiling your code in the developer guide available at: http://devdocs.magento.com/guides/v2.1/config-guide/cli/config-cli.html Once the code supports compilation and execution in production mode, please re-upload your package.

3) Please note that due to the number of extensions in our queue (1000+) we are experiencing some delays in our Extension Quality Program. We estimate that it could take up to 90 days to review your extension. In order to ensure that your extensions is approved quickly please consider the following:

Verify that your extension code and marketing content is up to Marketplace standards with the following tools:

Marketing Content Guidelines

Package validation EQP Tool verification Join our partner program (partner extensions will receive priority) Respond quickly to any requests for changes

4) We want to let you know that your submission has been rejected from review. In order for us to be able to approve your submission, please resubmit with the following corrections per our guidelines:

Company Logo: Add a Company Logo to your profile (company or personal). It must look professional; however, it does not necessarily need to be a picture of you. It should be 255 x 255 px, jpg, gif or png.

Long Description: Each extension should have an opening paragraph that describes the product (give a summary) not just a list of

features. This description should describe the product features, as well as, how the product functions, so that the consumer will have all basic questions answered about the product and/or related service.

Company Bio: Add a short bio to your profile to help merchants better understand you or your company.

Company Name: Update your Company Name to represent you or your company. The Company Name cannot infer that Magento is affiliated with

your company or extension.

List Features: Please list the features vertically with bullet points. Use the WYSIWYG editor. Highlight the features and click the

bullet point icon. This makes the description much easier to follow

Additional Comments:
*********TRADEMARK VIOLATION: Remove the Magento Logo from the extension icon and screenshot.******

*********TRADEMARK VIOLATION: The current Company URL must be changed.******

5) We want to let you know that your submission has been rejected from review. In order for us to be able to approve your submission, please resubmit with the following corrections per our guidelines:

Trademark Violations: You may not use the Magento name in your extension, your extension icon, your domain name, your website username or screen name, your email address, your email’s domain, or in your own branding that it may create any inference to Magento's affiliation with your company or extension.

Additional Comments: *******Remove "Magento 2" from the extension icon *****

*******Remove "Magento 2" from each mention of the extension title in the short and long descriptions.*****

*******use only the default font in the long description.*****

*******Add more detail to the opening paragraph in the long description (before the list of features) that describes the product. Make it clear what the extension can do for the customer, how the extension works, and give detailed features for the extension. You may want to give examples of cases when the extension might be used. Leave the merchant with a solid understanding of how their site will appear and function if they purchase your extension. *******

6) We have great news! Your submission, FAQ, has completed our technical and marketing review process.

At last many review processes they approve my extension and it's live now on marketplace.

https://marketplace.magento.com/prince-module-faq.html


Addition to your points, need to do the functional testing of the extension with various Community and Enterprise Magento versions also. Since, in EQP, the manual functional testing of the extension also added as a step(QA Review) and the extensions are rejected in this phase also.