AutomationFlowsSlack & Telegram › Premium / Seasonal Pool Open (cron)

Premium / Seasonal Pool Open (cron)

Premium / Seasonal pool open (cron). Uses postgres, telegram, httpRequest. Scheduled trigger; 8 nodes.

Cron / scheduled trigger★★★★☆ complexity8 nodesPostgresTelegramHTTP Request
Slack & Telegram Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → Postgres 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
{
  "name": "Premium / Seasonal pool open (cron)",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 10 1,15 5 *"
            }
          ]
        }
      },
      "name": "Cron (May 1 & 15, 10:00 MSK)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "select * from public.segment_for_seasonal_service('pool_cleaning', 'seasonal_pool_open', null);"
      },
      "name": "Postgres (segment)",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.4,
      "position": [
        460,
        300
      ],
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "batchSize": 15,
        "options": {}
      },
      "name": "SplitInBatches (15)",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "amount": 2,
        "unit": "seconds"
      },
      "name": "Wait (2s)",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        900,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json.channel}}",
              "operation": "equals",
              "value2": "telegram"
            }
          ]
        }
      },
      "name": "IF (telegram?)",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        1120,
        300
      ]
    },
    {
      "parameters": {
        "chatId": "={{$json.external_id}}",
        "text": "\ud83c\udfca {{$json.full_name || '\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435'}}, \u043b\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0440\u043e\u0433\u0435!\n\u041f\u043e\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0430\u0448 \u0431\u0430\u0441\u0441\u0435\u0439\u043d: \u0447\u0438\u0441\u0442\u043a\u0430 \u0447\u0430\u0448\u0438, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f, \u0445\u0438\u043c\u0438\u044f \u2014 \u0432\u0441\u0451 \u00ab\u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u00bb.\n\u0425\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f? /start",
        "additionalFields": {
          "parse_mode": "HTML"
        }
      },
      "name": "Telegram (send)",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.1,
      "position": [
        1340,
        200
      ],
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{$env.MAX_API_URL}}/messages?access_token={{$env.MAX_BOT_TOKEN}}&user_id={{$json.external_id}}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={ \"text\": \"\ud83c\udfca \u041b\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0440\u043e\u0433\u0435 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0430\u0448 \u0431\u0430\u0441\u0441\u0435\u0439\u043d \u00ab\u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u00bb! \u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c?\" }"
      },
      "name": "HTTP (MAX send)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1340,
        400
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "insert into public.campaign_recipients (campaign_id, contact_id, channel, status, sent_at)\nselect c.id, '{{$json.contact_id}}'::uuid, '{{$json.channel}}'::messenger_channel, 'sent', now()\n  from public.campaigns c where c.code = 'seasonal_pool_open'\non conflict (campaign_id, contact_id, channel) do update set status='sent', sent_at=now();"
      },
      "name": "Postgres (mark sent)",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.4,
      "position": [
        1560,
        300
      ],
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Cron (May 1 & 15, 10:00 MSK)": {
      "main": [
        [
          {
            "node": "Postgres (segment)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres (segment)": {
      "main": [
        [
          {
            "node": "SplitInBatches (15)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches (15)": {
      "main": [
        [
          {
            "node": "Wait (2s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (2s)": {
      "main": [
        [
          {
            "node": "IF (telegram?)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF (telegram?)": {
      "main": [
        [
          {
            "node": "Telegram (send)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP (MAX send)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram (send)": {
      "main": [
        [
          {
            "node": "Postgres (mark sent)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP (MAX send)": {
      "main": [
        [
          {
            "node": "Postgres (mark sent)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "active": false,
  "tags": [
    "premium",
    "campaigns",
    "pool"
  ]
}

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

Premium / Seasonal pool open (cron). Uses postgres, telegram, httpRequest. Scheduled trigger; 8 nodes.

Source: https://github.com/alexdmitrievi/Podryad_PRO/blob/main/n8n/workflows/03-seasonal-pool.json — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

TelegramQuery. Uses httpRequest, dataTable, postgres, telegram. Scheduled trigger; 26 nodes.

HTTP Request, Data Table, Postgres +1
Slack & Telegram

Premium / Referral notifications & loyalty hints. Uses postgres, telegram, httpRequest. Scheduled trigger; 11 nodes.

Postgres, Telegram, HTTP Request
Slack & Telegram

Premium / Referral notifications & loyalty hints. Uses postgres, telegram, httpRequest. Scheduled trigger; 11 nodes.

Postgres, Telegram, HTTP Request
Slack & Telegram

ETHERSCAN. Uses httpRequest, postgres, telegram. Scheduled trigger; 10 nodes.

HTTP Request, Postgres, Telegram
Slack & Telegram

Premium / Recurring lawn mowing (cron). Uses postgres, telegram, httpRequest. Scheduled trigger; 8 nodes.

Postgres, Telegram, HTTP Request