Create a listing
Start the wizard
In the Publisher portal, create a new listing. You will set title, slug, description, gallery, and commercial options.
Choose presentation (Style step)
Pick content or styled before uploading the bundle. One listing = one presentation. Want both? Ship two listings (for example “Slider” and “Slider Pro”).
Upload and validate the bundle
Attach your runtime package. Macro validates and scores it — see Bundles & score.
Publish when ready
Keep the listing in draft while iterating. Set status to published and visibility to public when buyers should see it in the Store.
Presentation: content vs styled
| Name | Type | Description |
|---|---|---|
content | presentation | Content block — neutral, token-driven runtime that inherits the buyer’s site styles. Design tab usually hidden after install. |
styled | presentation | Styled widget — ships an opinionated look; buyers tweak theme via a design field group. |
Status lifecycle
| Name | Type | Description |
|---|---|---|
draft | status | Editable in the portal; not sold on the public Store. |
published | status | Eligible for the catalog when visibility is public and sellable rules pass. |
archived | status | Retired listing — kept for history / entitlements, not for new installs. |
Visibility is public or private. Disconnecting Stripe unpublishes paid listings (draft + private) so they leave the public catalog until Connect is active again.
Component identity
Declare a namespaced typeId in the bundle (for example @your-brand/my-slider). Macro derives the HTML tag automatically (your-brand-my-slider). Do not hand-pick tags — uniqueness comes from the namespaced id, same idea as npm scopes. Details: Quality handbook.