Describe the problem/error/question
I am managing 70+ Google Sheets triggers (polling every 2-3 mins watching a column called “Execute” acting as a trigger) for automated rendering of videos using creatomate. The triggers have become completely unreliable.
1. Missed Triggers: Rows marked “Execute” are frequently ignored.
2. False Fires: I see dozens of “Failed” executions in my history. When I open them, they show the workflow started but failed immediately because the trigger didn’t actually pull any row data, or it triggered on an empty change.
3. Scaling: Managing 70 separate trigger nodes is no longer sustainable.
What is the error message (if any)?
main problem is that they dont fire when i want them to, with the false fires i get: “Execution failed: Workflow could not be started.”
Please share your workflow
Information on your n8n setup
- n8n version: 1.123.18
- Database (default: SQLite): SQLite
- n8n EXECUTIONS_PROCESS setting (default: own, main):own, main
- Running n8n via (Docker, npm, n8n cloud, desktop app):n8n cloud
- Operating system: macOS
hi @walshito
google sheets triggers polling every few minutes is usually the root of the problem here.In setups like this I’ve had much better results by:
– Reducing triggers to a single Sheets trigger
– Using one Execute column as a queue (filter rows inside the workflow)
– Or switching to an event-based approach (Apps Script or webhook) instead of polling
1 Like
Hi @walshito,
Using 70+ sheets trigger is really nod advised instead utilize a single scheduled or polling workflow rather than 70 Google Sheets Triggers to centralise logic and avoid trigger level flakiness, and stay within scaling limits for large deployments with this approach you are using Interval or Cron ➔ Google Sheets “Get Row(s)” for all relevant sheets ➔ Filter on Execute = true. Hope this helps.
1 Like
Managing 70+ triggers is the real bottleneck here and likely triggers some google rate limits,
I’d switch to a Single Master Poller so I can just branch off from there,
One master trigger to rule them all! 
2 Likes
How would you recommend i go about making the one single master poller? Apps script + webhook?
Thanks for your help!
This is what I mean:
Every X amount of time, you check what you need for each sheet (branch), You’ll probably need to add a deduplication step and maybe some wait to be within rate limits.
It looks similar to the triggers approach, but I’d try this first before doing anything else, like aggregating data into a single spreadsheet to reduce the calls,
I also think that adding some waiting should help stay within Google’s limits..
2 Likes
Hey @walshito , Use “schedule trigger” node
So would you say having a schedule trigger running 7 get row(s) nodes every 2 mins is more reliable than having 7 polling nodes every 2 mins?
Maybe i could offset them? (have 3 running every 2 mins and 4 every 3 mins for example)
Although then this would be expensive in terms of executions no? Is there any way to make it not run during certain hours, to avoid using executions while its not being used?
Thanks!!!
When you have 7 separate triggers, they operate independently as separate executions, This means they likely all fire at the exact same time, causing a bottleneck that instantly spikes your API usage per min and hits Google’s rate limits..
By putting all 7 Google Sheets nodes into one workflow (connected to one schedule trigger), they will execute sequentially according to n8n’s flow logic. This gives you the control to add ‘Wait’ nodes for each branch if needed, This is also cheaper in terms of total executions, Just keep in mind that your logic needs to be robust enough to handle limits, errors, and deduplication..
Regarding your idea to keep the current approach but avoid certain hours: you can try this as well using Cron Expression, but I am afraid they might still start at the same time eventually, even with different intervals. If you do try it, set them to distinct times (3 min, 5 min, 8 min)..