Configuring Shopify Flow for Business Process Automation
Shopify Flow is a built-in no-code automation tool available on Basic and higher plans. Works with "trigger → condition → action" scheme: an event in the store triggers a sequence that checks conditions and performs operations.
Flow architecture
Each workflow consists of three components:
Trigger — event that starts the workflow:
-
Order created/Order paid/Order fulfilled -
Order risk analyzed -
Customer created/Customer updated -
Inventory quantity changed -
Product created/Product updated -
Scheduled time— by schedule (hourly, daily, weekly) - Custom trigger from app
Condition — branching logic (And/Or, nesting):
- Check order fields: total, tag, country, shipping method
- Check customer tags
- Check metafields
- Number of customer orders
- Fraud risk
Action — what to do when conditions are met:
- Add/remove tag (order, customer, product)
- Send email (via Shopify Email)
- Send HTTP request (webhook to custom endpoint)
- Create task in Shopify
- Pause order
- Cancel order
- Archive order
- Actions from integrated apps (Slack, Asana, HubSpot)
Practical workflow examples
Auto-mark VIP customers
Trigger: Order paid
Condition: Customer total spent > 50000 RUB AND Customer tags does not contain 'vip'
Action: Add tag 'vip' to customer → Send internal email "New VIP customer"
Fraud scoring for high-risk orders
Trigger: Order risk analyzed
Condition: Order risk level = HIGH
Action 1: Add tag 'high-risk' to order
Action 2 (if order amount > 10000): Hold order fulfillment → Send Slack notification #risk-team
Low inventory notification
Trigger: Inventory quantity changed
Condition: Inventory quantity < 5 AND Product tag contains 'track-inventory'
Action: Send HTTP request → internal endpoint for creating purchase task
Auto-archive completed orders
Trigger: Scheduled time (daily at 2:00 AM)
Action: Archive orders (filter status = fulfilled, older than 30 days)
Setting up HTTP request action
The most flexible action is sending webhook to external service. Example receiver in Node.js:
// routes/shopify-flow-webhook.js
const express = require('express');
const router = express.Router();
router.post('/flow/low-inventory', async (req, res) => {
// Flow sends data in JSON format
const { product_id, variant_id, inventory_quantity, sku } = req.body;
// Creating task in Notion/Jira/Trello/your system
await createPurchaseTask({
title: `Replenish stock: ${sku}`,
quantity_needed: 20 - inventory_quantity,
priority: inventory_quantity === 0 ? 'urgent' : 'normal',
product_id,
});
// Notification to buyer in Telegram
await sendTelegramMessage(
process.env.BUYER_CHAT_ID,
`⚠️ Low inventory: ${sku} (${inventory_quantity} items)\nNeed to order from supplier`
);
res.status(200).json({ received: true });
});
In Flow HTTP action settings, specify URL, method (POST), headers (including Authorization) and request body with variables from trigger.
Variables in Flow
Variables from trigger context are available in actions via dot-notation:
{{order.name}} → #1042
{{order.total_price}} → 4590.00







