AutomationFlowsAI & RAG › Subscription Tracker & Reminders with Gpt-4 Nano, Telegram & Google Sheets

Subscription Tracker & Reminders with Gpt-4 Nano, Telegram & Google Sheets

ByRamon David @mondavid16 on n8n.io

This workflow manages subscription billing reminders and data updates via Telegram. It runs daily at 8:00 AM to check for upcoming due subscriptions, formats relevant information, and sends reminders to users. It also processes user messages for subscription management—adding,…

Cron / scheduled trigger★★★★☆ complexityAI-powered20 nodesOpenAI ChatMemory Buffer WindowTelegramGoogle SheetsGoogle Sheets ToolTool CalculatorTool Serp ApiOpenAI
AI & RAG Trigger: Cron / scheduled Nodes: 20 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "918d0148-72d9-422b-8244-0fdd0ce8952e",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "notes": "Provides the Language Model (GPT-4) for the AI Agent to process natural language requests.",
      "position": [
        -528,
        -592
      ],
      "parameters": {
        "model": "gpt-4.1-nano",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e2e40de5-fa69-4e31-b01d-9e08121de5d8",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "notes": "Maintains conversation context for each Telegram user session.",
      "position": [
        -400,
        -592
      ],
      "parameters": {
        "sessionKey": "={{ $('Telegram Message Received').item.json.message.from.id }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "59e67ec9-c85a-4cc3-a48b-df60516ee52c",
      "name": "Format Response",
      "type": "n8n-nodes-base.set",
      "notes": "Formats the AI Agent's response for sending back to Telegram.",
      "position": [
        320,
        -816
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cc903946-9e57-402a-bf4e-a001c17c4776",
              "name": "response",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e44c63e1-2f8b-4047-8588-5d58a7a44b52",
      "name": "Send Telegram Response",
      "type": "n8n-nodes-base.telegram",
      "notes": "Sends the AI Agent's response back to the user via Telegram.",
      "position": [
        544,
        -816
      ],
      "parameters": {
        "text": "={{ $json.response }}",
        "chatId": "={{ $('Telegram Message Received').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f79cf394-4029-48a9-8e04-abcbf436691f",
      "name": "Daily 8AM Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Triggers daily at 8:00 AM to check for subscriptions due within 3 days.",
      "position": [
        -624,
        -384
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f7f610d1-4e3d-4855-848a-3adcf7af7dda",
      "name": "Read Subscriptions",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Reads all subscription data from Google Sheets to check for upcoming due dates.",
      "position": [
        -400,
        -288
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1746035543,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit#gid=1746035543",
          "cachedResultName": "Dashboard"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit?usp=drivesdk",
          "cachedResultName": "Bill Manager AI"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "aa2e2070-8b10-4e86-98cf-96f66edc7885",
      "name": "AI Agent Core Section",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1232,
        -1088
      ],
      "parameters": {
        "color": 5,
        "width": 2248,
        "height": 638,
        "content": "# \ud83e\udd16 Bill Agent\n\nThe heart of the subscription management system:\n- Processes natural language requests\n- Connects to Google Sheets via sub-workflow tool\n- Maintains conversation memory per user\n- Handles CRUD operations on subscription data\n\n**Key Features:**\n- Add/update/delete subscriptions\n- List active/inactive subscriptions\n- Calculate due dates and currency conversions\n- Provide spending summaries"
      },
      "typeVersion": 1
    },
    {
      "id": "e8c004e4-607a-4d07-b10e-ea3f64ffb6ca",
      "name": "Daily Reminder Section",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1232,
        -448
      ],
      "parameters": {
        "color": 3,
        "width": 2256,
        "height": 448,
        "content": "# \ud83d\udcc5 Daily Reminder System\n\nAutomated daily checks at 8:00 AM:\n- Reads all subscription data\n- Filters subscriptions due within 3 days\n- Sends email reminders with formatted content\n- Includes totals and detailed breakdown\n\n**Setup Required:**\n- Configure Google Sheets credentials\n- Set up SMTP for email sending\n- Update user email address\n- Ensure Google Sheets has proper formulas for 'Due In' column"
      },
      "typeVersion": 1
    },
    {
      "id": "5e533f04-197e-4969-977e-b72d4bd45d44",
      "name": "Any Subscriptions Due?",
      "type": "n8n-nodes-base.if",
      "notes": "Checks if there are any subscriptions due within 3 days that need email notification.",
      "position": [
        -176,
        -288
      ],
      "parameters": {
        "options": {
          "looseTypeValidation": true
        },
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1a1e734-3e9c-4b1a-9c8e-5f4f3f2f1f0f",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ $('Read Subscriptions').item.json['Due In'] }}",
              "rightValue": 3
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b8c19d79-609e-4ab7-84c2-e35fefea7e9c",
      "name": "Get row(s) in sheet in Google Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -272,
        -592
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "lookupColumn": "Bill Name"
            },
            {
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values1_Value', ``, 'string') }}",
              "lookupColumn": "Billing Cycle"
            },
            {
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values3_Value', ``, 'string') }}",
              "lookupColumn": "Due In"
            },
            {
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values4_Value', ``, 'string') }}",
              "lookupColumn": "Status"
            },
            {
              "lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values5_Value', ``, 'string') }}",
              "lookupColumn": "Card Used (Last 4 Digits)"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1746035543,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit#gid=1746035543",
          "cachedResultName": "Dashboard"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit?usp=drivesdk",
          "cachedResultName": "Bill Manager AI"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "23e6fb89-4afa-4868-990c-e85224ae4ae3",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        -144,
        -592
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7c61599e-8eac-4e12-8cf6-cb9e8804db2f",
      "name": "SerpAPI",
      "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
      "position": [
        -16,
        -592
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "serpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0e583a94-c150-499e-8de9-9820eb22840e",
      "name": "Send Telegram Response1",
      "type": "n8n-nodes-base.telegram",
      "notes": "Sends the AI Agent's response back to the user via Telegram.",
      "position": [
        624,
        -288
      ],
      "parameters": {
        "text": "={{ $json.message.content.message }}",
        "chatId": "=7707872097",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a46a906d-7c7d-4f19-ae69-68dd38f8c29a",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -624,
        -192
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "40ca68c5-2970-4d93-ba93-2f2b3f28e413",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        272,
        -288
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "GPT-4.1-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=You are a subscription reminder assistant. Format the following subscription bills into a clear, concise Telegram message.\n\nInclude:\n- Total number of bills due\n- Each bill's name, amount in Peso, plan type, and exact due date\n- Use emojis for better readability\n- Keep it under 400 characters for Telegram\n\nFormat example:\n\ud83d\udea8 BILLS DUE SOON (3 bills)\n\n\ud83d\udcb3 Netflix Pro - \u20b1890.45\n\ud83d\udcc5 Due: Jan 26, 2025 (2 days)\n\n\ud83c\udfb5 Spotify Premium - \u20b1556.45  \n\ud83d\udcc5 Due: Jan 28, 2025 (4 days)\n\nMake it urgent but friendly."
            },
            {
              "content": "={{ JSON.stringify($json.data) }}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "d7152ed6-db29-4f59-ad94-2552dc9cb951",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        48,
        -288
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "13f93efc-89ca-4e5a-8175-69ac8a811d03",
      "name": "Smart Bill Manager",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "The core AI Agent that processes user requests and manages subscription data through natural language.",
      "position": [
        -288,
        -816
      ],
      "parameters": {
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "=ROLE: Smart Bill Manager\nYou are an efficient subscription billing assistant that collects complete information in a single interaction to save tokens and time.\n\nCORE DATA REQUIREMENTS (Collect ALL 6 fields)\nWhen a user mentions ANY subscription/bill, immediately extract and collect:\n\n1. Bill Name: Extract service name only (e.g., \"YouTube\" from \"YouTube Premium\")\n2. Amount: ONLY convert if NOT in USD. USD amounts go directly through.\n3. Plan: Extract plan/tier (e.g., \"Premium\", \"Family\", \"Pro\", \"Basic\")\n4. Start Date: When subscription began (YYYY-MM-DD format)\n5. Billing Cycle: \"Monthly\", \"Yearly\", or \"Weekly\"\n\nOPTIONAL:\n6. Status: Always  to \"Active\" unless user specifies \"Inactive\"\n7. Card Used: Only collect if user mentions (last 4 digits)\n\nCRITICAL RULES\n\nCurrency Conversion (SMART LOGIC)\n- IF amount contains \"$\" OR \"USD\" \u2192 Use directly, NO search needed\n- IF amount contains \u20b1, \u20ac, \u00a3, \u00a5, etc. \u2192 THEN search for conversion\n- Examples:\n  \u2705 \"$15.99\" \u2192 Use directly as \"$15.99\"\n  \u2705 \"15.99 USD\" \u2192 Use directly as \"$15.99\"\n  \ud83d\udd0d \"\u20b1189\" \u2192 Search \"189 PHP to USD\" \u2192 \"$3.45\"\n  \ud83d\udd0d \"\u20ac12\" \u2192 Search \"12 EUR to USD\" \u2192 \"$13.20\"\n\nEfficient Data Collection\n- Extract ALL available information from first message\n- Only ask for missing required fields\n- If user provides partial info, intelligently extract what you can and ask for the rest\n\nBill Name Intelligence\n- Extract service name from plan names:\n  - \"YouTube Premium\" \u2192 Bill Name: \"YouTube\", Plan: \"Premium\"\n  - \"Netflix Family Plan\" \u2192 Bill Name: \"Netflix\", Plan: \"Family\"\n  - \"Spotify Free\" \u2192 Bill Name: \"Spotify\", Plan: \"Free\"\n\nCONVERSATION EXAMPLES\n\nInput: \"$15.99/mo. Next due 13 of august. Youtube premium plan\"\n\nYour Response:\n\u2705 **YouTube Premium - Ready to Add!**\n\nFrom your message, I have:\n\u2705 Bill Name: YouTube\n\u2705 Plan: Premium  \n\u2705 Amount: $15.99 (already in USD)\n\u2705 Billing Cycle: Monthly (from \"/mo\")\n\nI need 2 more details:\n\u2753 **Start Date**: When did you first subscribe? (YYYY-MM-DD)\n\u2753 **Status**: Active or Inactive? (I'll assume Active)\n\nOnce you provide the start date, I'll add it immediately!\n\nInput: \"\u20b1189/mo. Next due 13 of august. Youtube premium plan\"\n\nYour Response:\nI'll add YouTube Premium! Let me convert that amount first.\n\n[Use search: \"189 PHP to USD\"]\n\n\u2705 **YouTube Premium - Ready to Add!**\n\nFrom your message, I have:\n\u2705 Bill Name: YouTube\n\u2705 Plan: Premium  \n\u2705 Amount: $3.45 (converted from \u20b1189)\n\u2705 Billing Cycle: Monthly (from \"/mo\")\n\nI need 2 more details:\n\u2753 **Start Date**: When did you first subscribe? (YYYY-MM-DD)\n\u2753 **Status**: Active or Inactive? (I'll assume Active)\n\nPOST-UPDATE BEHAVIOR\nAfter EVERY successful addition/update, automatically show the 3 nearest due dates from their subscription list.\n\nSEARCH TOOL USAGE\nUse search ONLY for:\n- Non-USD currency conversions: \"189 PHP to USD converter\"\n- Pricing verification: \"YouTube Premium price 2025 USD\" (only if needed)\n- Plan confirmation: \"Netflix plans and pricing 2025\" (only if needed)\n\nERROR PREVENTION\n- Never search if amount is already in USD (contains $ or USD)\n- Never save incomplete records\n- Always confirm plan extraction is correct\n- Default Status to \"Active\" unless specified\n- Extract maximum data from first message to minimize back-and-forth"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "917cc8ab-4bd5-4873-8ef0-8c7179477bb5",
      "name": "Append or update row in sheet in Google Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        112,
        -592
      ],
      "parameters": {
        "columns": {
          "value": {
            "Plan": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Plan', ``, 'string') }}",
            "Amount": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Amount', ``, 'string') }}",
            "Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
            "Bill Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Bill_Name__using_to_match_', ``, 'string') }}",
            "Start Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Date', ``, 'string') }}",
            "Last Updated": "={{ $now }}",
            "Billing Cycle": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Billing_Cycle', ``, 'string') }}",
            "Card Used (Last 4 Digits)": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Card_Used__Last_4_Digits_', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Bill Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Bill Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Plan",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Plan",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Start Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Start Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Billing Cycle",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Billing Cycle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Card Used (Last 4 Digits)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Card Used (Last 4 Digits)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Updated",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Last Updated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Bill Name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit#gid=0",
          "cachedResultName": "Raw Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11vm37DMVePdThULjlGatsfhp41wpW_RjbatoHwaQpgI/edit?usp=drivesdk",
          "cachedResultName": "Bill Manager AI"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "87cd5ea3-b04f-4552-b6d3-25f30993d06d",
      "name": "Telegram Message Received",
      "type": "n8n-nodes-base.telegramTrigger",
      "notes": "Triggers when any message is received via Telegram bot",
      "position": [
        -752,
        -816
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7481fe8f-508c-459a-8f2e-5f14ff0d191c",
      "name": "Send a chat action",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -256,
        -1040
      ],
      "parameters": {
        "chatId": "={{ $('Telegram Message Received').item.json.message.chat.id }}",
        "operation": "sendChatAction"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "connections": {
    "SerpAPI": {
      "ai_tool": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Daily 8AM Check": {
      "main": [
        [
          {
            "node": "Read Subscriptions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Response": {
      "main": [
        [
          {
            "node": "Send Telegram Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Send Telegram Response1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Read Subscriptions": {
      "main": [
        [
          {
            "node": "Any Subscriptions Due?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Smart Bill Manager": {
      "main": [
        [
          {
            "node": "Format Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Any Subscriptions Due?": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Telegram Message Received": {
      "main": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send a chat action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet in Google Sheets": {
      "ai_tool": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Read Subscriptions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet in Google Sheets": {
      "ai_tool": [
        [
          {
            "node": "Smart Bill Manager",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

This workflow manages subscription billing reminders and data updates via Telegram. It runs daily at 8:00 AM to check for upcoming due subscriptions, formats relevant information, and sends reminders to users. It also processes user messages for subscription management—adding,…

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Mailgun, OpenAI, OpenAI Chat +8
AI & RAG

staying consistent with personal brand content is hard when you're running everything yourself. you know what you want to say — but turning raw thoughts into polished posts takes hours.

Output Parser Structured, Telegram, OpenAI +4
AI & RAG

Template Name: AI Personal Assistant - Task & Email Management Price: $27 Category: Productivity & Automation Difficulty: Intermediate Use Case: Personal productivity automation for busy professionals

Telegram, HTTP Request, OpenAI +8
AI & RAG

Title: Create daily AI news digest and send to Telegram

HTTP Request, Agent, OpenAI Chat +5
AI & RAG

Be first. Be relevant. Get hired. This ready-to-import n8n workflow automates your entire Freelancer.com job search: it scans new listings, filters the best ones with AI, writes proposal drafts, and s

RSS Feed Read, Agent, Output Parser Structured +5