AutomationFlowsSlack & Telegram › Free Trial Follow-up (idle)

Free Trial Follow-up (idle)

Free Trial Follow-Up (Idle). Uses postgres, whatsApp. Scheduled trigger; 4 nodes.

Cron / scheduled trigger★★☆☆☆ complexity4 nodesPostgresWhatsApp
Slack & Telegram Trigger: Cron / scheduled Nodes: 4 Complexity: ★★☆☆☆ Added:

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": "Free Trial Follow-Up (Idle)",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 */6 * * *"
            }
          ]
        }
      },
      "id": "wf9-trigger",
      "name": "Cron: Every 6 Hours",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "operation": "select",
        "table": "pending_trial_surveys",
        "columns": "pts.id,\n                    pa.platform,\n                    pa.platform_user_id,\n                    pa.display_name,\n                    ft.status as trial_status,\n                    ft.id as free_trial_id,\n                    (SELECT COUNT(*) FROM pending_trial_surveys ps2\n                     JOIN free_trials ft2 ON ft2.id = ps2.free_trial_id\n                     WHERE ps2.platform_account_id = pts.platform_account_id\n                     AND ft2.status = 'pending'\n                     AND ps2.created_at >= NOW() - INTERVAL '24 hours') as surveys_24h",
        "conditions": "ft.status = 'pending'\n                    AND pts.free_trial_id IS NOT NULL\n                    AND pts.created_at < NOW() - INTERVAL '2 hours'",
        "options": {
          "join": "INNER JOIN free_trials ft ON ft.id = pts.free_trial_id\nINNER JOIN platform_accounts pa ON pa.id = pts.platform_account_id"
        }
      },
      "id": "wf9-idle",
      "name": "Find Idle Trial Requests",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 1,
      "position": [
        200,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true
          },
          "conditions": [
            {
              "id": "idle-check",
              "leftValue": "={{ $json.surveys_24h }}",
              "rightValue": 0,
              "operation": "equals"
            }
          ]
        }
      },
      "id": "wf9-filter",
      "name": "Filter: No Surveys in 24h",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        400,
        0
      ]
    },
    {
      "parameters": {
        "message": "\ud83c\udf81 Reminder \u2014 Free Trial Still Available!\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nHi{{#if $json.display_name}} {{$json.display_name}}{{/if}}! Your free trial access is still ready.\n\nYou started a trial request but haven't completed a survey yet.\n\n\ud83d\udca1 Complete just 1 survey = 2 hours of free proxy access.\n\nTap the link to get started \u2192 {{ $env.THEOREM_REACH_SURVEY_URL }}\n\nQuestions? Just reply to this message."
      },
      "id": "wf9-send",
      "name": "Send Follow-Up",
      "type": "n8n-nodes-base.whatsApp",
      "typeVersion": 1,
      "position": [
        600,
        0
      ]
    }
  ],
  "connections": {
    "Cron: Every 6 Hours": {
      "main": [
        [
          {
            "node": "Find Idle Trial Requests",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Idle Trial Requests": {
      "main": [
        [
          {
            "node": "Filter: No Surveys in 24h",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: No Surveys in 24h": {
      "main": [
        [
          {
            "node": "Send Follow-Up",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": false,
    "timezone": "Africa/Lagos"
  },
  "staticData": null,
  "tags": [
    "free-trial",
    "follow-up",
    "cron"
  ]
}
Pro

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

About this workflow

Free Trial Follow-Up (Idle). Uses postgres, whatsApp. Scheduled trigger; 4 nodes.

Source: https://github.com/sonnyagent30-beep/bunche/blob/e991131928c348097e3fb411d5caa3b0466900f8/.n8n/workflows/free-trial-follow-up.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

Provider APIs + Health Checks. Uses httpRequest, postgres, whatsApp. Scheduled trigger; 9 nodes.

HTTP Request, Postgres, WhatsApp
Slack & Telegram

Daily Summary. Uses postgres, whatsApp. Scheduled trigger; 12 nodes.

Postgres, WhatsApp
Slack & Telegram

Daily Summary. Uses postgres, whatsApp. Scheduled trigger; 12 nodes.

Postgres, WhatsApp
Slack & Telegram

EduPrime - Daily Management Report. Uses postgres, whatsApp, slack, emailSend. Scheduled trigger; 8 nodes.

Postgres, WhatsApp, Slack +1
Slack & Telegram

EduPrime - Daily Fee Reminders. Uses postgres, whatsApp. Scheduled trigger; 8 nodes.

Postgres, WhatsApp