# Built a 15-workflow Shopify ops pack for non-devs - the edge cases that cost me the most time

**URL:** <https://community.n8n.io/t/built-a-15-workflow-shopify-ops-pack-for-non-devs-the-edge-cases-that-cost-me-the-most-time/317078>\
**Category:** Built with n8n\
**Created:** [September 28, 2026, 5:24am UTC](https://community.n8n.io/t/built-a-15-workflow-shopify-ops-pack-for-non-devs-the-edge-cases-that-cost-me-the-most-time/317078 "2026-09-28T05:24:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![support\_opscrate](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/support_opscrate/32/190391_2.png) [@support\_opscrate](https://community.n8n.io/u/support_opscrate)\
**Post date:** [September 28, 2026, 5:24am UTC](https://community.n8n.io/t/built-a-15-workflow-shopify-ops-pack-for-non-devs-the-edge-cases-that-cost-me-the-most-time/317078/1 "2026-09-28T05:24:12Z")

</div>

Hey everyone,

I built a set of 15 workflows covering the repetitive half of running a Shopify store: support replies, order alerts, low-stock warnings, abandoned cart recovery, and daily sales reports. The design constraint was unusual and it shaped everything: **the person importing these doesn’t write expressions and doesn’t read JSON.** Sharing what that constraint taught me, because most of it isn’t in the docs.

**The stack:** Shopify Trigger / Shopify node, HTTP Request, Slack, Gmail, SMTP, Schedule Trigger, Code, IF, plus Basic LLM Chain + OpenAI Chat Model for the AI steps. Native nodes only, on purpose - no community nodes, so everything behaves the same on Cloud and self-hosted.

**Five things that made the workflows survivable for non-devs:**

1. **One CONFIG node per workflow.** Every user-editable value (channel name, threshold, store name, tone) lives in a single Set node named `CONFIG - Edit Me First`, pinned next to a sticky note. Users never touch an expression. Hard rule: **no secrets in CONFIG** - API keys only in Credentials, never in a Set node that gets exported with the workflow.

2. **Schedule Trigger settings can’t come from CONFIG.** Obvious in hindsight: the trigger fires _before_ CONFIG runs, so “run at 8am” has to be edited on the trigger node itself. I document that explicitly instead of pretending it’s configurable.

3. **“Always output data” changes your math.** The daily sales report must send even on a zero-order day (silence reads as “is it broken?”). Setting the lookup to always output data fixes that - but the placeholder item then pollutes the count, and a zero-sales day reports _1 order_ instead of 0 until the aggregation filters it out. Worth noting it’s a node-level setting, not a parameter.

4. **A second lookup multiplies your data unless you pin it.** The report compares yesterday to the day before. Without `Execute Once` on the second lookup, it runs per incoming item and the day-before count gets multiplied by yesterday’s order count. Silent, plausible, wrong numbers - the worst kind of bug.

5. **Guest checkout breaks naive personalization.** POS and API-created orders often arrive with a customer object whose first/last name are empty strings - so a null check isn’t enough, and you ship “Hi undefined undefined”. Every template needs a defensive fallback. I only caught this in end-to-end testing against a real dev store; it never showed up while building.

A sixth one that’s a product decision rather than a technical trick: **decide per workflow whether silence is success.** The low-stock alert stays quiet when nothing is low. The daily report always sends. Same “no news” situation, opposite correct behaviour.

**The 4 free workflows** , JSON + a setup guide for each, MIT, no signup:

> **[GitHub - Luan-RAC/opscrate-free-workflows: Four free AI-powered n8n workflows for Shopify...](https://github.com/Luan-RAC/opscrate-free-workflows)**
>
> Four free AI-powered n8n workflows for Shopify store owners — order alerts, low stock, abandoned cart recovery and daily sales reports. MIT, with setup guides.

- New Order AI Notifier - one-line AI summary of each order to Slack or email
- Low Stock AI Alert - daily threshold check with AI-written reorder note
- Abandoned Cart AI Recovery - personalised recovery email, Gmail or SMTP
- Daily Sales Numbers - yesterday vs. the day before, AI commentary

Full disclosure: these are the free part of a paid 15-workflow pack I sell. The free four are complete and include the AI layer - the paid pack is breadth (11 more workflows), PDF guides and support, not a crippled-demo situation.

Happy to answer anything about the build - especially the aggregation edge case in #3 and #4, those two cost me an evening each.
