Automated Water Consumption Tracker - Stored in Sheet and Notify in Slack
# Water Reminder Workflow This workflow demonstrates how to use **n8n** and **Slack** to build an intelligent water drinking reminder system, combined with **Google Sheets** for data recording and **OpenAI** for generating personalized reminder messages. --- [Google Sheet Template](https://docs.google.com/spreadsheets/d/1cMf03l3Ae3vo-4w8yeaUvSh9dB7CLM7CFUb2y4BmqwY/edit?usp=sharing) The iOS shortcut template:  **The result in iOS health:**  [The template demo on YouTube](https://www.youtube.com/watch?v=h2_QO5gxdts) --- ## Key Features 1. **Scheduled Reminders**: Automatically sends water reminders at random times every hour. 2. **Intelligent Scheduling**: Delays the next reminder if you've recently had water. 3. **AI-Generated Messages**: Uses OpenAI to generate friendly and non-repetitive reminder messages. 4. **Data Tracking**: Records daily water intake and calculates the percentage of goal achievement. 5. **Quick Response**: Easily record water intake through Slack buttons. 6. **iOS Integration**: Provides iOS shortcut links to sync data with the Health app. --- ## Pre-Configuration Requirements To use this workflow, you need to set up the following: 1. **Google Sheets**: - Create a Google spreadsheet with `log` and `setting` sheets - The `log` sheet should include `date`, `time`, and `value` columns - The `setting` sheet is used to store daily water intake goals 2. **Slack**: - Create a Slack app and obtain an API token - Configure permissions for interactive buttons 3. **OpenAI**: - Obtain an OpenAI API key 4. **iOS Shortcut** (optional): - Create an iOS shortcut named `darrell_water` for recording health data --- ## Node Configurations ### 1. Scheduled Triggers and Data Collection #### 1.1. Schedule Trigger - **Purpose**: Triggers water reminders on schedule - **Configuration**: - **Cron Expression**: `0 {{ Math.floor(Math.random() * 11) }} 8-23 * * *` - Triggers at a random minute every hour, only between 8 AM and 11 PM #### 1.2. Google Sheets - Get Target - **Purpose**: Retrieves daily water intake goal - **Configuration**: - **Document ID**: Your Google spreadsheet ID - **Sheet Name**: `setting` #### 1.3. Google Sheets - Get Log - **Purpose**: Retrieves today's water intake records - **Configuration**: - **Document ID**: Your Google spreadsheet ID - **Sheet Name**: `log` - **Filter Condition**: `date` equals today's date `{{ $now.format(yyyy-MM-dd) }}` #### 1.4. Summarize - **Purpose**: Calculates total water intake for today - **Configuration**: - **Fields to Summarize**: `value` (sum) #### 1.5. Limit - **Purpose**: Gets the most recent water intake record - **Configuration**: - **Keep**: Last items --- ### 2. Intelligent Reminder Logic #### 2.1. Combine Data - **Purpose**: Merges target and actual water intake data - **Configuration**: - **Combine By**: Combine by position - **Number of Inputs**: 3 #### 2.2. If - **Purpose**: Checks if water was consumed recently - **Configuration**: - **Condition**: - `{{ DateTime.fromISO($json.date++$json.time).format(yyyy-MM-dd HH:mm:ss) }}` is after `{{ $now.minus(30, minutes) }}` #### 2.3. Wait - **Purpose**: Randomly delays the reminder if water was consumed recently - **Configuration**: - **Wait Time**: `{{ Math.floor(Math.random() * 1) + 1 }}` minutes --- ### 3. AI Message Generation and Sending #### 3.1. OpenAI - **Purpose**: Generates personalized water reminder messages - **Configuration**: - **Model**: `gpt-3.5-turbo` - **Messages**: - System prompt: Requests responses in Traditional Chinese and in JSON format - User prompt: Includes information about last water time, current time, goal, and progress - **Temperature**: 1 #### 3.2. Slack Send Drink Notification - **Purpose**: Sends water reminders to Slack channel - **Configuration**: - **Channel**: Your Slack channel ID - **Message Type**: Block - **Block UI**: Contains AI-generated reminder message and water amount buttons (100ml, 150ml, 200ml, 250ml, 300ml) --- ### 4. User Interaction and Data Recording #### 4.1. Slack Drink Webhook - **Purpose**: Receives user interactions when water buttons are clicked - **Configuration**: - **HTTP Method**: `POST` - **Path**: `slack-water-webhook` #### 4.2. Slack Action Payload - **Purpose**: Parses Slack interaction data - **Configuration**: - **Mode**: Raw - **JSON Output**: `{{ $json.body.payload }}` #### 4.3. Slack Action Drink Data - **Purpose**: Extracts water amount and message information - **Configuration**: - **Assignments**: - `value`: `{{ $json.actions[0].value }}` - `message_text`: `{{ $json.message.text }}` - `shortcut_url`: `shortcuts://run-shortcut?name=darrell_water&input=` - `shortcut_url_data`: JSON containing water amount and time - `message_ts`: `{{ $json.container.message_ts }}` #### 4.4. Google Sheets - **Purpose**:
- Platform
- n8n
- Category
- Health & Fitness
- Price
- $14.99
- Creator
- darrell_tw
- if
- set
- wait
- limit
- merge
- slack
- webhook
- summarize
- stickyNote
- googleSheets
How to import this workflow into n8n
- 1Purchase or download the workflow to get the n8n workflow JSON file.
- 2In your n8n instance, open Workflows and choose "Import from File" (or paste the JSON with Ctrl+V on the canvas).
- 3Open each node marked with a credential warning and connect your own accounts and API keys.
- 4Run the workflow once manually to verify the data flow, then toggle it to Active.
Related Health & Fitness workflows
- Nutrition Tracker & Meal Logger with Telegram, Gemini AI, and Google Sheets$24.99
- Automated Telegram Command Filtering and Workflow Management$15.04
- Automate Food Calorie Tracking via Telegram with GPT-4 Vision and Google Sheets$4.99
- Automate Personalized Diet Plan Creation from Health Reports via Email$4.99
- Reinforced Learning Chatbot for Enhanced User Support$24.99
- AI-Powered Triathlon Coaching with Strava Data Analysis$9.99
More from darrell_tw
Need this deployed? We'll set it up for you.
Our automation experts deploy this workflow in your stack, connect your accounts, and verify it works — or build a custom solution from scratch.