Once your extension is built, hosted, and registered with a Bundle URL (see [Deploy](/docs/guides/deploy)), the final step is making it discoverable and installable through the marketplace. This happens in the [admin dashboard](https://admin.stackablelabs.com), where you complete your marketplace listing, set a visibility mode, and submit for review.

## 1. Fill in the listing fields

Open your extension in the admin dashboard and complete the **Listing** tab. Every field below becomes part of the marketplace metadata that prospective installers see when browsing or evaluating your extension.

| Field | Required | What it's for |
|-------|----------|---------------|
| **Icon** | Yes | Square image rendered on browse cards and the detail page. Square aspect ratio, transparent background recommended. |
| **Short description** | Yes | One-line summary used on browse cards and search results. Keep it under ~120 characters. |
| **Long description** | Yes | Markdown body for the extension detail page. Cover what the extension does, the problem it solves, and any setup requirements. Screenshots and links allowed. |
| **Screenshots** | Recommended | Image gallery shown on the detail page. Pick views that demonstrate the extension actually working in a host application. |
| **Categories** | Yes | One or more curated categories from the platform taxonomy (e.g., commerce, loyalty, crm, productivity, marketing, employee, other). Drives marketplace browse filters. |
| **Tags** | Optional | Freeform searchable tags. Used for keyword search across the marketplace. |
| **Publisher** | Auto | Pulled from your organization profile — the org name shown as the listing's publisher. Update your org profile in the dashboard if this needs to change. |

> **Tip:** The icon and screenshots are what make a listing feel real. A
> placeholder icon and no screenshots is the single biggest reason listings
> get a "needs more info" review response.

## 2. Choose a visibility mode

Every listing has a **visibility** setting that controls who can install it:

| Visibility | Who can find and install it |
|------------|------------------------------|
| **Public** | Anyone browsing the marketplace. Goes through full marketplace review. Best for extensions you want available to everyone. |
| **Protected** | Only organizations you explicitly add to the **allowed orgs** list. The listing is hidden from public browse; people you've allowed see it in their marketplace as if it were public. Best for private/internal extensions, paid customers, or staged rollouts. |

Visibility can be changed later from the same Listing tab. Switching from **Protected** → **Public** triggers a fresh marketplace review.

## 3. Submit for review

Click **Submit for review**. The platform runs a two-stage review:

### Stage 1 — Automated Bundle scan

Runs immediately on submit. The platform fetches your bundle from the registered Bundle URL and runs deterministic checks:

- Bundle reachable, valid `manifest.json`, sane bundle size
- Declared permissions match observed capability usage
- Declared targets match the surfaces your code actually registers
- Declared `allowedDomains` match the endpoints `data.fetch` actually hits
- No use of forbidden browser globals (`document`, `window.location`, etc.)

Findings come back categorized as **error**, **warning**, or **info**. Errors must be fixed before the listing can move forward. Warnings don't block submission but factor into the review.

### Stage 2 — Advanced review + Stackable approval

If Stage 1 passes, the platform runs an advanced review of your bundle — framework analysis, permission surface, network behavior, and any security-relevant findings get scored and assessed against your listing content. From there, Stackable will either:

- **Approve** — your listing moves to **Published** and becomes installable.
- **Request changes** — structured feedback appears on the listing page. Address it, re-deploy if needed, and resubmit.

Most reviews complete within a few business days. You'll receive an email when the status changes; the listing's review status is also visible in the admin dashboard at all times.

## Review status lifecycle

| Status | Meaning |
|--------|---------|
| **Draft** | Listing is being edited; not submitted. |
| **Pending review** | Submitted; waiting on Stage 1 + Stage 2 + Stackable approval. |
| **Rejected** | Stackable requested changes. Address the feedback and resubmit. |
| **Published** | Live in the marketplace. Installable per your visibility setting. |
| **Suspended** | Pulled from the marketplace by Stackable (security issue, ToS violation, etc.). Contact support. |

## After publishing

Re-deploys to the same Bundle URL don't require re-submission — your existing Instances pick up the new bundle automatically. **Listing edits** (description, screenshots, categories, visibility) and **major version bumps** do go through review again. Patch updates that don't change permissions, targets, or `allowedDomains` typically clear review quickly.
