Workflow simply won't trigger! Confused

I spent a long time creating, testing, debugging a workflow. Each node when executed manually works as I intend and if I press the last node in a respective chain of nodes, I’ll get the desired output.

However, the Start node and Cron node simply doesn’t trigger any flow. Absolutely nothing happens besides n8n saying I get a successful execution.

I inserted logging in a function node to see if my workflow reached there and attached to my container’s logs to see what happens and it doesn’t look like it doesn’t do anything.
.
Could someone maybe shed some light on why this might be? Is there a max time limit to n8n? Could this be a memory issue? The data set is only ~70 rows from a google sheet so I wasn’t expecting limitations.

Below is the JSON workflow, with some PII removed.

{
  "name": "Church Birthday Broadcast",
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        160,
        60
      ]
    },
    {
      "parameters": {
        "functionCode": "\nconst matchingDates = items.filter(record => {\n\n    const [bdayMonth, bdayDay] = new Date(`${record.json.Birthday} ${new Date().getFullYear()}`).toLocaleDateString().split('/')\n\n    const [currentMonth, currentDay] = new Date(new Date().toLocaleString(\"en-US\", {timeZone: \"America/New_York\"})).toLocaleDateString().split('/')\n\n    if (Number(bdayMonth) === Number(currentMonth) && Number(bdayDay) === Number(currentDay) + 1) {\n        return record;\n    }\n    return\n})\n\nconsole.log(\"I reach here\", new Date())\n\nreturn matchingDates"
      },
      "name": "Search for current bdays",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        580,
        270
      ]
    },
    {
      "parameters": {
        "sheetId": "1Ftc8TW-wCewZowx9AdRTfjDSuQrxQ_sa0HT4f6SdoZ8",
        "options": {
          "valueRenderMode": "FORMATTED_VALUE"
        }
      },
      "name": "Read Youth Bday Records",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 1,
      "position": [
        380,
        270
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "operation": "share",
        "fileId": "={{$json[\"id\"]}}",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "user",
            "emailAddress": "[email protected]"
          }
        },
        "options": {
          "emailMessage": "=Hey friend here's the spreadsheet for {{$node[\"Search for current bdays\"].json[\"Name\"]}}",
          "sendNotificationEmail": true
        }
      },
      "name": "Amend Share Permissions",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [
        1200,
        250
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "hour": 9
            }
          ]
        }
      },
      "name": "Every Day at 9am",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [
        120,
        270
      ]
    },
    {
      "parameters": {
        "from": "=+58283042559",
        "to": "={{$json[\"Number\"]}}",
        "message": "=Hey {{$json[\"Name\"]}},\n\n{{$json[\"message\"]}}\n\n{{$json[\"tripettoLink\"]}}\n\n- The Westmount Adventist Youth"
      },
      "name": "Send Birthday Reminder",
      "type": "n8n-nodes-base.twilio",
      "typeVersion": 1,
      "position": [
        1370,
        -180
      ],
      "credentials": {
        "twilioApi": "AY Number"
      }
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "f33687d6-016f-4a4a-81bc-d9c21a4dc71f",
        "options": {}
      },
      "name": "Get birthday message",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        20,
        580
      ],
      "webhookId": "f33687d6-016f-4a4a-81bc-d9c21a4dc71f"
    },
    {
      "parameters": {
        "operation": "append",
        "sheetId": "={{$json[\"id\"]}}",
        "range": "A:D",
        "options": {}
      },
      "name": "Add Birthday Message",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 1,
      "position": [
        870,
        600
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "resource": "message",
        "subject": "=A new birthday submission has been submitted",
        "message": "=A new message has come in from {{$json[\"wishername\"]}}",
        "toList": [
          "[email protected]",
          "[email protected]"
        ],
        "additionalFields": {
          "ccList": [
            "[email protected]"
          ]
        }
      },
      "name": "Notify of new spreadsheet addition ",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 1,
      "position": [
        1070,
        610
      ],
      "credentials": {
        "gmailOAuth2": "Personal Credentials"
      }
    },
    {
      "parameters": {
        "functionCode": "const {\n    birthdayname,\n    wishername,\n    love_message,\n    birthday_message\n} = items[0].json.body\n\nreturn [{\n    json: {\n        birthdayname,\n        wishername,\n        love_message,\n        birthday_message\n    }\n}]\n"
      },
      "name": "Parse message",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        200,
        580
      ]
    },
    {
      "parameters": {
        "operation": "copy",
        "fileId": "1hWav2yd75tEomha6zxcvk0XGB6EGVku7JVacjYhTDOQ",
        "options": {
          "name": "={{$json[\"Name\"]}}'s Birthday Sheet - {{new Date().getFullYear()}}"
        }
      },
      "name": "Copy Birthday Template",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [
        990,
        250
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "functionCode": "const matchingDates = items.filter(record => {\n    const [bdayMonth, bdayDay] = new Date(`${record.json.Birthday} ${new Date().getFullYear()}`).toLocaleDateString().split('/')\n\n    const [currentMonth, currentDay] = new Date(new Date().toLocaleString(\"en-US\", {\n        timeZone: \"America/New_York\"\n    })).toLocaleDateString().split('/')\n\n    if (Number(bdayMonth) === Number(currentMonth) && Number(bdayDay) === Number(currentDay) + 1) return record\n})\n\nlet message;\n\nif(matchingDates.length > 0){\n\n if(matchingDates.length === 1){\n\n const script =`Tomorrow we are celebrating ${matchingDates.length} birthday!\\n\\nThe individual's name is ${matchingDates[0].json.Name}!\\n\\nIf you would like to show your love and leave a message for ${matchingDates[0].json.Name} please click on the following link to fill out a form for their card:`\n message = script;\n } \n\n if(matchingDates.length > 1){\n\n const script =`Tomorrow we are celebrating ${matchingDates.length} birthdays!\\n\\nTheir names are:\\n ${matchingDates.map((record, index) => `${index + 1}. ${record.json.Name}`).join(\"\\n\")}!\\n\\nIf you would like to show your love and leave a message for them, please click on the following links to fill out a form for their cards:`\n message = script;\n} \n\n}\n\n\n\nconst remappedRecords = items.map(record => {\n    return {\n        json: {\n            ...record,\n            Number: `+${record.json.Number.replace(/\\(|\\)|\\s+|-/g, \"\")}`,\n            matching: matchingDates,\n            message: message\n            \n        }\n    }\n\n})\nreturn remappedRecords"
      },
      "name": "Group Celebrants",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        490,
        -70
      ]
    },
    {
      "parameters": {},
      "name": "Don't send any messages",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        980,
        100
      ]
    },
    {
      "parameters": {},
      "name": "Don't send any messages1",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        920,
        460
      ]
    },
    {
      "parameters": {
        "operation": "list",
        "queryFilters": {
          "name": [
            {
              "value": "={{$json[\"birthdayname\"]}}"
            }
          ]
        },
        "options": {}
      },
      "name": "Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [
        450,
        490
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "mode": "mergeByIndex",
        "join": "inner"
      },
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        680,
        600
      ]
    },
    {
      "parameters": {
        "mode": "mergeByIndex"
      },
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        960,
        -180
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(records => {\n\n    const url = records.json.matching.map(celebrant => ({\n        url: `https://tripetto.app/run/E5431Hfh847P?birthday_name=${celebrant.json.Name}`\n    }))\n    return {\n        json: {\n            tripettoLink: url\n        }\n    }\n\n})\n"
      },
      "name": "Generate Tripetto base",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        750,
        -230
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json[\"matching\"].length}}",
              "operation": "larger"
            }
          ]
        }
      },
      "name": "IF Birthdays",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        730,
        -70
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(record => {\n    const links = record.json.tripettoLink.map((link, index) => {\n   \n        return `${record.json.matching[index].json.Name}: ${link.url}&wisher_name=${record.json.json.Name}`\n    }).join(\"\\n\")\n    return {\n        json: {\n            ...record.json.json,\n            tripettoLink: links,\n            matching: record.json.matching.map(rec => rec.json),\n            message: record.json.message,\n            Number: record.json.Number\n        }\n    }\n\n}).filter(record => {\n     const namesList = record.json.matching.map(rec => rec.Name)\n    return !namesList.includes(record.json.Name)\n\n})\n"
      },
      "name": "Filter and augment links",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        1170,
        -180
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [],
          "boolean": [
            {
              "value1": "={{Object.values($json).length > 0}}",
              "value2": true
            }
          ]
        }
      },
      "name": "Birthday today?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        770,
        270
      ]
    },
    {
      "parameters": {},
      "name": "Error Trigger",
      "type": "n8n-nodes-base.errorTrigger",
      "typeVersion": 1,
      "position": [
        1440,
        450
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "subject": "error",
        "message": "hi",
        "toList": [
          "[email protected]",
          []
        ],
        "additionalFields": {}
      },
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 1,
      "position": [
        1640,
        450
      ],
      "credentials": {
        "gmailOAuth2": "Personal Credentials"
      }
    }
  ],
  "connections": {
    "Search for current bdays": {
      "main": [
        [
          {
            "node": "Birthday today?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Youth Bday Records": {
      "main": [
        [
          {
            "node": "Search for current bdays",
            "type": "main",
            "index": 0
          },
          {
            "node": "Group Celebrants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get birthday message": {
      "main": [
        [
          {
            "node": "Parse message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Birthday Message": {
      "main": [
        [
          {
            "node": "Notify of new spreadsheet addition ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse message": {
      "main": [
        [
          {
            "node": "Google Drive",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Copy Birthday Template": {
      "main": [
        [
          {
            "node": "Amend Share Permissions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Group Celebrants": {
      "main": [
        [
          {
            "node": "IF Birthdays",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Tripetto base",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Add Birthday Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Filter and augment links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Tripetto base": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Birthdays": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Don't send any messages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter and augment links": {
      "main": [
        [
          {
            "node": "Send Birthday Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Birthday today?": {
      "main": [
        [
          {
            "node": "Copy Birthday Template",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Don't send any messages1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Day at 9am": {
      "main": [
        [
          {
            "node": "Read Youth Bday Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "saveManualExecutions": true
  },
  "id": "10"
}

Hey @Adrian-Samuel!

Welcome to the community! :slightly_smiling_face:

Just checked the workflow that you shared. You have 3 different workflows using different trigger nodes in one single workflow - Cron node, Webhook node, and the Error Trigger node.

For each of these different workflows please create them separately. Also, you don’t have to activate the workflow with the Error Trigger node.

Another important thing to note is that, while your workflow is Active, you won’t see the data returned by the node on the Editor UI. You can check your executions from the Executions option.

Hope this helps :slightly_smiling_face:

Hey @harshil1712,

Thanks for the response!

So the error trigger and the cron node are something I added last just to see if maybe it was some UI issue that was preventing the manual execution of the start trigger to stop working. Originally I had that start node attached to the first "Read Sheet’ node.

The reason I know the flow isn’t working is that before I added the error and the cron node. I only the webhook trigger associated with this flow and manual executions wouldn’t trigger anything. I know this because I’m meant to receive some emails and an SMS message.

Are you saying that having a webhook node and a manual trigger node is causing some kind of conflict?

Trying to get to the bottom of why this isn’t working. I’ll move the webhook into a separate workflow though.

Kind Regards,

Which Webhook URL are you using for testing your workflow?

The Webhook URL has 2 types of URL - Production URL and Test URL. While building the workflow you have to use the Test URL to test URL. Once you’re done with building your workflow and want it to use it in production (workflow is Active), you use the Production URL. You can read more on the documentation.

Here’s a more minimal example.

So for clarity, every individual node if run works. The last node in the respective flows execute the whole flow successfully, but when using the start node or the “Execute workflow” button, nothing happens.

{
  "name": "Church Birthday Broadcast",
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        120,
        270
      ]
    },
    {
      "parameters": {
        "functionCode": "\nconst matchingDates = items.filter(record => {\n\n    const [bdayMonth, bdayDay] = new Date(`${record.json.Birthday} ${new Date().getFullYear()}`).toLocaleDateString().split('/')\n\n    const [currentMonth, currentDay] = new Date(new Date().toLocaleString(\"en-US\", {timeZone: \"America/New_York\"})).toLocaleDateString().split('/')\n\n    if (Number(bdayMonth) === Number(currentMonth) && Number(bdayDay) === Number(currentDay) + 1) {\n        return record;\n    }\n    return\n})\n\nconsole.log(\"I reach here\", new Date())\n\nreturn matchingDates"
      },
      "name": "Search for current bdays",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        580,
        270
      ]
    },
    {
      "parameters": {
        "sheetId": "1YGbY6fxUrIk5oae0OkXOOBIZefNKgPhJHTtzxPIB8Uo",
        "options": {
          "valueRenderMode": "FORMATTED_VALUE"
        }
      },
      "name": "Read Youth Bday Records",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 1,
      "position": [
        380,
        270
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "operation": "share",
        "fileId": "={{$json[\"id\"]}}",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "user",
            "emailAddress": "[email protected]"
          }
        },
        "options": {
          "emailMessage": "=Hey Carlone here's the spreadsheet for {{$node[\"Search for current bdays\"].json[\"Name\"]}}",
          "sendNotificationEmail": true
        }
      },
      "name": "Amend Share Permissions",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [
        1200,
        250
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "from": "=+19884045271",
        "to": "={{$json[\"Number\"]}}",
        "message": "=Hey {{$json[\"Name\"]}},\n\n{{$json[\"message\"]}}\n\n{{$json[\"tripettoLink\"]}}\n\n- The Westmount Adventist Youth"
      },
      "name": "Send Birthday Reminder",
      "type": "n8n-nodes-base.twilio",
      "typeVersion": 1,
      "position": [
        1370,
        -180
      ],
      "credentials": {
        "twilioApi": "AY Number"
      }
    },
    {
      "parameters": {
        "operation": "copy",
        "fileId": "1hWav2yd75tEomha6zxcvk0XGB6EGVku7JVacjYhTDOQ",
        "options": {
          "name": "={{$json[\"Name\"]}}'s Birthday Sheet - {{new Date().getFullYear()}}"
        }
      },
      "name": "Copy Birthday Template",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 1,
      "position": [
        990,
        250
      ],
      "credentials": {
        "googleApi": "Birthday Credentials "
      }
    },
    {
      "parameters": {
        "functionCode": "const matchingDates = items.filter(record => {\n    const [bdayMonth, bdayDay] = new Date(`${record.json.Birthday} ${new Date().getFullYear()}`).toLocaleDateString().split('/')\n\n    const [currentMonth, currentDay] = new Date(new Date().toLocaleString(\"en-US\", {\n        timeZone: \"America/New_York\"\n    })).toLocaleDateString().split('/')\n\n    if (Number(bdayMonth) === Number(currentMonth) && Number(bdayDay) === Number(currentDay) + 1) return record\n})\n\nlet message;\n\nif(matchingDates.length > 0){\n\n if(matchingDates.length === 1){\n\n const script =`Tomorrow we are celebrating ${matchingDates.length} birthday!\\n\\nThe individual's name is ${matchingDates[0].json.Name}!\\n\\nIf you would like to show your love and leave a message for ${matchingDates[0].json.Name} please click on the following link to fill out a form for their card:`\n message = script;\n } \n\n if(matchingDates.length > 1){\n\n const script =`Tomorrow we are celebrating ${matchingDates.length} birthdays!\\n\\nTheir names are:\\n ${matchingDates.map((record, index) => `${index + 1}. ${record.json.Name}`).join(\"\\n\")}!\\n\\nIf you would like to show your love and leave a message for them, please click on the following links to fill out a form for their cards:`\n message = script;\n} \n\n}\n\n\n\nconst remappedRecords = items.map(record => {\n    return {\n        json: {\n            ...record,\n            Number: `+${record.json.Number.replace(/\\(|\\)|\\s+|-/g, \"\")}`,\n            matching: matchingDates,\n            message: message\n            \n        }\n    }\n\n})\nreturn remappedRecords"
      },
      "name": "Group Celebrants",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        490,
        -70
      ]
    },
    {
      "parameters": {},
      "name": "Don't send any messages",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        980,
        100
      ]
    },
    {
      "parameters": {},
      "name": "Don't send any messages1",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        920,
        460
      ]
    },
    {
      "parameters": {
        "mode": "mergeByIndex"
      },
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        960,
        -180
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(records => {\n\n    const url = records.json.matching.map(celebrant => ({\n        url: `https://tripetto.app/run/E51HMOI37P?birthday_name=${celebrant.json.Name}`\n    }))\n    return {\n        json: {\n            tripettoLink: url\n        }\n    }\n\n})\n"
      },
      "name": "Generate Tripetto base",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        750,
        -230
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json[\"matching\"].length}}",
              "operation": "larger"
            }
          ]
        }
      },
      "name": "IF Birthdays",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        730,
        -70
      ]
    },
    {
      "parameters": {
        "functionCode": "return items.map(record => {\n    const links = record.json.tripettoLink.map((link, index) => {\n   \n        return `${record.json.matching[index].json.Name}: ${link.url}&wisher_name=${record.json.json.Name}`\n    }).join(\"\\n\")\n    return {\n        json: {\n            ...record.json.json,\n            tripettoLink: links,\n            matching: record.json.matching.map(rec => rec.json),\n            message: record.json.message,\n            Number: record.json.Number\n        }\n    }\n\n}).filter(record => {\n     const namesList = record.json.matching.map(rec => rec.Name)\n    return !namesList.includes(record.json.Name)\n\n})\n"
      },
      "name": "Filter and augment links",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        1170,
        -180
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [],
          "boolean": [
            {
              "value1": "={{Object.values($json).length > 0}}",
              "value2": true
            }
          ]
        }
      },
      "name": "Birthday today?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        770,
        270
      ]
    }
  ],
  "connections": {
    "Search for current bdays": {
      "main": [
        [
          {
            "node": "Birthday today?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Youth Bday Records": {
      "main": [
        [
          {
            "node": "Search for current bdays",
            "type": "main",
            "index": 0
          },
          {
            "node": "Group Celebrants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Copy Birthday Template": {
      "main": [
        [
          {
            "node": "Amend Share Permissions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Group Celebrants": {
      "main": [
        [
          {
            "node": "IF Birthdays",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Tripetto base",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Filter and augment links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Tripetto base": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Birthdays": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Don't send any messages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter and augment links": {
      "main": [
        [
          {
            "node": "Send Birthday Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Birthday today?": {
      "main": [
        [
          {
            "node": "Copy Birthday Template",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Don't send any messages1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start": {
      "main": [
        [
          {
            "node": "Read Youth Bday Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "saveManualExecutions": true
  },
  "id": "10"
}

@harshil1712, I’ve never had an issue with the webhook trigger working, that is not the issue. I’ve detailed it above

Taking an even simpler example, this doesn’t work either:

I’ve never had an issue with flows not working via manual execution until today.

For full transparency, I rolled back my docker container version to one/two versions back (my previous version) to avoid a bug in the latest. But I’m not sure how this is related.

{
  "name": "Example Flow",
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        420,
        360
      ]
    },
    {
      "parameters": {},
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        660,
        360
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "subject": "Testing topic",
        "message": "=hi",
        "toList": [
          "[email protected]"
        ],
        "additionalFields": {}
      },
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 1,
      "position": [
        900,
        360
      ],
      "credentials": {
        "gmailOAuth2": "Personal Credentials"
      }
    }
  ],
  "connections": {
    "Function": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start": {
      "main": [
        [
          {
            "node": "Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "id": "17"
}

If you’ve connected the first node with the Start node then everything should work as expected. Are they any logs or error messages that you get?

I’m afraid not! Only success messages. I’ve attached to the docker container to see the logs and see nothing there; only green ticks

And if I execute, just the end node, it works perfectly and sends me the email (for this last example)

I’ve only had this problem today. The original post showing the flow is new, but I’ve done like workflows before successfully, never having an issue until today.

This is strange. I’ve not come across this issue before. Maybe @jan might have something that would help.

Thanks for the help @harshil1712! Appreciate it!

Hopefully, Jan can shine some light on the situation!

Sorry but sadly not. Have never seen that before and do not seem to be able to reproduce the issue.

Did you try to simply create a new workflow? Refresh the browser? Hit your screen? All the other stupid things that sometimes solves such issues?

Hey @jan ! So weirdly, creating a new workflow seems to resolve the cron trigger not working!

I’ll later test to see if normal start triggers still have problems. Was tempted to do a completely fresh install of my instance…but takes a while to set up for security etc

Hey @jan & @harshil1712,

So all the trigger nodes seem to be working beside the start node.

If I have a workflow like this:

Start Node -> Node A -> Node B -> Node C

If manually run the play button of the start node, is it meant to execute the whole workflow? Because that’s what it’s not doing right now.

If I select Node C or hit the “Execute Workflow” button, then the whole flow gets run, but never when I click on “Start Node”.

Was this how it always worked?
Is the start node only useful for when being executed by another workflow?

No the play button of a node executes that node or all the not previously executed nodes before it. That is how it always worked.

thank you for the clarity! Really appreciate it!

Sure. Glad that we figured that out! Was quite confused about what was going on.

Have fun!

1 Like