Automated Shopify checks failing

Hi, I am trying to send an app for review however the automated checks for it are failing.
No description
37 Replies
Chocci_Milk
Chocci_Milk5d ago
Hello, Could you please share the URL of your Gadget app?
Chocci_Milk
Chocci_Milk5d ago
There are a few things that you might want to check: - Has the toml been deployed? This would push the GDPR webhook configs You can also look to see if there's anything missing by looking at the dev dashboard - When you install, do you see any errors (in production) - Take a look at yojur backend logs running through the install and test webhooks to see that everything works as expected
Mash
MashOP5d ago
The toml has been deployed
client_id = "62dd9098106a8daf142d8a96fb384940"
name = "Product Drops"
application_url = "https://product-drops.gadget.app/api/shopify/install-or-render"
embedded = true

[build]

[auth]
redirect_urls = ["https://product-drops.gadget.app/api/connections/auth/shopify/callback"]

[webhooks]
api_version = "2025-04"

[access_scopes]
use_legacy_install_flow = true

[[webhooks.subscriptions]]
compliance_topics = [ "customers/data_request", "customers/redact" ,"shop/redact"]
uri = "https://product-drops.gadget.app/api/webhooks/shopify"
client_id = "62dd9098106a8daf142d8a96fb384940"
name = "Product Drops"
application_url = "https://product-drops.gadget.app/api/shopify/install-or-render"
embedded = true

[build]

[auth]
redirect_urls = ["https://product-drops.gadget.app/api/connections/auth/shopify/callback"]

[webhooks]
api_version = "2025-04"

[access_scopes]
use_legacy_install_flow = true

