The requirements for listing an app on GitHub Marketplace vary according to whether you want to offer a free or a paid app.
All listings on GitHub Marketplace should be for tools that provide value to the GitHub community. When you submit your listing for publication, you must read and accept the terms of the "GitHub Marketplace Developer Agreement."
All listings should meet the following requirements, regardless of whether they are for a free or paid app.
- Listings must not actively persuade users away from GitHub.
- Listings must include valid contact information for the publisher.
- Listings must have a relevant description of the application.
- Listings must specify a pricing plan.
- Apps must provide value to customers and integrate with the platform in some way beyond authentication.
- Apps must be publicly available in GitHub Marketplace and cannot be in beta or available by invite only.
- Apps must have webhook events set up to notify the publisher of any plan changes or cancellations using the GitHub Marketplace API. For more information, see "Using the GitHub Marketplace API in your app."
For more information on providing a good customer experience, see "Customer experience best practices for apps."
- Apps that use GitHub logos must follow the GitHub guidelines. For more information, see "GitHub Logos and Usage."
- Apps must have a logo, feature card, and screenshots images that meet the recommendations provided in "Writing GitHub Marketplace listing descriptions."
- Listings must include descriptions that are well written and free of grammatical errors. For guidance in writing your listing, see "Writing GitHub Marketplace listing descriptions."
To protect your customers, we recommend that you also follow security best practices. For more information, see "Security best practices for apps."
Free apps are encouraged in GitHub Marketplace and are a great way to offer open source services. If you list a paid version of your app outside of GitHub Marketplace, you must offer at least one paid plan when listing the app in GitHub Marketplace.
To publish a paid plan for your app on GitHub Marketplace, your app must be owned by an organization that is a verified publisher. For more information about the verification process or transferring ownership of your app, see "Applying for publisher verification for your organization."
If your app is already published and you're a verified publisher, then you can publish a new paid plan from the pricing plan editor. For more information, see "Setting pricing plans for your listing."
To publish a paid app (or an app that offers a paid plan), you must also meet the following requirements:
- GitHub Apps should have a minimum of 100 installations.
- OAuth Apps should have a minimum of 200 users.
- All paid apps must handle GitHub Marketplace purchase events for new purchases, upgrades, downgrades, cancellations, and free trials. For more information, see "Billing requirements for paid apps" below.
When you are ready to publish the app on GitHub Marketplace you must request verification for the app listing.
Note: If you want to sell an app that's owned by your user account, first you'll need to transfer the app to an organization, and then request verification for a listing created by the organization. For information on how to transfer an app to an organization, see: "Submitting your listing for publication."
Your app does not need to handle payments but does need to use GitHub Marketplace purchase events to manage new purchases, upgrades, downgrades, cancellations, and free trials. For information about how integrate these events into your app, see "Using the GitHub Marketplace API in your app."
Using GitHub's billing API allows customers to purchase an app without leaving GitHub and to pay for the service with the payment method already attached to their GitHub account.
- Apps must support both monthly and annual billing for paid subscriptions purchases.
- Listings may offer any combination of free and paid plans. Free plans are optional but encouraged. For more information, see "Setting a GitHub Marketplace listing's pricing plan."