AutomationFlowsGeneral › Namecheap Dynamic DNS Update

Namecheap Dynamic DNS Update

Original n8n title: Namecheap Dynamic Dns (ddns)

NameCheap Dynamic DNS (DDNS). Uses httpRequest. Scheduled trigger; 7 nodes.

Cron / scheduled trigger★★★★☆ complexity7 nodesHTTP Request
General Trigger: Cron / scheduled 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
{
  "id": 3,
  "name": "NameCheap Dynamic DNS (DDNS)",
  "nodes": [
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        380,
        300
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 15
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Checks IP if new",
      "type": "n8n-nodes-base.function",
      "position": [
        740,
        300
      ],
      "parameters": {
        "functionCode": "const staticData = getWorkflowStaticData('global');\nconst newItem = items.map(item => item.json[\"ip\"]);\nconst ildItem = staticData.ildItem; \n\nif (!ildItem) {\n  staticData.ildItem = newItem;\n  return items;\n}\n\n\nconst actualnewItem = newItem.filter((id) => !ildItem.includes(id));\nconst actualItem = items.filter((data) => actualnewItem.includes(data.json['ip']));\nstaticData.ildItem = [...actualnewItem, ...ildItem];\n\nreturn actualItem;"
      },
      "typeVersion": 1
    },
    {
      "name": "subdomains",
      "type": "n8n-nodes-base.function",
      "position": [
        1100,
        300
      ],
      "parameters": {
        "functionCode": "items[0].json = {\n    value: [\n        {id: \"subdomain1\"},\n        {id: \"subdomain2\"},\n        {id: \"subdomain3\"}\n    ]\n};\nreturn items;"
      },
      "typeVersion": 1
    },
    {
      "name": "Loops trough Subdomain list",
      "type": "n8n-nodes-base.function",
      "position": [
        1280,
        300
      ],
      "parameters": {
        "functionCode": "const newItems = [];\n\nfor (const item of items[0].json.value) {\n  newItems.push({json: item});\n}\n\nreturn newItems;"
      },
      "typeVersion": 1
    },
    {
      "name": "Send data to Namecheap",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1460,
        300
      ],
      "parameters": {
        "url": "=https://dynamicdns.park-your-domain.com/update?host={{$node[\"Loops trough Subdomain list\"].parameter[\"functionCode\"]}}test&domain={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][0][\"value\"]}}&password={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][1][\"value\"]}}&ip={{$node[\"Get Public IP address\"].json[\"ip\"]}}",
        "options": {},
        "responseFormat": "string"
      },
      "typeVersion": 1
    },
    {
      "name": "Get Public IP address",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        560,
        300
      ],
      "parameters": {
        "url": "https://api.ipify.org?format=json",
        "options": {},
        "jsonParameters": true,
        "allowUnauthorizedCerts": true
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "continueOnFail": true
    },
    {
      "name": "yourdomain.com",
      "type": "n8n-nodes-base.set",
      "position": [
        920,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "domain",
              "value": "yourdomain.com"
            },
            {
              "name": "password",
              "value": "your-namecheap-ddns-password"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {},
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Get Public IP address",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "subdomains": {
      "main": [
        [
          {
            "node": "Loops trough Subdomain list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "yourdomain.com": {
      "main": [
        [
          {
            "node": "subdomains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Checks IP if new": {
      "main": [
        [
          {
            "node": "yourdomain.com",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Public IP address": {
      "main": [
        [
          {
            "node": "Checks IP if new",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loops trough Subdomain list": {
      "main": [
        [
          {
            "node": "Send data to Namecheap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

NameCheap Dynamic DNS (DDNS). Uses httpRequest. Scheduled trigger; 7 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Create Threads on Bluesky. Uses httpRequest, scheduleTrigger, stickyNote, splitInBatches. Scheduled trigger; 20 nodes.

HTTP Request
General

Backup workflows to git repository on Gitea. Uses n8n, scheduleTrigger, stickyNote, httpRequest. Scheduled trigger; 20 nodes.

n8n, HTTP Request
General

Datetime Todoist. Uses scheduleTrigger, todoist, dateTime, stickyNote. Scheduled trigger; 19 nodes.

Todoist, Crypto, Item Lists +1
General

Http Schedule. Uses scheduleTrigger, httpRequest, stickyNote, @horka. Scheduled trigger; 18 nodes.

HTTP Request, @Horka
General

💥workflow n8n d'Auto-Post sur les réseaux sociaux - vide. Uses scheduleTrigger, googleSheets, httpRequest, stickyNote. Scheduled trigger; 15 nodes.

Google Sheets, HTTP Request