[[webhooks.subscriptions]]
compliance_topics = [ "customers/data_request", "customers/redact" ,"shop/redact"]
uri = "https://product-drops.gadget.app/api/webhooks/shopify"
When I install I see no errors, webhooks dont throw any errors Only 2 checks are failing now
Mash
MashOP5d ago
No description
Chocci_Milk
Chocci_Milk5d ago
When I tested your installation, I saw this:
No description
Chocci_Milk
Chocci_Milk5d ago
This makes me think that you either may need to ask for additional permissions from Shopify or somethings missing from your app
Mash
MashOP5d ago
Oh ok, that is interesting - When I install it on the dev store I do not see this Let me try to request these permissions in the partners dashboard
Chocci_Milk
Chocci_Milk5d ago
Maybe I've missed something in the setup of the partner app
Chocci_Milk
Chocci_Milk5d ago
When you selected the app distribution, did you select this?
No description
Chocci_Milk
Chocci_Milk5d ago
And this?
No description
Mash
MashOP5d ago
I do not think so - It did not ask for that We just selected public distribution as we need this app to work as a sales channel
Chocci_Milk
Chocci_Milk5d ago
Yeah, I think that might be what needs to be done
Mash
MashOP5d ago
Okay ty I will quickly look into it now and lyk @[Gadget] Antoine I dont see those options - Also the app does have access to the scopes it says that are missing, please see:
Mash
MashOP5d ago
No description
Mash
MashOP5d ago
subscriptions api as well as payment mandates
Chocci_Milk
Chocci_Milk5d ago
Mind sharing a full video of installation and what you see?
Mash
MashOP5d ago
Yes sure, I will just make a video right now @[Gadget] Antoine Just a question - How did you test installation to go get here?
Chocci_Milk
Chocci_Milk5d ago
I made an environment on your app and installed it on my development store
Mash
MashOP5d ago
Okay cool I will just show my screen installing on a dev store after uninstalling
Mash
MashOP5d ago
@[Gadget] Antoine Heres a screen recording
Chocci_Milk
Chocci_Milk5d ago
Do you have contacts at Shopify? You might have better luck getting some information about this from them. Everything looks fine to me
Mash
MashOP5d ago
Let me ask Robert he may be able to assist with that Also just a question, the only reason we are going via sales channel route is because we want products to be private and prevent users being able to go through the usual checkout apis etc to buy products This is for a raffles app, do you have any suggestions on how we could maybe do this without a public distribution app? We just want private checkouts
Chocci_Milk
Chocci_Milk5d ago
I believe that you can have the same api access with the custom distribution. The public distribution only needs to be used if you're going to install on multiple stores (that aren't yours)
Mash
MashOP5d ago
Only problem is that when we select custom distribution, you cannot convert your app into a sales channel. That is the blocker we have Unfortunately sales channel apps are required to be public distribution (which is kind of strange)
Chocci_Milk
Chocci_Milk5d ago
Is that confirmed by Shopify?
Mash
MashOP5d ago
Yeah its on their docs as well
Chocci_Milk
Chocci_Milk5d ago
Interesting. Ok, if you don't mind getting some information from Shopify support about why the first test is failing; it shouldn't based off of what we're seeing. They might be able to tell you what step is failing
Mash
MashOP4d ago
Okay thanks, I will ask Robert if we can speak to anyone at shopify who can give us the reason for the failure Hi I just did some digging with a team member
fetch("https://product-drops.gadget.app/api/shopify/install-or-render?embedded=1&hmac=7a0a1528146adf5b012f596062be3beb4074e1dcd9f84e6f2dff99b8fa3cb673&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvbGJzLWIyYg&id_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvbGJzLWIyYi5teXNob3BpZnkuY29tXC9hZG1pbiIsImRlc3QiOiJodHRwczpcL1wvbGJzLWIyYi5teXNob3BpZnkuY29tIiwiYXVkIjoiNjJkZDkwOTgxMDZhOGRhZjE0MmQ4YTk2ZmIzODQ5NDAiLCJzdWIiOiIxMjAzNDEyOTk1MTkiLCJleHAiOjE3NjQ3NjgxOTYsIm5iZiI6MTc2NDc2ODEzNiwiaWF0IjoxNzY0NzY4MTM2LCJqdGkiOiI0NzE5ZTllZC1iNzQ4LTRkZDktOTU5OS0yN2M0MjM3NDg0NjgiLCJzaWQiOiIwMTg4NzJhMi0zZTJjLTQ5NGYtYjA4My04YjlmN2Y1MDgwMzciLCJzaWciOiJlZjRmMTAxNTZlZDVjODY1NTQ4ODgwZjI4M2QzOTA0MmFiZDJlOTM1ODFmYjkyZDZkMmQ2NzkyOWRlMmY1NGQ4In0.TbcHet50dVwiXkVWwcop8eISuktsr_tu6EbpXJWCXoM&locale=en&session=da77061047778b054e718f6c15d0fecb6e3c4a143b45193af541d2ccfd9790c1&shop=lbs-b2b.myshopify.com&timestamp=1764768136", {
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8",
"priority": "u=0, i",
"sec-ch-ua": "\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "iframe",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "cross-site",
"sec-fetch-storage-access": "active",
"upgrade-insecure-requests": "1"
},
"referrer": "https://admin.shopify.com/",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
});
fetch("https://product-drops.gadget.app/api/shopify/install-or-render?embedded=1&hmac=7a0a1528146adf5b012f596062be3beb4074e1dcd9f84e6f2dff99b8fa3cb673&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvbGJzLWIyYg&id_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvbGJzLWIyYi5teXNob3BpZnkuY29tXC9hZG1pbiIsImRlc3QiOiJodHRwczpcL1wvbGJzLWIyYi5teXNob3BpZnkuY29tIiwiYXVkIjoiNjJkZDkwOTgxMDZhOGRhZjE0MmQ4YTk2ZmIzODQ5NDAiLCJzdWIiOiIxMjAzNDEyOTk1MTkiLCJleHAiOjE3NjQ3NjgxOTYsIm5iZiI6MTc2NDc2ODEzNiwiaWF0IjoxNzY0NzY4MTM2LCJqdGkiOiI0NzE5ZTllZC1iNzQ4LTRkZDktOTU5OS0yN2M0MjM3NDg0NjgiLCJzaWQiOiIwMTg4NzJhMi0zZTJjLTQ5NGYtYjA4My04YjlmN2Y1MDgwMzciLCJzaWciOiJlZjRmMTAxNTZlZDVjODY1NTQ4ODgwZjI4M2QzOTA0MmFiZDJlOTM1ODFmYjkyZDZkMmQ2NzkyOWRlMmY1NGQ4In0.TbcHet50dVwiXkVWwcop8eISuktsr_tu6EbpXJWCXoM&locale=en&session=da77061047778b054e718f6c15d0fecb6e3c4a143b45193af541d2ccfd9790c1&shop=lbs-b2b.myshopify.com&timestamp=1764768136", {
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8",
"priority": "u=0, i",
"sec-ch-ua": "\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "iframe",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "cross-site",
"sec-fetch-storage-access": "active",
"upgrade-insecure-requests": "1"
},
"referrer": "https://admin.shopify.com/",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
});
when we install we tried on a private browser and this request fails the app installs fine but this fails and does not return any cookie (im assuming this is the reason the checks fail)
Udi
Udi4d ago
Please read this doc and see if it helps you I prepared it after experiencing the same issue and it recently helped another dev. that was stuck on this for 2 weeks
Chocci_Milk
Chocci_Milk4d ago
From that doc, I would keep in mind that if you don't want to use Shopify managed installs, you shouldn't include the scopes in the toml (nor the root route of your app). Here are some docs on Shopify managed installs if you don't care how it gets installed 😛 https://docs.gadget.dev/guides/plugins/shopify/advanced-topics/oauth#setting-up-shopify-managed-installations
Chocci_Milk
Chocci_Milk4d ago
I can also keep trying to figure this out. I'm talking with the team to see where I should continue digging.
Mash
MashOP4d ago
@Chocci_Milk Thanks for that, is there any downside to using Shopify managed installs? I will update the toml file to see if it helps solve that error
Chocci_Milk
Chocci_Milk4d ago
No, in fact it will make the installation process faster. Alternatively, the team just told me that you may want to test installation on a fresh dev store. Apparently, the automated tests go based off of cached results If you go with Shopify managed installs, you'll need to deploy the scopes and other toml configurations any time you want to update what you have access to
Mash
MashOP4d ago
That is not an issue for us to be honest, we need to install it for a single merchant anyway so it should be good I will test it right now and update you, ty! @Chocci_Milk @Udi It worked! Thanks guys ❤️
Chocci_Milk
Chocci_Milk4d ago
No problem!

Did you find this page helpful?