Quick overview
This workflow runs daily to check Shopify for open, unfulfilled orders older than two days, classifies them by delay severity, posts a digest to Slack, logs each delayed order to Google Sheets, and emails an HTML summary report via Gmail.
How it works
- Runs every day at 08:00 (server time) on a schedule trigger.
- Calls the Shopify Admin REST API to fetch up to 250 open orders with
fulfillment_status=unfulfilled.
- Calculates each order’s age in days and extracts key details (customer, totals, items, and Shopify Admin order link).
- Filters to only orders delayed by 2+ days and labels each one as WARNING (2–4 days), CRITICAL (5–7 days), or ESCALATION (8+ days).
- Checks whether any delayed orders exist and stops without notifying if the delayed list is empty.
- Builds a Slack message grouped by severity and posts the delay digest to the configured Slack channel.
- Appends each delayed order as a row in a Google Sheets tracker, then aggregates the list and sends an HTML summary email via Gmail to the operations manager.
Setup
- Add Shopify Admin API credentials (HTTP header auth) and replace
YOUR_STORE in the Shopify API and admin order URLs with your store domain.
- Add Slack credentials and set the target channel ID in the Slack message step.
- Add Google Sheets credentials, set
YOUR_GOOGLE_SHEET_ID, and ensure the worksheet named “Fulfillment Delay Tracker” exists with matching columns.
- Add Gmail credentials and set
YOUR_OPS_MANAGER_EMAIL to the recipient address for the summary report.
- Adjust the cron schedule and the delay thresholds (2/5/8 days) in the filtering and severity rules if needed.