E-Commerce Marketplace Publishing Guide
Overview
Publishing an e-commerce plugin to a platform marketplace transforms a private project into a distributed product. Each marketplace has its own submission process, review criteria, and ongoing maintenance requirements. This guide covers the publishing lifecycle from pre-submission preparation through review approval and post-launch maintenance, with platform-specific details in the reference files.
The publishing lifecycle follows a consistent pattern across platforms:
- Develop -- Build the plugin following platform coding standards.
- Prepare -- Audit code quality, security, documentation, and listing assets.
- Submit -- Upload the package and listing to the marketplace review queue.
- Review -- The platform team reviews code, functionality, and security.
- Revise -- Address reviewer feedback and resubmit.
- Publish -- The plugin goes live on the marketplace.
- Maintain -- Release updates, respond to reviews, and maintain compatibility.
Pre-Submission Checklist
Before submitting to any marketplace, complete these checks. Skipping these steps is the primary cause of submission rejections.
Code Quality
- Run the platform's official code sniffer or linter (PHPCS with WordPress coding standards, Magento Coding Standard, PrestaShop Validator).
- Eliminate all errors and warnings from the linter output.
- Remove dead code, commented-out blocks, and debug statements (
var_dump, console.log, error_log).
- Ensure all functions and classes are properly namespaced to avoid conflicts with other plugins.
- Prefix all global functions, constants, and database table names with the plugin slug.
- Verify no hardcoded credentials, API keys, or environment-specific paths exist in the codebase.
Security Audit
- Verify all user inputs are sanitized and validated before use.
- Confirm all database queries use parameterized statements or prepared queries.
- Check that CSRF tokens are present and validated on all state-changing forms and endpoints.
- Ensure all output is properly escaped for the rendering context (HTML, JavaScript, URL, CSS).
- Verify file uploads validate type, size, and content.
- Confirm sensitive data (API keys, tokens) is stored encrypted or in environment variables.
- Run a static analysis tool (PHPStan, Psalm, SonarQube) and resolve all critical findings.
Documentation
- Write a complete README with installation instructions, configuration steps, and usage guide.
- Document all hooks, filters, events, and extension points the plugin provides.
- Include screenshots of the admin UI and customer-facing features.
- Provide a changelog covering all versions.
- Add inline code documentation (PHPDoc, JSDoc) for public methods and classes.
- Create a FAQ section addressing common setup issues.
Listing Assets
- Prepare a plugin icon (square format, typically 128x128 and 256x256 pixels).
- Create banner images (marketplace-specific dimensions; WordPress: 772x250 and 1544x500).
- Write a compelling short description (under 150 characters) and long description.
- Prepare up to 5-10 screenshots with captions showing key features.
- Record a demo video if the marketplace supports it (Shopify App Store strongly recommends video).
For detailed per-platform checklists, see references/submission-checklists.md.
Platform Marketplace Comparison
| Platform |
Marketplace |
Review Process |
Revenue Model |
Review Time |
| WordPress/WooCommerce |
WordPress.org Plugin Directory |
Manual code review |
Free (donations optional) |
1-10 business days |
| Shopify |
Shopify App Store |
Automated + manual review |
Revenue share (Shopify takes 0% on first $1M, then percentage) |
5-15 business days |
| Magento |
Adobe Commerce Marketplace |
Technical + marketing review |
Revenue share (Adobe takes percentage) |
5-25 business days |
| PrestaShop |
PrestaShop Addons |
Technical review |
Revenue share (PrestaShop takes percentage) |
3-10 business days |
| BigCommerce |
BigCommerce App Marketplace |
Technical + partner review |
Revenue share or free |
10-20 business days |
| OpenCart |
OpenCart Marketplace |
Basic review |
Revenue share |
1-5 business days |
Key differences:
- WordPress.org is the only major marketplace that requires plugins to be GPL-licensed and free.
- Shopify requires OAuth-based authentication for all apps and enforces strict rate limits.
- Magento Marketplace has the most rigorous technical review, including automated code scanning (MFTF tests, EQP quality checks).
- PrestaShop Addons requires module validation through their online validator tool before submission.
- BigCommerce requires a partnership application before app submission.
Versioning Strategy
Semantic Versioning (SemVer)
Follow Semantic Versioning 2.0.0 for all plugin releases:
MAJOR.MINOR.PATCH
MAJOR -- Incompatible API changes, breaking changes to database schema, dropped platform version support.
MINOR -- New features added in a backward-compatible manner.
PATCH -- Backward-compatible bug fixes, security patches, translation updates.
Examples:
1.0.0 -- Initial release.
1.1.0 -- Added new payment method support (new feature, backward-compatible).
1.1.1 -- Fixed checkout validation bug (bug fix).
2.0.0 -- Dropped support for PHP 7.x, changed settings storage format (breaking change).
Pre-Release Versions
Use pre-release suffixes for testing:
2.0.0-alpha.1 -- Early testing, unstable, feature-incomplete.
2.0.0-beta.1 -- Feature-complete, may have bugs.
2.0.0-rc.1 -- Release candidate, final testing before stable release.
Backward Compatibility
Before releasing a major version with breaking changes:
- Document all breaking changes in the changelog and migration guide.
- Provide a migration path (automatic database migration, settings converter, deprecation warnings in the previous minor version).
- Maintain the previous major version with security patches for at least 6 months after the new major release.
- Announce the end-of-life date for the previous version in advance.
For complete versioning and changelog practices, see references/versioning-and-changelog.md.
Changelog and Release Notes
Changelog Format
Follow the Keep a Changelog format (keepachangelog.com):
## [1.2.0] - 2026-04-25
### Added
- Multi-currency support for EUR, GBP, and JPY.
- Webhook retry dashboard in admin panel.
### Changed
- Improved checkout validation error messages.
- Updated Stripe SDK to v15.0.
### Fixed
- Cart total calculation rounding error with tax-inclusive pricing.
- Shipping rate cache not invalidating on address change.
### Security
- Patched XSS vulnerability in order notes display.
### Deprecated
- Legacy API endpoint `/api/v1/orders`. Use `/api/v2/orders` instead. Will be removed in 2.0.0.
Release Notes Best Practices
- Write release notes for the audience: merchants and store administrators, not developers.
- Lead with the most impactful change (new feature or critical bug fix).
- Highlight security fixes prominently -- merchants need to know when to update urgently.
- Include upgrade instructions if the update requires any manual steps.
- Link to documentation for new features.
- Keep entries concise -- one line per change, with optional detail in a linked document.
Common Rejection Reasons
Understanding why marketplaces reject plugins prevents wasted review cycles. These are the most frequent rejection reasons across all platforms:
1. Security Vulnerabilities
- Unsanitized input -- User input rendered without escaping. Fix: use platform escaping functions on all output.
- Direct database queries without preparation -- SQL concatenation instead of parameterized queries. Fix: use prepared statements or the platform's query builder.
- Missing CSRF protection -- Forms submit without nonce/token validation. Fix: add CSRF tokens to all forms.
- Exposed sensitive data -- API keys in JavaScript, debug information in production. Fix: move credentials server-side, disable debug mode.
2. Coding Standards Violations
- Wrong coding style -- Tabs vs. spaces, brace placement, naming conventions. Fix: run the platform's coding standards checker and fix all violations.
- Missing text domain -- Strings not wrapped in translation functions. Fix: wrap all user-facing strings in
__(), _e() (WordPress), or the platform's i18n function.
- Incorrect file structure -- Files not in the expected directory layout. Fix: follow the platform's documented file structure.
3. Functionality Issues
- Plugin causes errors on activation -- Fatal errors, PHP notices, JavaScript errors. Fix: test on a clean installation of the supported platform versions.
- Conflicts with other plugins -- Using generic function names, enqueueing scripts globally. Fix: namespace everything, enqueue scripts only on plugin pages.
- Missing uninstall cleanup -- Plugin leaves database tables, options, and files after uninstallation. Fix: implement a clean uninstall routine that removes all plugin data.
4. Listing Quality
- Misleading description -- Description claims features not present in the plugin. Fix: accurately describe current functionality.
- Low-quality screenshots -- Blurry, cropped, or missing screenshots. Fix: capture clean screenshots at the required resolution.
- Missing privacy policy -- Plugin collects data but does not disclose it. Fix: add a privacy policy section describing what data is collected, stored, and transmitted.
5. Performance Issues
- Excessive database queries -- Running queries on every page load. Fix: cache results, use lazy loading, query only when needed.
- Large asset files -- Unminified CSS/JS, uncompressed images. Fix: minify and compress all assets.
- No caching -- Recalculating expensive operations on every request. Fix: implement transient/object caching.
6. Compatibility
- Hardcoded paths or URLs -- Plugin breaks on non-standard installations. Fix: use platform functions for paths and URLs.
- PHP version incompatibility -- Using syntax not available in the minimum required PHP version. Fix: test on the minimum supported PHP version.
- Missing dependency checks -- Plugin assumes another plugin or extension is installed without checking. Fix: verify dependencies on activation and display a clear error if missing.
Licensing Considerations
Plugin licensing requirements vary by marketplace. WordPress.org requires GPL-compatible licenses. Other marketplaces allow proprietary licenses. Dual licensing (open-source core with proprietary add-ons) is a common monetization strategy.
For detailed licensing guidance per platform, see references/licensing-guide.md.
Reference Files
- Submission Checklists -- Per-platform submission checklists for WordPress.org, Shopify App Store, Magento Marketplace, PrestaShop Addons, BigCommerce, and OpenCart
- Versioning and Changelog -- SemVer practices, changelog format, migration guides, deprecation policy
- Licensing Guide -- GPL, MIT, proprietary licenses, dual licensing, per-platform requirements
1---2name: ecommerce-marketplace-publishing3description: This skill should be used when the user asks about "publish plugin to marketplace", "submit extension for review", "app store listing", "plugin versioning", "changelog format", "marketplace requirements", "code review checklist", or needs guidance on publishing e-commerce plugins to platform marketplaces.4---56# E-Commerce Marketplace Publishing Guide78## Overview910Publishing an e-commerce plugin to a platform marketplace transforms a private project into a distributed product. Each marketplace has its own submission process, review criteria, and ongoing maintenance requirements. This guide covers the publishing lifecycle from pre-submission preparation through review approval and post-launch maintenance, with platform-specific details in the reference files.1112The publishing lifecycle follows a consistent pattern across platforms:13141. **Develop** -- Build the plugin following platform coding standards.152. **Prepare** -- Audit code quality, security, documentation, and listing assets.163. **Submit** -- Upload the package and listing to the marketplace review queue.174. **Review** -- The platform team reviews code, functionality, and security.185. **Revise** -- Address reviewer feedback and resubmit.196. **Publish** -- The plugin goes live on the marketplace.207. **Maintain** -- Release updates, respond to reviews, and maintain compatibility.2122## Pre-Submission Checklist2324Before submitting to any marketplace, complete these checks. Skipping these steps is the primary cause of submission rejections.2526### Code Quality2728- Run the platform's official code sniffer or linter (PHPCS with WordPress coding standards, Magento Coding Standard, PrestaShop Validator).29- Eliminate all errors and warnings from the linter output.30- Remove dead code, commented-out blocks, and debug statements (`var_dump`, `console.log`, `error_log`).31- Ensure all functions and classes are properly namespaced to avoid conflicts with other plugins.32- Prefix all global functions, constants, and database table names with the plugin slug.33- Verify no hardcoded credentials, API keys, or environment-specific paths exist in the codebase.3435### Security Audit3637- Verify all user inputs are sanitized and validated before use.38- Confirm all database queries use parameterized statements or prepared queries.39- Check that CSRF tokens are present and validated on all state-changing forms and endpoints.40- Ensure all output is properly escaped for the rendering context (HTML, JavaScript, URL, CSS).41- Verify file uploads validate type, size, and content.42- Confirm sensitive data (API keys, tokens) is stored encrypted or in environment variables.43- Run a static analysis tool (PHPStan, Psalm, SonarQube) and resolve all critical findings.4445### Documentation4647- Write a complete README with installation instructions, configuration steps, and usage guide.48- Document all hooks, filters, events, and extension points the plugin provides.49- Include screenshots of the admin UI and customer-facing features.50- Provide a changelog covering all versions.51- Add inline code documentation (PHPDoc, JSDoc) for public methods and classes.52- Create a FAQ section addressing common setup issues.5354### Listing Assets5556- Prepare a plugin icon (square format, typically 128x128 and 256x256 pixels).57- Create banner images (marketplace-specific dimensions; WordPress: 772x250 and 1544x500).58- Write a compelling short description (under 150 characters) and long description.59- Prepare up to 5-10 screenshots with captions showing key features.60- Record a demo video if the marketplace supports it (Shopify App Store strongly recommends video).6162For detailed per-platform checklists, see [references/submission-checklists.md](references/submission-checklists.md).6364## Platform Marketplace Comparison6566| Platform | Marketplace | Review Process | Revenue Model | Review Time |67|----------|-------------|----------------|---------------|-------------|68| WordPress/WooCommerce | WordPress.org Plugin Directory | Manual code review | Free (donations optional) | 1-10 business days |69| Shopify | Shopify App Store | Automated + manual review | Revenue share (Shopify takes 0% on first $1M, then percentage) | 5-15 business days |70| Magento | Adobe Commerce Marketplace | Technical + marketing review | Revenue share (Adobe takes percentage) | 5-25 business days |71| PrestaShop | PrestaShop Addons | Technical review | Revenue share (PrestaShop takes percentage) | 3-10 business days |72| BigCommerce | BigCommerce App Marketplace | Technical + partner review | Revenue share or free | 10-20 business days |73| OpenCart | OpenCart Marketplace | Basic review | Revenue share | 1-5 business days |7475**Key differences:**7677- WordPress.org is the only major marketplace that requires plugins to be GPL-licensed and free.78- Shopify requires OAuth-based authentication for all apps and enforces strict rate limits.79- Magento Marketplace has the most rigorous technical review, including automated code scanning (MFTF tests, EQP quality checks).80- PrestaShop Addons requires module validation through their online validator tool before submission.81- BigCommerce requires a partnership application before app submission.8283## Versioning Strategy8485### Semantic Versioning (SemVer)8687Follow Semantic Versioning 2.0.0 for all plugin releases:8889```90MAJOR.MINOR.PATCH9192MAJOR -- Incompatible API changes, breaking changes to database schema, dropped platform version support.93MINOR -- New features added in a backward-compatible manner.94PATCH -- Backward-compatible bug fixes, security patches, translation updates.95```9697**Examples:**9899- `1.0.0` -- Initial release.100- `1.1.0` -- Added new payment method support (new feature, backward-compatible).101- `1.1.1` -- Fixed checkout validation bug (bug fix).102- `2.0.0` -- Dropped support for PHP 7.x, changed settings storage format (breaking change).103104### Pre-Release Versions105106Use pre-release suffixes for testing:107108- `2.0.0-alpha.1` -- Early testing, unstable, feature-incomplete.109- `2.0.0-beta.1` -- Feature-complete, may have bugs.110- `2.0.0-rc.1` -- Release candidate, final testing before stable release.111112### Backward Compatibility113114Before releasing a major version with breaking changes:115116- Document all breaking changes in the changelog and migration guide.117- Provide a migration path (automatic database migration, settings converter, deprecation warnings in the previous minor version).118- Maintain the previous major version with security patches for at least 6 months after the new major release.119- Announce the end-of-life date for the previous version in advance.120121For complete versioning and changelog practices, see [references/versioning-and-changelog.md](references/versioning-and-changelog.md).122123## Changelog and Release Notes124125### Changelog Format126127Follow the Keep a Changelog format (keepachangelog.com):128129```130## [1.2.0] - 2026-04-25131132### Added133- Multi-currency support for EUR, GBP, and JPY.134- Webhook retry dashboard in admin panel.135136### Changed137- Improved checkout validation error messages.138- Updated Stripe SDK to v15.0.139140### Fixed141- Cart total calculation rounding error with tax-inclusive pricing.142- Shipping rate cache not invalidating on address change.143144### Security145- Patched XSS vulnerability in order notes display.146147### Deprecated148- Legacy API endpoint `/api/v1/orders`. Use `/api/v2/orders` instead. Will be removed in 2.0.0.149```150151### Release Notes Best Practices152153- Write release notes for the audience: merchants and store administrators, not developers.154- Lead with the most impactful change (new feature or critical bug fix).155- Highlight security fixes prominently -- merchants need to know when to update urgently.156- Include upgrade instructions if the update requires any manual steps.157- Link to documentation for new features.158- Keep entries concise -- one line per change, with optional detail in a linked document.159160## Common Rejection Reasons161162Understanding why marketplaces reject plugins prevents wasted review cycles. These are the most frequent rejection reasons across all platforms:163164### 1. Security Vulnerabilities165166- **Unsanitized input** -- User input rendered without escaping. Fix: use platform escaping functions on all output.167- **Direct database queries without preparation** -- SQL concatenation instead of parameterized queries. Fix: use prepared statements or the platform's query builder.168- **Missing CSRF protection** -- Forms submit without nonce/token validation. Fix: add CSRF tokens to all forms.169- **Exposed sensitive data** -- API keys in JavaScript, debug information in production. Fix: move credentials server-side, disable debug mode.170171### 2. Coding Standards Violations172173- **Wrong coding style** -- Tabs vs. spaces, brace placement, naming conventions. Fix: run the platform's coding standards checker and fix all violations.174- **Missing text domain** -- Strings not wrapped in translation functions. Fix: wrap all user-facing strings in `__()`, `_e()` (WordPress), or the platform's i18n function.175- **Incorrect file structure** -- Files not in the expected directory layout. Fix: follow the platform's documented file structure.176177### 3. Functionality Issues178179- **Plugin causes errors on activation** -- Fatal errors, PHP notices, JavaScript errors. Fix: test on a clean installation of the supported platform versions.180- **Conflicts with other plugins** -- Using generic function names, enqueueing scripts globally. Fix: namespace everything, enqueue scripts only on plugin pages.181- **Missing uninstall cleanup** -- Plugin leaves database tables, options, and files after uninstallation. Fix: implement a clean uninstall routine that removes all plugin data.182183### 4. Listing Quality184185- **Misleading description** -- Description claims features not present in the plugin. Fix: accurately describe current functionality.186- **Low-quality screenshots** -- Blurry, cropped, or missing screenshots. Fix: capture clean screenshots at the required resolution.187- **Missing privacy policy** -- Plugin collects data but does not disclose it. Fix: add a privacy policy section describing what data is collected, stored, and transmitted.188189### 5. Performance Issues190191- **Excessive database queries** -- Running queries on every page load. Fix: cache results, use lazy loading, query only when needed.192- **Large asset files** -- Unminified CSS/JS, uncompressed images. Fix: minify and compress all assets.193- **No caching** -- Recalculating expensive operations on every request. Fix: implement transient/object caching.194195### 6. Compatibility196197- **Hardcoded paths or URLs** -- Plugin breaks on non-standard installations. Fix: use platform functions for paths and URLs.198- **PHP version incompatibility** -- Using syntax not available in the minimum required PHP version. Fix: test on the minimum supported PHP version.199- **Missing dependency checks** -- Plugin assumes another plugin or extension is installed without checking. Fix: verify dependencies on activation and display a clear error if missing.200201## Licensing Considerations202203Plugin licensing requirements vary by marketplace. WordPress.org requires GPL-compatible licenses. Other marketplaces allow proprietary licenses. Dual licensing (open-source core with proprietary add-ons) is a common monetization strategy.204205For detailed licensing guidance per platform, see [references/licensing-guide.md](references/licensing-guide.md).206207## Reference Files208209- [Submission Checklists](references/submission-checklists.md) -- Per-platform submission checklists for WordPress.org, Shopify App Store, Magento Marketplace, PrestaShop Addons, BigCommerce, and OpenCart210- [Versioning and Changelog](references/versioning-and-changelog.md) -- SemVer practices, changelog format, migration guides, deprecation policy211- [Licensing Guide](references/licensing-guide.md) -- GPL, MIT, proprietary licenses, dual licensing, per-platform requirements