Shopify app notes · 12

Shopify Dev Dashboard

The website where your apps, versions and test stores live. What each section does, how it relates to the code on your laptop, and which things can only be done here.

Dev Dashboard dev stores

What it is

Your code lives on your computer and your server. But Shopify also needs its own record of your app — its name, its permissions, its URLs, who may install it. That record lives in the Dev Dashboard.

your code ↔ Dev Dashboard ↔ merchant's store

The dashboard is the middle piece. Without a record there, a store cannot install anything.

Almost everything can be driven from the CLI instead, and usually should be. But some things — creating the app, choosing distribution, viewing logs — only happen here.

Trap — App Store listing and pricing are elsewhere

Even after your organization moves to the Dev Dashboard, your App Store listing and its pricing plans stay in the Partner Dashboard. App configuration, monitoring and logs move; the listing does not.

If you are hunting for pricing settings in the Dev Dashboard, that is why they are not there. See Note 16.

If you have read older tutorials

This used to be the Partner Dashboard. The Dev Dashboard is its newer replacement, focused on app development. Depending on your account you may still see the older interface, or links that say "Partner Dashboard" — the concepts below apply to both, even if a menu sits somewhere slightly different.


Organizations and people

Everything hangs off an organization — your company's container for apps, stores and team members. You may belong to more than one.

shopify organization list     # which ones can I see?

Access is controlled by roles, so a new team member sees only what they should:

RoleCan do
Organization administratorEverything, including billing and managing people.
App developerBuild and manage apps; create and manage dev stores. No production store data, no financials, no user management.
Store administratorManage the organization's stores.
Collaborator accessLog into merchant stores you have been granted access to.
Onboarding a developer

App developer is the role you want for someone joining to write code. It gives them the dashboard and dev stores without exposing real merchant data or finances.


Apps

Under Apps you will find every app your organization owns. Each has its own client ID and its own settings — which is why a dev app and a production app are two separate entries.

Two ways to create one

WayGood for
Shopify CLI — shopify app init, or shopify app config link for an existing projectAny app you are writing code for. Configuration lives in your TOML, in version control.
Dev Dashboard — Apps → Create app → Start from Dev DashboardQuick integrations with no repo: a script that needs API access, connecting an existing system.
Which to choose

If you are building the kind of app this series describes — and especially if it may go to the App Store — create it with the CLI. Your settings then live in a file you can review and roll back, instead of only in a web form.

Inside an app

  • Home — the overview, with the Distribution card and an Install app button for putting it on one of your own stores.
  • Versions — every released snapshot of the app's settings.
  • Distribution — public or custom (Note 13).
  • Monitoring / logs — webhook and function deliveries, useful when something is not arriving.

Versions

A version is a snapshot of your app's configuration — URLs, scopes, webhook topics, extensions. It is not your code.

Running shopify app deploy creates a new version and releases it. You can also create one by hand in the dashboard: set the app URL, pick a webhooks API version, choose scopes, then Release.

An app needs at least one version to be installable

A freshly created app with no released version cannot be installed anywhere. If an install link does nothing, check that a version exists and is released.

Because versions are kept, you can roll back a bad settings change:

shopify app versions list
shopify app release --version=<previous>
Trap — new scopes are not applied automatically

Release a version with extra permissions and the stores that already have your app installed do not get them silently. Each merchant must approve the new scopes in their admin.

So a feature needing a new scope is not live the moment you deploy — it is live when the merchant clicks approve. Plan for that gap, and do not schedule it for a Friday.


Stores

Three different kinds, and picking the wrong one causes real problems.

Dev storeClient transfer storeCollaboration
Who owns itYouYou, then the merchantThe merchant
ForBuilding and testingBuilding a store to hand overWorking on a live store
Real transactionsNoNoYes
TransferableNoYesAlready theirs

Dev stores are where you will spend your time: free, disposable, no real money, and you can install unreleased apps on them.

