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.
/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
/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)
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 theApps 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.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.See also
- App Lifecycle — install → uninstall flow + webhooks
- App Versioning — semver, rollback, sandbox testing
- Extensions Overview — what each extension type does
- Authentication — OAuth scopes + session tokens
- App Bridge Overview — talking to the host from your iframe