{
  "name": "Weekly pipeline digest",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            { "field": "weeks", "triggerAtDay": [1], "triggerAtHour": 8, "triggerAtMinute": 0 }
          ]
        }
      },
      "id": "9a4c1e50-7d6f-4e31-8b4c-6e3d44f4d001",
      "name": "Monday 08:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [-260, 0]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://example.com/api/deals?updated_since=7d",
        "options": {}
      },
      "id": "9a4c1e50-7d6f-4e31-8b4c-6e3d44f4d002",
      "name": "Fetch last 7 days",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [-40, 0]
    },
    {
      "parameters": {
        "jsCode": "const deals = $input.first().json.deals || [];\nconst byStage = {};\nlet stalled = 0;\n\nfor (const deal of deals) {\n  byStage[deal.stage] = (byStage[deal.stage] || 0) + 1;\n  const days = (Date.now() - new Date(deal.last_activity_at).getTime()) / 86400000;\n  if (days > 14) stalled += 1;\n}\n\nconst lines = Object.entries(byStage)\n  .sort((a, b) => b[1] - a[1])\n  .map(([stage, count]) => `${stage}: ${count}`);\n\nreturn [{\n  json: {\n    total: deals.length,\n    stalled,\n    summary: lines.join('\\n'),\n  },\n}];"
      },
      "id": "9a4c1e50-7d6f-4e31-8b4c-6e3d44f4d003",
      "name": "Count by stage",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [180, 0]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": { "__rl": true, "value": "#sales", "mode": "name" },
        "text": "=Pipeline this week\\n\\nOpen deals: {{ $json.total }}\\nNo activity in 14 days: {{ $json.stalled }}\\n\\n{{ $json.summary }}",
        "otherOptions": {}
      },
      "id": "9a4c1e50-7d6f-4e31-8b4c-6e3d44f4d004",
      "name": "Post to Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [420, 0]
    }
  ],
  "connections": {
    "Monday 08:00": { "main": [[{ "node": "Fetch last 7 days", "type": "main", "index": 0 }]] },
    "Fetch last 7 days": { "main": [[{ "node": "Count by stage", "type": "main", "index": 0 }]] },
    "Count by stage": { "main": [[{ "node": "Post to Slack", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" },
  "active": false,
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false,
    "source": "godesigntech.com free n8n template library"
  }
}
