Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

Re: Working solution that replaces private apps url proxies?

Solved

Working solution that replaces private apps url proxies?

agentlewis
Shopify Partner
10 0 1

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:

 

  • Currently liquid forms only support the creation of new customers, one cannot edit an existing client. eg tag it and use the tag to trigger a downstream process in zapier or a web-hook.
  • All the form apps available in the store are quite prescriptive of the styling and also don't allow you to access your liquid variables.
  • The forms don't actually integrate well with other systems - the default is it sends you an email, some go to mailchimp, a couple to zapier. but all in all its just not as good as being able to write your own code.

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: 

 

  • Use shogun or another app that enables you to embed code. Essentially you are using there url proxy to send the request.
  • Host my form on https://zeit.co/ or something similar and iframe it into my shopify theme.
  • Find a form app that gives you full access to the css
  • delete all the customer records who haven't purchased and add a note under the form for those who have that want to participate in the event to reach out via email and we will add them - lame huh! (probably what i am going to do)

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

Accepted Solution (1)

Busfox
Shopify Staff (Retired)
628 49 111

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.

View solution in original post

Replies 5 (5)

Busfox
Shopify Staff (Retired)
628 49 111

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.

agentlewis
Shopify Partner
10 0 1

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

Shopifocus
Shopify Partner
4 0 2
I noticed in this thread (. https://www.shopify.com/partners/blog/shopify-public-apps ) Shopify is guiding developers towards Custom Apps over private Apps. Is the proxy option available on a custom app?
jetblackstar1
Shopify Partner
8 0 3

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;

https://shopify.dev/docs/apps/store/requirements?syclid=coj5otkh33ns73951jsg&utm_medium=email&utm_so...

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 🤷‍♂️

aidendev
Shopify Partner
53 1 1

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???