AutomationFlowsWeb Scraping › Automate Sales Order Prioritization with Erp-wms-tms Integration Based on…

Automate Sales Order Prioritization with Erp-wms-tms Integration Based on…

Original n8n title: Automate Sales Order Prioritization with Erp-wms-tms Integration Based on Sla Tiers

ByOneclick AI Squad @oneclick-ai on n8n.io

This n8n workflow automates the prioritization and scheduling of sales orders based on customer SLAs, urgency, and profitability. It ensures that high-priority and SLA-critical orders are picked, packed, and dispatched first—improving fulfillment speed, customer satisfaction,…

Cron / scheduled trigger★★★★☆ complexity22 nodesHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 22 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #10533 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "o907NaeC17Uw78Jv",
  "name": "Sales Order Prioritization Based on Customer SLA",
  "tags": [],
  "nodes": [
    {
      "id": "fed36f3d-9961-48ce-b978-016bd12a8454",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        1280
      ],
      "parameters": {
        "width": 352,
        "height": 800,
        "content": "## Overview\nAutomates sales order prioritization using customer SLA tiers, urgency, value, and margin. Critical orders trigger immediate alerts & tasks; normal orders are batched, scheduled, dispatched, and reported.\n\n## How it works\n1. **Trigger** every 15 min \u2192 fetch pending orders.\n2. **Enrich** with SLA data \u2192 calculate priority scores.\n3. **Branch**: critical \u2192 urgent task + alert; else \u2192 batch & schedule.\n4. **Schedule** picking/dispatch \u2192 update ERP \u2192 send summary.\n\n## Setup steps\n1. Replace all `https://your-*.com` URLs with real endpoints.\n2. Add API credentials (header auth shown for alerts).\n3. Adjust batch size, weights, or scheduling logic in Code nodes if needed.\n4. Activate workflow.\n\n(\u2248180 words)"
      },
      "typeVersion": 1
    },
    {
      "id": "db57d111-77d4-4199-9285-5af954bd0049",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        816,
        1504
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "*/15 * * * *"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "867bf758-971b-4450-97e5-26e77489d626",
      "name": "Fetch Pending Orders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1040,
        1504
      ],
      "parameters": {
        "url": "https://your-erp.com/api/orders",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "status",
              "value": "pending,confirmed"
            },
            {
              "name": "limit",
              "value": "100"
            }
          ]
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "096bd3fd-85cc-4449-8837-14be45277738",
      "name": "Fetch Customer SLA Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1264,
        1504
      ],
      "parameters": {
        "url": "https://your-erp.com/api/customers/batch",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ { \"customer_ids\": $json.orders.map(o => o.customer_id) } }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "5b32443d-c53a-4ebe-b6c9-6efc2f9d9248",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1232,
        1344
      ],
      "parameters": {
        "color": 5,
        "width": 630,
        "height": 384,
        "content": "\ud83d\udc65 pending orders Retrieves customer SLA tiers Delivery timeframes & priorities than\n\ud83c\udfaf Calculates priority scores Urgency 40% + Tier 30% + Value 20% + Margin 10% after we get calculates \u26a0\ufe0f Identifies critical orders\nSLA breach = Immediate action"
      },
      "typeVersion": 1
    },
    {
      "id": "6b358de4-cb68-4d1b-87be-1b19f3b239a5",
      "name": "Calculate Priority Scores",
      "type": "n8n-nodes-base.code",
      "position": [
        1488,
        1504
      ],
      "parameters": {
        "jsCode": "const ordersData = $input.all()[0].json;\nconst customersData = $input.all()[1].json;\n\nconst customerSLAMap = {};\nif (customersData.customers) {\n  customersData.customers.forEach(customer => {\n    customerSLAMap[customer.customer_id] = {\n      sla_tier: customer.sla_tier || 'bronze',\n      delivery_days: customer.delivery_days || 7,\n      priority_multiplier: customer.priority_multiplier || 1,\n      profit_margin: customer.profit_margin || 20\n    };\n  });\n}\n\nconst tierWeights = {\n  'platinum': 100,\n  'gold': 75,\n  'silver': 50,\n  'bronze': 25,\n  'standard': 10\n};\n\nconst enrichedOrders = ordersData.orders.map(order => {\n  const customerSLA = customerSLAMap[order.customer_id] || {\n    sla_tier: 'bronze',\n    delivery_days: 7,\n    priority_multiplier: 1,\n    profit_margin: 20\n  };\n  \n  const orderDate = new Date(order.created_at);\n  const slaDeadline = new Date(orderDate);\n  slaDeadline.setDate(slaDeadline.getDate() + customerSLA.delivery_days);\n  const daysUntilBreach = Math.ceil((slaDeadline - new Date()) / (1000 * 60 * 60 * 24));\n  \n  const urgencyScore = daysUntilBreach <= 0 ? 1000 : (100 / Math.max(daysUntilBreach, 1));\n  const tierScore = tierWeights[customerSLA.sla_tier.toLowerCase()] || 10;\n  const valueScore = Math.min((order.total_amount || 0) / 100, 100);\n  const marginScore = (customerSLA.profit_margin || 20);\n  \n  const priorityScore = Math.round(\n    (urgencyScore * 0.4) + \n    (tierScore * 0.3) + \n    (valueScore * 0.2) + \n    (marginScore * 0.1)\n  ) * customerSLA.priority_multiplier;\n  \n  let urgencyLevel = 'normal';\n  if (daysUntilBreach <= 0) urgencyLevel = 'critical';\n  else if (daysUntilBreach <= 1) urgencyLevel = 'urgent';\n  else if (daysUntilBreach <= 2) urgencyLevel = 'high';\n  \n  return {\n    ...order,\n    sla_info: {\n      tier: customerSLA.sla_tier,\n      delivery_days: customerSLA.delivery_days,\n      deadline: slaDeadline.toISOString(),\n      days_until_breach: daysUntilBreach,\n      urgency_level: urgencyLevel\n    },\n    scoring: {\n      priority_score: priorityScore,\n      urgency_score: Math.round(urgencyScore),\n      tier_score: tierScore,\n      value_score: Math.round(valueScore),\n      margin_score: marginScore\n    },\n    profit_margin: customerSLA.profit_margin\n  };\n});\n\nenrichedOrders.sort((a, b) => b.scoring.priority_score - a.scoring.priority_score);\n\nreturn enrichedOrders.map(order => ({ json: order }));"
      },
      "typeVersion": 2
    },
    {
      "id": "b602f629-fbac-49a4-86d5-9281da31e1ca",
      "name": "Check if SLA Critical",
      "type": "n8n-nodes-base.if",
      "position": [
        1712,
        1504
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.sla_info.days_until_breach }}",
              "operation": "smallerEqual"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5cba1751-15e4-4d4c-bcfd-c28cae3db6f6",
      "name": "Create Urgent Picking Task",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1936,
        1408
      ],
      "parameters": {
        "url": "https://your-wms.com/api/picking-tasks/urgent",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ {\n  \"order_id\": $json.order_id,\n  \"priority\": \"critical\",\n  \"sla_deadline\": $json.sla_info.deadline,\n  \"customer_tier\": $json.sla_info.tier,\n  \"items\": $json.items,\n  \"warehouse_location\": $json.warehouse_id || \"MAIN\",\n  \"notes\": \"URGENT: SLA breach in \" + $json.sla_info.days_until_breach + \" days\",\n  \"assign_to\": \"senior_picker\",\n  \"auto_schedule\": true\n} }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "f1e04e3e-af01-4dc5-966d-c263901fa1f0",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        1280
      ],
      "parameters": {
        "color": 7,
        "width": 438,
        "height": 320,
        "content": "\ud83d\udea8 Creates urgent task Assign to senior picker immediately tha \ud83d\udcf1 Alerts manager via SMS + Email High priority notification"
      },
      "typeVersion": 1
    },
    {
      "id": "de7fa61a-28ee-4f68-8d31-d4dc5167d69a",
      "name": "Alert Warehouse Manager",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2160,
        1408
      ],
      "parameters": {
        "url": "https://your-notification-service.com/api/send",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ {\n  \"channel\": \"sms,email\",\n  \"recipient\": \"warehouse-manager@company.com\",\n  \"priority\": \"high\",\n  \"subject\": \"\ud83d\udea8 CRITICAL SLA Alert - \" + $json.order_id,\n  \"body\": \"Critical order! Order: \" + $json.order_id + \" | Tier: \" + $json.sla_info.tier + \" | Breach: \" + Math.abs($json.sla_info.days_until_breach) + \" days | Value: $\" + $json.total_amount\n} }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.1
    },
    {
      "id": "3f2ee818-d814-4520-86e2-1d3caf5a4f86",
      "name": "Batch Normal Orders",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1936,
        1872
      ],
      "parameters": {
        "options": {},
        "batchSize": 10
      },
      "typeVersion": 3
    },
    {
      "id": "599c9d46-8038-4aa8-a12a-eae69c7a95d0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        1680
      ],
      "parameters": {
        "color": 2,
        "width": 422,
        "height": 352,
        "content": "\ud83d\udce6 Batches orders in groups of 10 Optimizes processing after execution \ud83d\udcc5 Smart scheduling by urgency High: 4hrs | Normal: Today | Low: 2-3 days"
      },
      "typeVersion": 1
    },
    {
      "id": "a987eb38-c86a-4fe5-b34e-2c0c41cc6031",
      "name": "Generate Picking Schedule",
      "type": "n8n-nodes-base.code",
      "position": [
        2176,
        1872
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst ordersByUrgency = {\n  high: [],\n  normal: [],\n  low: []\n};\n\nitems.forEach(item => {\n  const order = item.json;\n  const urgency = order.sla_info.urgency_level;\n  \n  if (urgency === 'high' || urgency === 'urgent') {\n    ordersByUrgency.high.push(order);\n  } else if (order.sla_info.days_until_breach <= 4) {\n    ordersByUrgency.normal.push(order);\n  } else {\n    ordersByUrgency.low.push(order);\n  }\n});\n\nconst now = new Date();\nconst schedules = [];\n\nordersByUrgency.high.forEach((order, index) => {\n  const scheduledTime = new Date(now.getTime() + (index * 30 * 60000));\n  schedules.push({\n    ...order,\n    scheduled_time: scheduledTime.toISOString(),\n    time_slot: 'high_priority',\n    estimated_pick_duration: 45\n  });\n});\n\nordersByUrgency.normal.forEach((order, index) => {\n  const scheduledTime = new Date(now.getTime() + ((index + 8) * 60 * 60000));\n  schedules.push({\n    ...order,\n    scheduled_time: scheduledTime.toISOString(),\n    time_slot: 'normal',\n    estimated_pick_duration: 30\n  });\n});\n\nordersByUrgency.low.forEach((order, index) => {\n  const scheduledTime = new Date(now.getTime() + ((index + 24) * 60 * 60000));\n  schedules.push({\n    ...order,\n    scheduled_time: scheduledTime.toISOString(),\n    time_slot: 'standard',\n    estimated_pick_duration: 30\n  });\n});\n\nreturn [{ json: { \n  schedules: schedules, \n  summary: {\n    total_orders: schedules.length,\n    high_priority: ordersByUrgency.high.length,\n    normal_priority: ordersByUrgency.normal.length,\n    low_priority: ordersByUrgency.low.length\n  }\n}}];"
      },
      "typeVersion": 2
    },
    {
      "id": "aff8f182-17c2-4762-943e-ebc7b7cfc1cb",
      "name": "Create Bulk Picking Tasks",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2384,
        1600
      ],
      "parameters": {
        "url": "https://your-wms.com/api/picking-tasks/bulk",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ {\n  \"tasks\": $json.schedules.map(order => ({\n    order_id: order.order_id,\n    customer_id: order.customer_id,\n    priority: order.sla_info.urgency_level,\n    scheduled_time: order.scheduled_time,\n    estimated_duration: order.estimated_pick_duration,\n    sla_deadline: order.sla_info.deadline,\n    items: order.items,\n    warehouse_location: order.warehouse_id || \"MAIN\",\n    notes: \"Tier: \" + order.sla_info.tier + \" | Score: \" + order.scoring.priority_score\n  })),\n  \"auto_assign\": true,\n  \"optimize_route\": true\n} }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "ac398148-10e9-4064-9f1c-73c75956831a",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2336,
        1488
      ],
      "parameters": {
        "color": 5,
        "width": 1334,
        "height": 320,
        "content": "Creates tasks in WMS (auto-assign + route optimize) \u2192 Plans shipments (Express/Priority/Standard) \u2192 Sends to TMS (book carriers + reserve capacity) \u2192 Updates ERP (status, schedule, deadlines) \u2192 Generates summary report (stats, breakdowns, next deadlines) \u2192 Emails ops team (execution summary)."
      },
      "typeVersion": 1
    },
    {
      "id": "107fd068-d573-448e-8d4a-9f9f526d4d5f",
      "name": "Generate Dispatch Schedule",
      "type": "n8n-nodes-base.code",
      "position": [
        2608,
        1600
      ],
      "parameters": {
        "jsCode": "const scheduleData = $input.first().json;\nconst pickingTasks = $input.all()[1].json;\n\nconst dispatchSchedule = scheduleData.schedules.map(order => {\n  const pickingTime = new Date(order.scheduled_time);\n  const dispatchTime = new Date(pickingTime.getTime() + \n    ((order.estimated_pick_duration + 45) * 60000));\n  \n  let shippingMethod = 'standard';\n  if (order.sla_info.urgency_level === 'critical' || order.sla_info.urgency_level === 'urgent') {\n    shippingMethod = 'express';\n  } else if (order.sla_info.urgency_level === 'high') {\n    shippingMethod = 'priority';\n  }\n  \n  return {\n    order_id: order.order_id,\n    customer_id: order.customer_id,\n    dispatch_time: dispatchTime.toISOString(),\n    shipping_method: shippingMethod,\n    carrier: order.preferred_carrier || 'auto_select',\n    sla_deadline: order.sla_info.deadline,\n    priority: order.scoring.priority_score,\n    customer_tier: order.sla_info.tier\n  };\n});\n\nconst dispatchSlots = {};\ndispatchSchedule.forEach(dispatch => {\n  const hour = new Date(dispatch.dispatch_time).toISOString().slice(0, 13);\n  if (!dispatchSlots[hour]) dispatchSlots[hour] = [];\n  dispatchSlots[hour].push(dispatch);\n});\n\nreturn [{ json: {\n  dispatch_schedule: dispatchSchedule,\n  dispatch_slots: dispatchSlots,\n  total_dispatches: dispatchSchedule.length\n}}];"
      },
      "typeVersion": 2
    },
    {
      "id": "c53642b0-6cd8-4570-bc1a-aa00f5abf420",
      "name": "Schedule Dispatches in TMS",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2832,
        1600
      ],
      "parameters": {
        "url": "https://your-tms.com/api/dispatch/schedule",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "8c114593-3f39-4962-a4d3-e478eb5a4c9f",
      "name": "Update Order Statuses",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3056,
        1600
      ],
      "parameters": {
        "url": "https://your-erp.com/api/orders/update-bulk",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ {\n  \"updates\": $input.first().json.schedules.map(order => ({\n    order_id: order.order_id,\n    status: \"scheduled\",\n    priority_score: order.scoring.priority_score,\n    urgency_level: order.sla_info.urgency_level,\n    scheduled_pick_time: order.scheduled_time,\n    sla_deadline: order.sla_info.deadline,\n    updated_at: new Date().toISOString()\n  }))\n} }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "0770cd61-31d9-4cbe-b225-a41c5b1eaeec",
      "name": "Generate Summary Report",
      "type": "n8n-nodes-base.code",
      "position": [
        3280,
        1600
      ],
      "parameters": {
        "jsCode": "const scheduleData = $input.all()[0].json;\nconst dispatchData = $input.all()[1].json;\nconst updateResponse = $input.all()[2].json;\n\nconst summary = {\n  execution_time: new Date().toISOString(),\n  orders_processed: scheduleData.summary.total_orders,\n  priority_breakdown: {\n    critical: scheduleData.schedules.filter(o => o.sla_info.urgency_level === 'critical').length,\n    urgent: scheduleData.schedules.filter(o => o.sla_info.urgency_level === 'urgent').length,\n    high: scheduleData.summary.high_priority,\n    normal: scheduleData.summary.normal_priority,\n    low: scheduleData.summary.low_priority\n  },\n  sla_tiers: {\n    platinum: scheduleData.schedules.filter(o => o.sla_info.tier === 'platinum').length,\n    gold: scheduleData.schedules.filter(o => o.sla_info.tier === 'gold').length,\n    silver: scheduleData.schedules.filter(o => o.sla_info.tier === 'silver').length,\n    bronze: scheduleData.schedules.filter(o => o.sla_info.tier === 'bronze').length\n  },\n  picking_tasks_created: scheduleData.summary.total_orders,\n  dispatches_scheduled: dispatchData.total_dispatches,\n  next_critical_deadline: scheduleData.schedules\n    .filter(o => o.sla_info.urgency_level === 'critical')\n    .sort((a, b) => new Date(a.sla_info.deadline) - new Date(b.sla_info.deadline))[0]?.sla_info.deadline || 'None'\n};\n\nreturn [{ json: summary }];"
      },
      "typeVersion": 2
    },
    {
      "id": "56d8fefd-1541-4792-acf5-61011feb4e5c",
      "name": "Send Summary Notification",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3504,
        1600
      ],
      "parameters": {
        "url": "https://your-notification-service.com/api/send",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ {\n  \"recipient\": \"operations@company.com\",\n  \"subject\": \"\u2705 SLA Prioritization Complete\",\n  \"body\": \"Orders: \" + $json.orders_processed + \" | Critical: \" + $json.priority_breakdown.critical + \" | Urgent: \" + $json.priority_breakdown.urgent + \" | High: \" + $json.priority_breakdown.high + \" | Tasks: \" + $json.picking_tasks_created + \" | Dispatches: \" + $json.dispatches_scheduled,\n  \"priority\": \"normal\"\n} }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.1
    },
    {
      "id": "fedd9164-d9fa-4081-a932-6a85b3cefe6a",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        789,
        1408
      ],
      "parameters": {
        "color": 5,
        "width": 422,
        "height": 272,
        "content": "\u23f0 Runs every 15 minutes Fetches pending orders than \ud83d\udce5 Gets pending/confirmed orders Limit: 100 per run"
      },
      "typeVersion": 1
    },
    {
      "id": "1b8f961e-92d8-46f1-b238-4e2cc6786485",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3808,
        1312
      ],
      "parameters": {
        "width": 464,
        "height": 800,
        "content": "## Overview\n\n\nAutomates sales order prioritization using customer SLAs, inventory status, and margin criteria. Plans shipments, creates WMS & TMS tasks, and notifies teams automatically once scheduled, dispatched, and reported.\n\n**How it works**\n\nTrigger runs every 15 min to fetch pending orders.\n\nEnrich data with SLA to calculate priority score.\n\nBranch logic: urgent \u2192 alert & create tasks; normal \u2192 batch schedule.\n\nDispatch info pushed to ERP & digital channels.\n\nSetup steps\n\nReplace URLs with your API endpoints.\n\nAdd authentication headers as shown for each HTTP node.\n\nAdjust cron, logic, weights, or scheduling as required.\n\nActivate workflow.\n\n**Output**\n\n\u2705 WMS & TMS tasks created (with assigned users & routes)\n\ud83d\ude9a Shipments planned & booked (Express / Priority / Standard)\n\ud83d\udcbe ERP updated (status, schedules, deadlines)\n\ud83d\udcca Summary report generated (stats, breakdowns, next deadlines)\n\ud83d\udce7 Execution summary emailed to ops team"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9709981c-1cb1-4576-8255-659696bd76bf",
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Fetch Pending Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Batch Normal Orders": {
      "main": [
        [
          {
            "node": "Generate Picking Schedule",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Pending Orders": {
      "main": [
        [
          {
            "node": "Fetch Customer SLA Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if SLA Critical": {
      "main": [
        [
          {
            "node": "Create Urgent Picking Task",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Batch Normal Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Order Statuses": {
      "main": [
        [
          {
            "node": "Generate Summary Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Alert Warehouse Manager": {
      "main": [
        [
          {
            "node": "Create Bulk Picking Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Customer SLA Data": {
      "main": [
        [
          {
            "node": "Calculate Priority Scores",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Summary Report": {
      "main": [
        [
          {
            "node": "Send Summary Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Priority Scores": {
      "main": [
        [
          {
            "node": "Check if SLA Critical",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Bulk Picking Tasks": {
      "main": [
        [
          {
            "node": "Generate Dispatch Schedule",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Picking Schedule": {
      "main": [
        [
          {
            "node": "Create Bulk Picking Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Urgent Picking Task": {
      "main": [
        [
          {
            "node": "Alert Warehouse Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Dispatch Schedule": {
      "main": [
        [
          {
            "node": "Schedule Dispatches in TMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Dispatches in TMS": {
      "main": [
        [
          {
            "node": "Update Order Statuses",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n workflow automates the prioritization and scheduling of sales orders based on customer SLAs, urgency, and profitability. It ensures that high-priority and SLA-critical orders are picked, packed, and dispatched first—improving fulfillment speed, customer satisfaction,…

Source: https://n8n.io/workflows/10533/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o

HTTP Request, n8n, N8N Trigger +1
Web Scraping

This workflow is an improvement of this workflow by Greg Brzezinka.

HTTP Request, Email Send, XML +1
Web Scraping

N8N-Workflow-Github-Manager. Uses github, httpRequest, n8n. Scheduled trigger; 38 nodes.

GitHub, HTTP Request, n8n
Web Scraping

This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only.

N8N Nodes Klicktipp, Salesforce, Salesforce Trigger +1
Web Scraping

This workflow acts as an automated engagement bot. It sends a Direct Message (DM) with a link or resource to any follower who replies to your post with a specific target keyword.

HTTP Request