{
  "name": "Daily Hydration Hug \ud83d\udca7",
  "nodes": [
    {
      "id": "trigger-schedule",
      "name": "Every Day at 10 AM & 3 PM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "\ud83d\udd52 Schedule: Daily Wellness Nudges\n\nTriggers the workflow twice daily:\n- 10:00 AM\n- 3:00 PM\n\n\ud83d\udd39 Set timezone in Make settings to match your community.\n\nThis is the heartbeat of the hydration reminder system.",
      "position": [
        250,
        300
      ],
      "parameters": {},
      "typeVersion": 1,
      "notesAlignment": "top"
    },
    {
      "id": "random-gif-picker",
      "name": "Pick Random GIF",
      "type": "n8n-nodes-base.set",
      "notes": "\ud83d\uddbc\ufe0f Random GIF Selector\n\nRotates through a curated list of calming hydration-themed GIFs.\n\n\ud83d\udca1 Hosted on Giphy, Imgur, or CDN.\n\nExample URLs:\n- https://media.giphy.com/.../water.gif\n- https://example.com/hug.gif\n\nYou can expand the list for seasonal variety.",
      "position": [
        500,
        300
      ],
      "inputNames": [
        "GIFs"
      ],
      "parameters": {},
      "outputNames": [
        "With GIF"
      ],
      "notesAlignment": "top"
    },
    {
      "id": "send-slack-message",
      "name": "Send to Slack",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "\ud83d\udce4 Send Message to Slack\n\nPosts a friendly hydration reminder with:\n- Soothing text\n- Random GIF (accessory)\n\n\u2705 Uses Slack's Block Kit for rich formatting.\n\n\ud83d\udd27 Replace URL with Discord webhook if needed.",
      "position": [
        750,
        250
      ],
      "parameters": {},
      "notesAlignment": "top"
    },
    {
      "id": "send-discord-message",
      "name": "Send to Discord",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "\ud83d\udce4 Send Message to Discord\n\nSends a clean, embed-based message with hydration GIF.\n\n\ud83c\udfa8 Color: Soft blue (#2C7873 \u2192 2899551)\n\n\ud83d\udca1 Use only one send node (Slack OR Discord) unless routing dynamically.",
      "position": [
        750,
        350
      ],
      "parameters": {},
      "notesAlignment": "top"
    },
    {
      "id": "wait-24-hours",
      "name": "Wait 24 Hours",
      "type": "n8n-nodes-base.wait",
      "notes": "\u23f8\ufe0f Wait for Reactions\n\nPauses 24 hours to allow members to react with \u2705.\n\n\ud83d\udd39 You can reduce to 12h for faster cycles.\n\n\u26a0\ufe0f Do not skip: needed to capture engagement.",
      "position": [
        1000,
        300
      ],
      "parameters": {},
      "notesAlignment": "top"
    },
    {
      "id": "fetch-reactions-slack",
      "name": "Get Slack Reactions",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "\ud83d\udd0d Fetch Slack Reactions\n\nUses Slack API to check if \u2705 was added.\n\n\ud83d\udd10 Requires Bot Token with:\n- reactions:read\n- channels:read\n\n\ud83d\udca1 Store message timestamp from initial post.",
      "position": [
        1250,
        250
      ],
      "parameters": {},
      "notesAlignment": "top"
    },
    {
      "id": "filter-yes-reactions",
      "name": "Filter \u2705 Reactions",
      "type": "n8n-nodes-base.switch",
      "notes": "\u2705 Filter for Checkmark Reactions\n\nOnly continues if at least one \u2705 (white_check_mark) was added.\n\n\ud83d\udd27 You can add more emoji filters (e.g., \ud83d\udca7, \ud83e\udef6) for expanded tracking.",
      "position": [
        1500,
        300
      ],
      "parameters": {},
      "notesAlignment": "top"
    },
    {
      "id": "airtable-log-reaction",
      "name": "Log in Airtable",
      "type": "n8n-nodes-base.airtable",
      "notes": "\ud83d\udcca Log Reaction in Airtable\n\nSaves each \u2705 reaction as a new record.\n\n\ud83d\udd01 Used later to generate monthly 'Hydration Heroes' leaderboard.\n\n\ud83d\udca1 Link to user profiles or add tags for segmentation.",
      "position": [
        1750,
        300
      ],
      "parameters": {},
      "notesAlignment": "top"
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "none",
    "saveDataError": "all",
    "executionOrder": "parallel",
    "saveDataSuccess": "all"
  },
  "connections": {
    "Send to Slack": {
      "main": [
        [
          {
            "node": "Wait 24 Hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 24 Hours": {
      "main": [
        [
          {
            "node": "Get Slack Reactions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pick Random GIF": {
      "main": [
        [
          {
            "node": "Send to Slack",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send to Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send to Discord": {
      "main": [
        [
          {
            "node": "Wait 24 Hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Slack Reactions": {
      "main": [
        [
          {
            "node": "Filter \u2705 Reactions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter \u2705 Reactions": {
      "main": [
        [
          {
            "node": "Log in Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Day at 10 AM & 3 PM": {
      "main": [
        [
          {
            "node": "Pick Random GIF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}