Skip to main content

App Listing & Detail Page

LaunchMyStore renders an installed app’s in-admin detail page (/admin/apps/{handle}) and the marketplace listing (/marketplace/{handle}) from the same Apps row. This page is the field-by-field reference for everything you control on those two screens — what shows where, how to author it, and the publishing flow. This guide is for developers using the Developer dashboard at app.launchmystore.io/developer/apps to ship public apps to the marketplace.

Where each field shows up

Authoring fields at app creation

Open /developer/apps/create. The Listing Details section captures the three fields that change how the in-admin detail page reads:
string ≤100
The one-line subtitle under your app name. Both screens show this.
string[]
Newline-separated list of third-party services / platforms (e.g. Klaviyo, Google Shopping, Meta Shops). Renders as pills.
markdown
Setup instructions shown as the Getting started section on the in-admin detail page. See Writing a good installationGuide.
You can edit all of these later from /developer/apps/{appId}Listing tab. Saving there issues a PATCH that the platform live-replays into both the marketplace listing and every merchant’s in-admin detail page — no re-publish needed.

Detail page anatomy

The Install button only appears when the merchant has no installation row for this app. Clicking it opens /marketplace/{handle} where the standard OAuth → install flow runs.

Writing a good installationGuide

This is plain Markdown. The renderer is intentionally minimal — it supports:
  • Headings: #, ##, ###
  • Bold (**text**), italic (*text* or _text_), inline code (`text`)
  • Links: [label](https://…) — open in a new tab automatically
  • Ordered lists (1., 2., …) and unordered lists (-, *, +)
  • Paragraphs (separated by a blank line)
It does not support: HTML, images, tables, footnotes, or fenced code blocks. Keep instructions short and step-driven; merchants are usually on their first install when they read this.

Example — extension-only app

What happens if you leave it blank

The detail page auto-generates a “Getting started” section from your extension manifest: This is good enough to ship a v1, but writing your own guide is strongly recommended — auto-generated copy is generic and will not tell merchants the why (e.g. “set a threshold of $75 to recover 80% of abandoned carts”).

Field reference

These are the columns on the Apps table that the developer dashboard exposes. All are optional unless marked required. extensions.settings is what powers the in-admin Settings card. Each entry is {type, key, label, default, ...} (text, number, boolean, select). Settings render in disabled / preview mode if the merchant has not installed the app yet.

Two render modes for the in-admin page

/admin/apps/{handle} chooses one of two layouts based on whether appUrl is set:

AppEmbedFrame

Used when appUrl is set. Renders your hosted iframe with the App Bridge SDK loaded. You own the entire UI inside the frame.Use this for apps with a hosted dashboard, custom forms, or any UI beyond declarative extensions.

ExtensionOnlyDetailPage

Used when appUrl is null / empty. Platform-rendered header + Settings + Getting started + extensions list.This is the right choice for declarative apps (theme blocks, WASM functions, admin blocks) that don’t need a hosted dashboard.
If you want the platform-rendered detail page, leave appUrl empty.

Publishing flow

1

Create the app

At /developer/apps/create choose Save as Draft or Submit for Review. Drafts let you edit freely without affecting any merchant.
2

Add extensions and functions

At /developer/apps/{appId} use the tabs Extensions, Functions, Webhooks to register what your app contributes to the storefront, checkout, and admin.
3

Submit for review

Status moves draft → review → published. Review checks scopes, redirect URLs, and listing copy.
4

Merchants install

Once published, merchants see your app on /marketplace. Install creates the installation record and deploys your blocks / snippets to the merchant’s extensions/{domainSlug}/{handle}/ bundle on LaunchMyStore.
A clean uninstall removes the deployed bundle and refreshes the caches automatically — no leftover files pollute the merchant’s storefront.

See also