{
  "meta": {
    "versionId": "1.0.0",
    "createdAt": "2025-09-29T07:08:00.176641",
    "updatedAt": "2025-09-29T07:08:00.176657",
    "owner": "n8n-user",
    "license": "MIT",
    "category": "automation",
    "status": "active",
    "priority": "high",
    "environment": "production"
  },
  "nodes": [
    {
      "id": "3abfbefa-0a41-4dd2-a79b-99aa02447a6f",
      "name": "When clicking \"Test workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        380,
        240
      ],
      "parameters": {},
      "typeVersion": 1,
      "notes": "This manualTrigger node performs automated tasks as part of the workflow."
    },
    {
      "id": "5233daa6-9b3f-4048-8187-b78decac0bbd",
      "name": "Delete ID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1900,
        380
      ],
      "parameters": {
        "operation": "delete",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "{{ $env.WEBHOOK_URL }}",
          "cachedResultName": "Last Member"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.2,
      "alwaysOutputData": true,
      "notes": "This googleSheets node performs automated tasks as part of the workflow."
    },
    {
      "id": "d3be48cd-9652-43ea-9bbf-d9d3a6c972ae",
      "name": "SaveID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2040,
        380
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $('Merge').last().json.user.id }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ]
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "{{ $env.WEBHOOK_URL }}",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
        }
      },
      "typeVersion": 4.2,
      "notes": "This googleSheets node performs automated tasks as part of the workflow."
    },
    {
      "id": "a8cb3b10-1143-4467-936c-36ea29c3489a",
      "name": "Get ID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        920,
        240
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "{{ $env.WEBHOOK_URL }}",
          "cachedResultName": "Last Member"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true,
      "notes": "This googleSheets node performs automated tasks as part of the workflow."
    },
    {
      "id": "82bdeec7-5ff5-4ed5-8c57-f3007bd7f81e",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1520,
        240
      ],
      "parameters": {},
      "typeVersion": 2.1,
      "notes": "This merge node performs automated tasks as part of the workflow."
    },
    {
      "id": "19247435-e0b0-4eac-8807-cb9e4ac532ab",
      "name": "Check if we have more members left",
      "type": "n8n-nodes-base.if",
      "position": [
        1740,
        240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "11bd5681-d979-40a8-ba0c-8c697532cf0d",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $input.all().length }}",
              "rightValue": 100
            }
          ]
        }
      },
      "typeVersion": 2,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "9845c82b-942e-4265-be8c-c4b1a9199b1e",
      "name": "We're done",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2040,
        160
      ],
      "parameters": {},
      "typeVersion": 1,
      "notes": "This noOp node performs automated tasks as part of the workflow."
    },
    {
      "id": "86bf2fe1-22b3-4563-a4b7-b3603f96cada",
      "name": "Check if we have an ID",
      "type": "n8n-nodes-base.if",
      "position": [
        1100,
        240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "8cabfe61-be13-462f-a8ce-99ba5304fa10",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.ID }}",
              "rightValue": ""
            }
          ]
        }
      },
      "executeOnce": true,
      "typeVersion": 2,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "96324abb-2464-418a-850f-c6f8d3ce209f",
      "name": "Filter to only include members with role",
      "type": "n8n-nodes-base.filter",
      "position": [
        1740,
        -80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cac0aeae-ff45-4717-b11e-4e19995649fe",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.roles.filter(role => role === $('Setup: Edit this to get started').first().json['Role ID']).length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2,
      "notes": "This filter node performs automated tasks as part of the workflow."
    },
    {
      "id": "bc012053-c619-479b-8bcb-9325c209d999",
      "name": "Get First 100 Members",
      "type": "n8n-nodes-base.discord",
      "position": [
        1300,
        260
      ],
      "parameters": {
        "guildId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Setup: Edit this to get started').first().json['Discord ID'] }}"
        },
        "options": {
          "simplify": true
        },
        "resource": "member"
      },
      "typeVersion": 2,
      "notes": "This discord node performs automated tasks as part of the workflow."
    },
    {
      "id": "7214e807-5a51-438d-9db8-32821307f4ea",
      "name": "Get next 100 Members after last ID",
      "type": "n8n-nodes-base.discord",
      "position": [
        1300,
        80
      ],
      "parameters": {
        "after": "={{ $('Get ID').first().json.ID }}",
        "guildId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Setup: Edit this to get started').first().json['Discord ID'] }}"
        },
        "options": {
          "simplify": true
        },
        "resource": "member"
      },
      "typeVersion": 2,
      "notes": "This discord node performs automated tasks as part of the workflow."
    },
    {
      "id": "158d3e7a-cc8c-4ab3-b59f-5a2251c79613",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        517,
        -60.44028103044491
      ],
      "parameters": {
        "color": 5,
        "width": 350.3145253526498,
        "height": 491.3512880562059,
        "content": "## Setup\n1. Add your Google Sheets and Discord credentials.\n2. Create a Google Sheets document that contains `ID` as a column. We're using this to remember which member we received last.\n3. Edit the fields in the setup node `Setup: Edit this to get started`. *You can read up on how to get the Discord IDs via [this link]({{ $env.WEBHOOK_URL }}\n4. Link to your Discord server in the Discord nodes\n5. Activate the workflow\n6. Call the production webhook URL in your browser"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "11926dbb-a5e0-48f9-8453-7dc21ecf6717",
      "name": "Setup: Edit this to get started",
      "type": "n8n-nodes-base.set",
      "position": [
        640,
        240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7c8cce4f-1330-425a-baff-4c40320f2335",
              "name": "Role ID",
              "type": "string",
              "value": "<Enter your roleID here>"
            },
            {
              "id": "8533b358-d8e6-4eba-9159-f6bdd2e0df65",
              "name": "Google Sheets URL",
              "type": "string",
              "value": "<Enter your Sheets URL here>"
            },
            {
              "id": "bb87e6f5-def9-4625-818a-ce6ff7b44ed7",
              "name": "Discord ID",
              "type": "string",
              "value": "<Enter your server/guild ID here>"
            }
          ]
        }
      },
      "typeVersion": 3.3,
      "notes": "This set node performs automated tasks as part of the workflow."
    },
    {
      "id": "334377fc-ddb8-4c0d-9ddc-f6949b98578c",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "disabled": true,
      "position": [
        380,
        420
      ],
      "webhookId": "b40c1140-75a7-481e-b8c7-789eef1f8bac",
      "parameters": {
        "path": "discord-template",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 1.1,
      "notes": "This webhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "8fac2863-a046-4ce7-8391-72486141ea98",
      "name": "Send Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1960,
        -80
      ],
      "parameters": {
        "options": {},
        "respondWith": "allIncomingItems"
      },
      "typeVersion": 1,
      "notes": "This respondToWebhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "10677a2d-9bcb-4b51-8cab-a49c7f16a8d7",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1900,
        -180
      ],
      "parameters": {
        "color": 7,
        "height": 265.6674473067916,
        "content": "You can replace this node according to your use case. In my case, I've send a DM to all users"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    }
  ],
  "pinData": {},
  "connections": {
    "334377fc-ddb8-4c0d-9ddc-f6949b98578c": {
      "main": [
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-4aefaa0b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-840dd139",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-e2d68a0a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-1073f6db",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-91537a96",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-e5002400",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-47e4cf7d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-334377fc-ddb8-4c0d-9ddc-f6949b98578c-86be7afc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8fac2863-a046-4ce7-8391-72486141ea98": {
      "main": [
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-1538b3b4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-d19662a5",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-067b9158",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-2f38d3a0",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-cc0f529e",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-393519d4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-84034aca",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8fac2863-a046-4ce7-8391-72486141ea98-55f28d12",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5233daa6-9b3f-4048-8187-b78decac0bbd": {
      "main": [
        [
          {
            "node": "error-handler-5233daa6-9b3f-4048-8187-b78decac0bbd-fdf32900",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d3be48cd-9652-43ea-9bbf-d9d3a6c972ae": {
      "main": [
        [
          {
            "node": "error-handler-d3be48cd-9652-43ea-9bbf-d9d3a6c972ae-adba181f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a8cb3b10-1143-4467-936c-36ea29c3489a": {
      "main": [
        [
          {
            "node": "error-handler-a8cb3b10-1143-4467-936c-36ea29c3489a-75d4abbe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bc012053-c619-479b-8bcb-9325c209d999": {
      "main": [
        [
          {
            "node": "error-handler-bc012053-c619-479b-8bcb-9325c209d999-624f63d1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7214e807-5a51-438d-9db8-32821307f4ea": {
      "main": [
        [
          {
            "node": "error-handler-7214e807-5a51-438d-9db8-32821307f4ea-a3688c70",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "name": "Manualtrigger Workflow",
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": null,
    "timezone": "UTC",
    "executionTimeout": 3600,
    "maxExecutions": 1000,
    "retryOnFail": true,
    "retryCount": 3,
    "retryDelay": 1000
  },
  "description": "Automated workflow: Manualtrigger Workflow. This workflow integrates 12 different services: webhook, filter, stickyNote, merge, set. It contains 25 nodes and follows best practices for error handling and security.",
  "tags": [
    "automation",
    "n8n",
    "production-ready",
    "excellent",
    "optimized"
  ],
  "notes": "Excellent quality workflow: Manualtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}