One-time bulk unpublish script for zero-stock Shopify products — Budget €50

I need a simple, one-time Admin API script run on my Shopify store (notionz.ie) to unpublish all products from the Online Store sales channel where every variant currently has zero inventory.

Scope — exactly this, nothing more:

  • Query all products where all variants have inventoryQuantity ≤ 0
  • Set those products to unpublished on the Online Store channel only
  • Provide a count of products affected before and after
  • Done in a single session, no ongoing access required

What’s already in place:

  • Shopify Flow is set up to handle unpublishing/republishing automatically going forward
  • This is purely a one-time backfill to sync current zero-stock products

What I need from you:

  • Fixed price (€50 budget — this is a simple script, not a project)
  • Brief explanation of how you’ll do it before I agree
  • Completed within 48 hours

Not looking for: theme work, app recommendations, or ongoing retainer at this stage — though I am open to building a long-term relationship with the right person.

Please reply with your approach and confirmation you can work within the budget.

How many products in total you have?

Feeding your Scope into Sidekick produces a reasonable flow.

If you have less than 100 products, run it once.
If more, repeat flow runs several times…

Here is the generated Flow – I’ve added a branch to count query results and e-mail yourself if another run is needed:

Re-runs can be automated as well, but I doubt it is necessary for one-time backfill.

Automated totals may be problematic with Flow – because of the 100 values query limits, but can easily be obtained from Sideckick, I believe or Reports…

Let me know if you have further questions.

Sidekick summary prompt

more than 3000 products.

Means 30 runs at most.

It’s possible to make it to re-run automatically.

However, I’d perform one run, check how long does it take (say 5 minutes) and schedule it to run, say every 10 minutes (adjust accordingly).
Then later you check your e-mail to see those “Need another run” e-mails stopped and disable the flow.

Basically, the query should return only those products you want unpublished, (“published, but no stock”), so every run should unpublish all of them.

This way you’d get your totals.

It would be 100* number of runs except last plus whatever was in the last run – this you can see either in flow run log, or include the count in e-mail body.

Yes, I can complete this within your €50 budget and deliver it within 48 hours.

Approach:

  • Use the Shopify Admin API to fetch all products and check variant inventory.
  • Identify products where every variant has zero inventory.
  • Unpublish those products from the Online Store sales channel only, leaving other sales channels untouched.
  • Provide a report with the number of products affected before and after the update.

This is a one-time script with no ongoing access or maintenance required. Happy to help and potentially support future Shopify tasks as well.

Depending on plan you can also try asking the sidekick-AI if it can create custom admin app to do this.

Otherwise reach out to me, click profile pic for details, and let me know if you want this written in Python or Javascript.
You’ll be the one setting up and managing security of the api keys from your custom app; Yes some form of “app” is required for YOU to setup to access the api in the admin or using the dev dashboard.

Hi,

Yes, I can do this.

My approach is to use the Shopify Admin GraphQL API to fetch products in batches and check the inventory of every variant. If all variants of a product have an inventory quantity of 0 or less, I’ll add that product to the update list.

Before making any changes, I’ll provide the total number of matching products. Then I’ll unpublish those products only from the Online Store sales channel, so any other sales channels will remain unaffected. After the script completes, I’ll verify the results and share the final count of products that were successfully unpublished.

This will be a one-time script, with no app installation, no theme changes, and no ongoing access required.

Also, I’d like to do this free of charge. I’m not looking to make money from this small task—I would rather build a long-term working relationship. I believe the quality of my work and my approach will show you what I can deliver.

If you’re happy with this approach, I can get started right away.