AutomationFlowsWeb Scraping › Set Reminder - Reminder Scheduling

Set Reminder - Reminder Scheduling

Set Reminder - Reminder Scheduling. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 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": "Set Reminder - Reminder Scheduling",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "set_reminder",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "52e6cbe0-d0a4-4aac-84cb-0a45d6eb1cd5",
      "name": "Webhook - Receive Reminder Action",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "functionCode": "const received = $input.item.json;\nconst action = received.body ?? received;\nconst payload = action.payload ?? {};\n\nconst rawReminderTime = payload.reminder_time ?? payload.time ?? null;\nconst parsedTime = rawReminderTime ? new Date(rawReminderTime) : null;\nconst hasValidDate = !!parsedTime && !Number.isNaN(parsedTime.getTime());\n\nconst nowMs = Date.now();\nconst targetMs = hasValidDate ? parsedTime.getTime() : 0;\nconst isPastTime = hasValidDate ? targetMs <= nowMs : false;\nconst delaySeconds = hasValidDate ? Math.max(0, Math.floor((targetMs - nowMs) / 1000)) : null;\n\nconst channels = Array.isArray(payload.notification_channels) && payload.notification_channels.length\n  ? payload.notification_channels\n  : ['voice', 'push'];\n\nconst language = (action.context?.language || action.language || 'fr').toLowerCase();\n\nreturn {\n  json: {\n    action_id: action.action_id ?? 'unknown',\n    user_id: action.user_id ?? 'unknown',\n    intent: action.intent ?? 'set_reminder',\n    language,\n    title: payload.title ?? payload.task ?? 'Rappel',\n    description: payload.description ?? null,\n    reminder_time: rawReminderTime,\n    recurrence: payload.recurrence ?? null,\n    notification_channels: channels,\n    is_valid_time: hasValidDate,\n    is_past_time: isPastTime,\n    delay_seconds: delaySeconds,\n    created_at: new Date().toISOString()\n  }\n};"
      },
      "id": "6f14667f-5d53-4f10-8f4c-2d978e4fd6f2",
      "name": "Extract Reminder Data",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json.is_valid_time && !$json.is_past_time ? 'yes' : 'no'}}",
              "operation": "equal",
              "value2": "yes"
            }
          ]
        }
      },
      "id": "afc2ba44-2529-4f8d-8de6-4d29f27eae69",
      "name": "IF Reminder Time Valid",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "functionCode": "const j = $input.item.json;\nconst reminderId = `rem_${j.action_id}_${Date.now()}`;\n\nconst messages = {\n  fr: `Rappel '${j.title}' cree pour ${j.reminder_time}.`,\n  en: `Reminder '${j.title}' created for ${j.reminder_time}.`,\n  ar: `Reminder '${j.title}' created for ${j.reminder_time}.`\n};\n\nreturn {\n  json: {\n    ...j,\n    status: 'success',\n    result: {\n      reminder_id: reminderId,\n      title: j.title,\n      description: j.description,\n      reminder_time: j.reminder_time,\n      recurrence: j.recurrence,\n      notification_channels: j.notification_channels,\n      scheduled_in_seconds: j.delay_seconds,\n      scheduled: true\n    },\n    error: null,\n    voice_text: messages[j.language] || messages.fr\n  }\n};"
      },
      "id": "96f1b323-0511-48c6-8157-ea250f7b5f75",
      "name": "Build Success Result",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        660,
        -90
      ]
    },
    {
      "parameters": {
        "functionCode": "const j = $input.item.json;\n\nconst reason = !j.is_valid_time\n  ? 'invalid_reminder_time'\n  : (j.is_past_time ? 'reminder_time_in_past' : 'unknown_validation_error');\n\nconst messages = {\n  fr: `Impossible de creer le rappel '${j.title}'. Heure invalide ou passee.`,\n  en: `Unable to create reminder '${j.title}'. Time is invalid or in the past.`,\n  ar: `Unable to create reminder '${j.title}'. Time is invalid or in the past.`\n};\n\nreturn {\n  json: {\n    ...j,\n    status: 'failed',\n    result: null,\n    error: reason,\n    voice_text: messages[j.language] || messages.fr\n  }\n};"
      },
      "id": "5a5d3f27-58cd-43dc-91f8-204362f3f0f4",
      "name": "Build Failure Result",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        660,
        90
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://host.docker.internal:8000/callback/n8n",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ { action_id: $json.action_id, status: $json.status, result: $json.result, error: $json.error, execution_time_ms: null } }}",
        "options": {
          "timeout": 5000
        }
      },
      "id": "f188d026-10ad-4f2f-a8cb-c1ad09d30a1c",
      "name": "Callback Backend",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 3,
      "position": [
        880,
        0
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ action_id: $json.action_id, status: $json.status, result: $json.result, error: $json.error }) }}",
        "options": {}
      },
      "id": "0443f9de-e2bb-4c6e-b2d3-e0d3f9f9b95e",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1100,
        0
      ]
    }
  ],
  "connections": {
    "Webhook - Receive Reminder Action": {
      "main": [
        [
          {
            "node": "Extract Reminder Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Reminder Data": {
      "main": [
        [
          {
            "node": "IF Reminder Time Valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Reminder Time Valid": {
      "main": [
        [
          {
            "node": "Build Success Result",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Failure Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Success Result": {
      "main": [
        [
          {
            "node": "Callback Backend",
            "type": "main",
            "index": 0
          },
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Failure Result": {
      "main": [
        [
          {
            "node": "Callback Backend",
            "type": "main",
            "index": 0
          },
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false
  },
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "setReminderWorkflow0001",
  "tags": []
}
Pro

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

About this workflow

Set Reminder - Reminder Scheduling. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/Montassarnawara/gob-edge-ai/blob/469bdf18ec1ef069f2ba7916183f0013483c9067/n8n/wf_set_reminder.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request