Using Shopify Admin API after Long-Running External Worker Task (Remix)

Topic summary

Goal: After long-running external worker tasks in a Remix-based Shopify app, update product metadata via the Shopify Admin API.

Approaches considered:

  • Instantiate a Shopify Admin client in the external worker, using an auth token provided with each queued message, to perform metadata updates.
  • Use an App Proxy (shop.myshopify.com/apps/proxy) so the worker sends an HTTP request that is authenticated via the shop and then updates metadata via an Admin client.
  • Webhooks are not suitable because custom events cannot be defined for this workflow.

Latest update: Attempting the App Proxy approach in development failed. On a development store that requires a password, POST requests to /apps/proxy are redirected to GET /password, preventing testing.

Status: Unresolved. The developer is seeking a viable method to perform Admin API updates from an external worker and a way to test this flow in development given App Proxy password redirects. Key questions remain on the best practice for authentication and dev-mode testing.

Summarized with AI on January 3. AI used: gpt-5.

Hi,

I am building a Shopify App using Remix and I am not sure what is the right way to make my app react to external events.

In the app, I fetch all the merchant’s products and for each of them, I push a message in an external redis message queue. Then I have a Worker that consume the messages and do some long processing (that’s why I use a queue).

At the end of each task, I would like to update the product’s metadata. What would be the right way to do this?

Until now, I found a few options but I am not sure which one is the more accomodant:

  1. In the external Worker, I instanciate a Shopify Admin Client and authenticate it (token would be passed in the message), then I could update the product’s metadata.

  2. Use an App proxy - From the external worker I would make an HTTP Request to the shop shopifydomain.com/apps/proxy which would redirect the authenticated request back to my worker endpoint, then I could instanciate a Shopify Admin Client and update the product’s metadata.

  3. Webhooks doesnt look to be an option as we can’t create custom events?

  4. Any other ideas?

Thank you for your help!

Update: I went with the 2) and found out it’s not possible to test in development mode.

Because the store is in development, there must be a password. When I try to hit a POST myshopifydomain.com/apps/proxy it gets redirected to GET /password