Help as partner creating custom app for client

We have an inventory and shipping web app that connects to stores using the GraphQL Admin API, not embedded UI. We haven’t gotten our public app flow approved yet, so have been doing Custom Apps historically. But confused with this new flow. With the new flow here is what I understand are the steps:

Tell the client the App URL and Redirect URL and scopes. Have them create the app AND install it on their store then provide the client Id and secret and *.myshopify.com url to begin the client credentials grant flow.

But the Install link is something like: https://my-app.com?hmac=080f853bc8489d584fc5ceee8118c89d509a9d&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvbm8tZXJwLTI&shop=test-store.myshopify.com&timestamp=1786073620

What is my app supposed to do with that? I understand the Using the client credentials grant process. But before that, the client needs to Install the app and I can’t get past that step. What am I missing?

Also it doesn’t seem to really matter as even though my app doesn’t do anything with this post, it still installed it on the store. So do I just return an HTTP ok? What is the point of the Install post if so?

Alternatively, Claude is telling me to create the app in my own, partner dev dashboard, then choose Custom App as the distribution type. I did that, and it then generates an install link. But that link doesn’t give you the option to specify the redirectl url and instead has parameter &no_redirect=true so it won’t redirect to my server. It suggests to just tell them to then come to my app and go to a form to enter their store url, then kick off with:

https://{shop}/admin/oauth/authorize
?client_id={your_client_id}
&scope={your_scopes}
&redirect_uri={your_callback}
&state={state}

Which approach would you recommend? Are they both an option? I like Claude’s recommendation, but I didn’t find that to be an option in my research, so not sure it’s legit.

Hey @Chadillac - you’re looking at two separate flows here.

For a partner-built app, your second approach is the right fit: create the app in your Dev Dashboard, select Custom distribution, send the installation link, then start the authorization-code flow from your onboarding page. The no_redirect=true link only installs the app; it doesn’t initiate OAuth.

The hmac/host/shop/timestamp request is an app launch request, not the installation itself, so returning 200 is fine if you don’t need onboarding UI.

Client credentials is intended for apps and stores owned by the same organization:

Hope this helps!

@Alan_G So I’m clear, using this method of a Custom App, I need to create a new Custom App for each new client we connect to, correct? If a client has multiple stores, they can all connect to the same Customer App we create for them and use the same install link, but separate organizations (our clients) will need their own Custom App, right?

Hey @Chadillac - yep, you are correct with just one small caveat around multiple stores.

A custom-distribution app can be installed on one production store, or on multiple stores if they all belong to the same Shopify Plus organization. So:

  • Separate client organizations need separate custom apps.
  • One Plus client can use the same app and install link across stores in the same Plus organization.
  • If a client has multiple stores that aren’t part of the same Plus organization, each store needs its own custom app.

Each store installation does also need to complete its own authorization-code flow and receive its own access token.

If the goal is eventually to support many unrelated clients through one app, Public distribution would be the longer-term path. Let me know if I can clarify anything here as always :slight_smile: