A space to discuss online store customization, theme development, and Liquid templating.
I have just discovered that Last year Shopify stopped partner developers from creating private apps with there IMOH most important feature: proxy url support. I am now in a real crisis of a pickle as I have a client who was relying on this to embed an active campaign form for users to sign up to various email based sales funnels.
For anyone who doesn't understand the significance of what the proxy does - it allows you to set an external url like mysite.activecampaign.com/formproc.php and define a local url that forwards to it eg mysite.com/app/signup. This means when you have an outbound request using say a form or js ajax request it is not blocked as a CORS. Cross Orgiin Request. Which most browsers will block now as it is a security risk for cross site scripting attacks.
It is doubly confusing as Shopify has writ in the documentation that you can install a private app on the client store - this is actually rubbish and should be renamed for what it is "Integration Credentials". Why? Because all it does is manage the credentials for accessing the API. ie integrating with the Api. So this "private app" is a dead end as far as i am aware as proxies are not available to create/manage via the api.
Now the documentation notes this feature is only available to public apps. Which is a disaster - here's why:
Now some people may say that writing form code is an advanced use of shopiy - that is absolutely not true. The bread and butter of the web is tables and forms and it is perfectly reasonably to expect to be able to make a form in a e-commerce/crm platform.
So given the shopify guru was only able to point me here to ask my question (shopify has no technical escalation support via there gurus). What I'd like to hear are viable solutions for this issue - obviously the best would be for shopify to make the feature available again, but thats unlikely and going to be to late for us.
So far I have thought of these work arounds - which all have draw backs:
So does anyone know the best practice solution for this at this point or got any other workaround ideas?
Thanks in advance for the help - if you can hear frustration in anything I have writ, know that its not personal, I am just genuinely very frustrated and feel very let down by the shopify platform at this point. And that it is genuine pain as I have built my business around using it as a foundational piece of the services/solutions I provide.
Also please note I did post in this thread as I thought it may be a similar issue. However I thought it would be better to draft up something more detailed.
Thanks
Dan
Solved! Go to the solution
This is an accepted solution.
Hi @agentlewis,
It looks like you already discovered the solution I'm about to tell you in the thread you linked, but I'll give it nonetheless.
You would need to use a "public" app to take advantage of the app proxy feature. I can understand why some people would think this type of app would be publicly available through the Shopify app store, but that's not quite the case. Here are the differentiations:
Private app
This type of app is scoped to a specific shop, and thus cannot be installed on multiple shops. Since the owner of the shop would need to create the private app, there is no need for the oAuth handshake to take place as permission is set in the admin. These apps cannot take advantage of some features of public apps such as extensions and app proxies.
Public app
A public app is just that, public. It can be installed on multiple shops at any given time, each with their own permissions and access token. These apps use oAuth to gain access to shops and their corresponding data. Public apps allow the use of extensions such as app proxies.
Public apps can be split into two subcategories: published and unpublished.
Published apps are available to the masses on Shopify's app store. These apps are subject to certain requirements in order to be published, and must maintain those requirements in order to remain in the app store.
Unpublished apps are more similar to private apps in that they are no publicly exposed anywhere (unless specifically shared, as some apps that choose not to be on our app store will do).
It sounds like you want to create a public app that is unpublished in order to take advantage of the app proxy feature.
Let me know if you have any further questions or concerns about this.
Take care!
To learn more visit the Shopify Help Center or the Community Blog.
This is an accepted solution.
Hi @agentlewis,
It looks like you already discovered the solution I'm about to tell you in the thread you linked, but I'll give it nonetheless.
You would need to use a "public" app to take advantage of the app proxy feature. I can understand why some people would think this type of app would be publicly available through the Shopify app store, but that's not quite the case. Here are the differentiations:
Private app
This type of app is scoped to a specific shop, and thus cannot be installed on multiple shops. Since the owner of the shop would need to create the private app, there is no need for the oAuth handshake to take place as permission is set in the admin. These apps cannot take advantage of some features of public apps such as extensions and app proxies.
Public app
A public app is just that, public. It can be installed on multiple shops at any given time, each with their own permissions and access token. These apps use oAuth to gain access to shops and their corresponding data. Public apps allow the use of extensions such as app proxies.
Public apps can be split into two subcategories: published and unpublished.
Published apps are available to the masses on Shopify's app store. These apps are subject to certain requirements in order to be published, and must maintain those requirements in order to remain in the app store.
Unpublished apps are more similar to private apps in that they are no publicly exposed anywhere (unless specifically shared, as some apps that choose not to be on our app store will do).
It sounds like you want to create a public app that is unpublished in order to take advantage of the app proxy feature.
Let me know if you have any further questions or concerns about this.
Take care!
To learn more visit the Shopify Help Center or the Community Blog.
Hey @Busfox,
Thats a great write up - yes I just wanted a public non-published app to take advantage of the app proxy feature.
I wish I had found something like that when I started looking through the documentation or that the guru knew to link me to it.
It would be great if there were just a link on that drop down that said "install unpublished app" that linked through a to a simple readme on how to install your app without publishing it.
I would also advise that app installing/publishing be made as a guru card if its not already. This one post and the explanation on app OAuth was all I needed.
Your clarification of the fact there are two states for this was very helpful.
Thanks so much!
This can be marked as solved
Dan
Interesting point. In 2022 Shopify announced it was killing off unpublished apps. And it seems above workaround for Private apps allowing proxies is about to die by 05/05/2024 in a couple of weeks.
Now you have to have your app approved. But you as a dev don't have to make it appear in the app store (equivalent I guess).
So I guess it's the same but your bespoke application must be fully vetted and approved first.
I believe (but have not completed yet) that you need to meet all of the "General" rules in the guidelines regardless of publishing;
Probably any specific app type ones regardless of publishing too. But not sure what is required beyond this or if that's it (its already quite a lot)
So 🤷♂️
By any chance is this why my post requests to my app proxy url are suddenly failing now..? Last year my ajax calls to handle moving form submission data form shopify client to my external backend was working smoothly.. now they've all been throwing Bad Request errors and I have been trying to resolve this for almost a month now.. does anybody know what changed???