# create one from the terminal
shopify store create dev --name "My test shop" --demo-data

# with a specific plan and country
shopify store create dev --name "Plus testing" --plan plus --country CA --demo-data

shopify store list        # what do I have?
shopify store info
shopify store open
Always use --demo-data

An empty store hides bugs. Real-looking products, variants and orders surface pagination problems and edge cases immediately — exactly the kind of thing that otherwise only appears on a merchant's store.

Trap — a dev store is not a real store

Dev stores cannot take real payments, and some features behave differently or are limited. Passing every test on a dev store is necessary, not sufficient — plan a careful first install on a real store too.


How the dashboard and the CLI stay in sync

This is the part that confuses people: the same settings exist in two places.

shopify.app.toml → shopify app deploy → new version in the dashboard

And in reverse: config pull brings dashboard changes back into your file.

shopify app config link    # connect this folder to a dashboard app
shopify app config pull    # dashboard → your TOML
shopify app deploy         # your TOML → dashboard
shopify app info           # which app am I linked to?
Trap — editing in both places

Change a scope in the dashboard, then deploy from your laptop, and your TOML overwrites the dashboard edit. It looks like your change "disappeared".

Pick one source of truth. For an app with a repo, that is the TOML — make every change there and deploy. If someone does edit in the dashboard, run shopify app config pull before your next deploy.


Dev previews

When you run shopify app dev, your local app is previewed on a dev store without creating a released version. That is how you test freely without touching what merchants see.

The preview outlives the command

Stopping shopify app dev does not remove the preview from the store — your local configuration stays active there until it is cleaned or the app is uninstalled.

shopify app dev clean

Cleaning restores the released version. Note that anything which existed only in the preview is removed along with its data — so if you configured something during a preview and want to keep it, put it in a real version first.

Inside a dev store's admin there is also a Dev Console showing active previews, who created them, and buttons to clean up, uninstall, or open the app in the Dev Dashboard.


Setting up from scratch

  1. Create or join an organization.
  2. Get the App developer role (or higher).
  3. Create a dev store: shopify store create dev --name "..." --demo-data
  4. Create the app: shopify app init, or shopify app config link for an existing repo.
  5. Run shopify app dev and install it on your dev store when prompted.
  6. Build. Deploy settings with shopify app deploy when the TOML changes.
  7. When it is ready for real merchants, choose a distribution method (Note 13).

Common questions

Do I need a Partner account to build apps?

You need access to an organization with app development permissions. That is usually a partner organization, but a merchant organization can also grant someone the App developer role — useful when a shop builds its own tooling.

Why do I have several apps for one product?

Because development and production should not share settings, URLs or secrets. Separate apps mean testing can never affect a live merchant. Keep one TOML per app and switch with shopify app config use.

My install link does nothing

Usually there is no released version yet, or the distribution method has not been chosen. Check the app's Home and Versions.

Where do I see whether webhooks are arriving?

Monitoring and logs in the Dev Dashboard, or shopify app logs in the terminal. Between them you can tell "Shopify never sent it" from "my handler failed".

Can I delete a dev store?

Yes — in the dashboard or with shopify store delete. They are disposable by design; when one gets messy, make a fresh one.


Cheat sheet

# orientation
shopify organization list        which orgs can I see
shopify app info                 which app is this folder linked to
shopify store list               my stores

# stores
shopify store create dev --name "X" --demo-data --plan plus
shopify store open · store info · store delete

# app ↔ dashboard
shopify app config link          connect folder to an app
shopify app config pull          dashboard → TOML
shopify app deploy               TOML → dashboard (new version)
shopify app versions list
shopify app release --version=   roll back settings

# previews
shopify app dev                  preview without releasing
shopify app dev clean            remove the preview

# remember
a version = settings snapshot, NOT your code
no released version → cannot be installed
new scopes → each merchant must approve
edit settings in ONE place (the TOML)