> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jtl-software.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Become a seller, then publish your app to the App Store or share it privately with activation codes.

Once your app is registered and tested, you can get it into merchants' hands. Listing your app makes it available through the App Store or privately to merchants you choose. You can also share an app without listing it, with some limits.

## Become a Seller

Listing an app, publicly or privately, requires becoming a seller with JTL. Sellers get support from JTL and can distribute their apps to merchants across the ecosystem.

[Register as a Seller](https://www.jtl-software.de/extension-store/Seller-werden) before you submit a listing.

## Two Ways to Submit

You submit your app as either a public or a private listing.

<CardGroup cols={2}>
  <Card title="Publish to the App Store" icon="store" href="/get-started/submitting-your-app/publish-to-app-store">
    Make your app available to all merchants in the App Store. JTL reviews your listing before it goes live.
  </Card>

  <Card title="Share a Private App" icon="key" href="/get-started/submitting-your-app/share-private-app">
    Give selected merchants access using activation codes. No App Store review.
  </Card>
</CardGroup>

## When to Use Each

Publish to the App Store when your app is ready for any merchant to find and install.

Share a private app when:

* Your app isn't ready for general release yet, and you want selected customers to test it first.
* Your app is built for a few specific customers and needs individual configuration or support that doesn't fit the App Store.
  You set this with `distributionType` in your listing manifest, and you can change it while the listing is in `DRAFT` or `REJECTED`. Once you submit, it's fixed.

## What a Listing Covers

A listing describes your app for merchants. You define it in a listing manifest:

* **Names and descriptions**, per locale.
* **Benefits**: three to five per locale.
* **Category**: one main category and at least one subcategory.
* **Media**: light and dark icons, one to ten screenshots, and an optional product video.
* **Compatibility**: the JTL products your app supports, and the minimum version of each.
* **Support and legal URLs**: support, privacy policy, terms of use, and GDPR request and delete.
  Public listings also include pricing.

Names, descriptions, benefits, supported products, and support URLs are all locale-keyed, so one manifest can serve several markets.

For the full field reference, see the [Listing Manifest](/guides/cloud-apps/listing-manifest).

Your app must be registered and provisioned before you can list it, which it is if you followed the quickstart.

## Creating and Submitting a Listing

Listing an app has two steps: creating a draft, then submitting it.

There are two ways to create the draft, and both produce the same listing:

* **CLI**: With a `listing.json` in your project root, run `npm run listing` in a template project, or `npx -y @jtl-software/create-cloud-app@latest listing` in any project. This creates a listing draft from your `listing.json`.
* **Listing Wizard**: In the [Partner Portal](https://partner.jtl-cloud.com/) under **Publish apps**, complete the listing form. The wizard captures the same information as `listing.json`.

Whichever method you choose, the draft is created in the Partner Portal. From there, you can review how your listing will appear to merchants before submitting it for review. Submission is always a separate step, giving you a chance to verify everything before it enters the review process.

## Sharing Without a Listing

You can share a registered app without creating a listing. Merchants install it using an activation code you generate and send to them. This suits a proof of concept you want a few customers to try before you commit to a listing.

Without a listing, you can generate up to **three activation codes**. Each code is single-use, so three codes reach three merchants. To share with more, become a seller and create a listing.

See [Share a Private App](/get-started/submitting-your-app/share-private-app#how-a-merchant-redeems-a-code) for how a merchant redeems a code.

## Before You Submit

Deploy your app to a public URL with HTTPS, then update its URLs to production in the app manifest. Merchants can't reach `localhost`, and JTL loads your app in an iframe, so HTTPS is required.

Set your production environment variables wherever you deploy:

```dotenv theme={null}
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
```

Pick your path above to continue.
