Developer Portal: create your first app

Markdown

View as Markdown

Developer Portal: create your first app

The Developer Portal is where you build, version, and publish apps for the LaunchMyStore App Store. This guide walks you from creating a developer account through submitting your first app for review. By the end you'll have an app that can be installed by merchants, request OAuth scopes, and ship extensions.

1. Create a developer account

Open Developer → Apps in your admin (or visit /developer/apps). The first time you land there you'll be asked to accept the developer terms and confirm your contact email. Developer access is free; you don't need a paid plan to build apps. You do need a regular LaunchMyStore account first — the developer portal is layered on top of it.

Once accepted, you'll see your dashboard with three sections: My Apps, Versions, and Installations.

2. Create a new app

Click Create app. You'll fill out:

  • Name — shown to merchants in the store catalog
  • Handle — URL-safe slug; used in install URLs and webhook payloads
  • Typepublic, private, or first-party (see below)
  • App URL — the page merchants land on after install (your admin UI)
  • Redirect URIs — allowed OAuth callbacks (whitelisted — only exact matches are accepted)

After save, the portal generates a client ID (API key) and client secret. Store the secret somewhere safe — it signs JWTs for App Bridge session tokens and is shown in full only once. You can regenerate it later, but old tokens will be invalidated.

3. Choose the right app type

Three options, picked at create time and shown in the Apps.type enum:

  • public — available to any merchant in the App Store after review. Use this for apps you want to distribute.
  • private — installable only by stores you explicitly invite. Good for single-merchant builds or internal tools.
  • first-party — reserved for apps built by LaunchMyStore itself. You'll see this label on bundled apps; you can't set it manually.

You can convert private to public later by submitting for review; the reverse isn't supported — a published app stays public.

4. Configure OAuth scopes and redirect URIs

In your app's Configuration tab, declare the scopes you'll request. Common ones:

  • read_products, write_products
  • read_orders, write_orders
  • read_customers, write_customers
  • read_metafields, write_metafields
  • read_inventory, write_inventory
  • read_themes, write_themes

Only request what you actually use — merchants see the scope list at install time, and reviewers reject apps that ask for more than they need.

Redirect URIs must be exact. https://app.example.com/oauth/callback won't match https://app.example.com/oauth/callback/. List every variant you need (dev, staging, prod) up-front.

5. Build the OAuth flow

Your install URL takes merchants to the authorize endpoint:

https://api.launchmystore.io/apps/oauth/authorize?
  client_id=YOUR_API_KEY&
  scope=read_products,write_products&
  redirect_uri=https://app.example.com/oauth/callback&
  state=CSRF_TOKEN_HERE

After approval you get back an authorization code, which you exchange server-side for an access token. Full details and refresh flow are in our OAuth 2.0 guide.

6. Add extensions

Apps can ship 11 types of extension. The most common at launch:

  • Storefront block — an .aqua Liquid block merchants can drop into a section (e.g. a reviews widget on the product page)
  • Admin block — an iframe injected into one of 26 admin pages (product details, order details, customer details, analytics, etc.)
  • Checkout extension — UI injected at checkout extension points
  • Cart transform / shipping rate / payment customization / delivery customization / order validation / discount — declarative WASM functions that run server-side during checkout

Upload extensions from your app's Extensions tab. Each extension carries its own manifest declaring where it shows up.

7. Test before submitting

Install the app on your own test store using the private install URL from the portal. Drive the OAuth flow end-to-end, exercise each extension, and verify your webhooks fire. The portal includes a built-in function tester at POST /apps/functions/test for replaying carts against your declarative functions without going through real checkout.

8. Submit for review

When you're ready, fill in the Marketplace listing fields:

  • Tagline (one line)
  • Long description with markdown
  • Screenshots (at least three, 1280×800)
  • Icon (512×512 PNG)
  • Category — pick one of the seven store categories
  • Pricing plans (Stripe price IDs)
  • Support email, privacy policy URL, public website

Click Submit for review. The review team checks scope hygiene, security, and UX; expect feedback within a few business days. Once approved, your app appears in the public App Store.

FAQ

Do I need a paid plan to become a developer?

No. The Developer Portal is free for everyone with a LaunchMyStore account. You only pay if your installed apps opt into paid plans, which is independent of your dev account.

Can an app be both public and private?

No — the type is a single value on the app record. You can start private and submit to flip to public, but you can't be both at once. If you need a private build of a public app, create a second app with the same code.

How do I rotate my client secret?

From Developer → Apps → (app) → Configuration, click Regenerate secret. Existing access tokens keep working, but any session-token JWTs signed with the old secret will fail verification — deploy the new secret to your servers immediately.

What if I need a scope that isn't listed?

Open a support ticket from the portal with a description of the use case. New scopes are added periodically; in the meantime, the closest existing scope is usually enough.

How long does review take?

Most apps clear review in 3–5 business days. Apps requesting broad write scopes (write_orders, write_customers) or that handle PII receive deeper scrutiny and can take longer.

Can I update my app after it's published?

Yes. Push a new version from the portal; merchants who have auto-update on receive it automatically, others get an "Update available" prompt. You can roll back any release if something breaks.


Was this article helpful ?