n8n Google Drive Trigger Not Working? Why New Files Don't Trigger, and a Reliable Fix

"Google Drive New file trigger not working" is the most-viewed Google Drive Trigger thread on the n8n forum (3,485 views on Oct 30, 2026), and it never got an accepted answer. The same problem shows up as trigger on changes in a specific folder not working, only the newest file is returned when several are uploaded and multiple file create. The usual report: Test workflow picks up a file, the active workflow does nothing. This page explains why, cause by cause, from the trigger's source code, and then gives a pattern that doesn't depend on the trigger at all.

Free n8n downloads that pair with a Drive intake: the AI JSON guard (validates and repairs what an LLM extracts from each file) and the Google Sheets bulk AI runner (runs a prompt over every row of a file log, resumes after errors). Free workflow JSON, no credentials inside.
Sheets Bulk AI Runner Pro Kit: $19

Paid option: if your Drive intake logs files to a Google Sheet and you run AI over each row, the Pro Kit adds the Google Sheet header CSV, a 10-minute setup guide and an offline test kit (a local OpenAI, Google Sheets and Gmail mock with the 15-scenario runner), so you can watch the retries and resume work before you use a real API key. The free workflow JSON stays free.

How the trigger actually works

The Google Drive Trigger is a polling node, not a push webhook. n8n's docs say it checks once a minute by default (Google Drive Trigger common issues). In the node's source (n8n 2.45.7), each poll does this:

  1. It remembers the time of the last poll (lastTimeChecked). On the very first poll after activation it uses "now", so files that were already in the folder are ignored.
  2. It asks the Drive API for files where 'FOLDER_ID' in parents, trashed = false and the file is not a folder.
  3. For File Created it adds createdTime > lastTimeChecked. For File Updated it adds modifiedTime > lastTimeChecked.
  4. It sets lastTimeChecked to the time of this poll and returns every matching file as one item each, all in a single execution.

Almost every "not working" report maps to one of those four steps.

Cause 1: the file was moved in, or added with "Add to Drive"

File Created filters on the file's createdTime. A file you move into the watched folder, or save from Gmail with Add to Drive and then move, keeps the creation time it already had. That time is older than the last poll, so the query never matches it. That is exactly the case in t/49965: uploading the file triggered, moving it in didn't.

Fix: set Watch For to File Updated. In the same thread an n8n team member tested it: moving 1 new file into the folder fired File Updated with 1 item. The catch: File Updated also fires when anyone edits or renames a file in that folder, so add a duplicate check (below) if you only want each file once. One later poster in that thread still had File Updated not fire on n8n 1.54.4, so if it doesn't work for you either, use the pattern at the end of this page.

Cause 2: the file is in a subfolder

The query is 'FOLDER_ID' in parents, which only matches files directly inside that folder. The node shows a notice for this: "Changes within subfolders won't trigger this node". Watch each subfolder with its own trigger, or have people drop files into the top folder.

Cause 3: it works in Test but not when active

The two modes run different queries:

Test (manual)Active (production)
Time filterNonecreatedTime or modifiedTime after the last poll
Files returned1 (pageSize = 1)All matches, every page
Nothing foundError: "No data with the current filter could be found"No execution at all

So a test run finds some file in the folder, even an old one, and proves nothing about whether the active workflow will see your next file. To test the real behavior: save, activate, wait for one poll, then add a brand-new file (upload it, don't move it, if you use File Created) and watch the Executions list. Also check that the workflow is actually active; the n8n team asks this first in the forum for a reason.

Cause 4: "it only returns one file" when several arrive

In test mode that's expected: pageSize = 1. When active, all files found in one poll arrive as separate items in one execution, which n8n's common-issues page also notes. If only one file gets processed, look downstream: a node with Execute Once turned on, or an expression like $('Google Drive Trigger').first(), only handles the first item. Use $json (the current item) instead, or put a Loop Over Items node after the trigger if a later step must run once per file.

Cause 5: the File Type option filters out normal uploads

The trigger's File Type option only offers Google types. In the source, "Photos and Images" is application/vnd.google-apps.photo and "Videos" is application/vnd.google-apps.video. Google's MIME type list describes these as Google Photos and Google Drive video types, while an uploaded JPEG or PDF keeps its own type (image/jpeg, application/pdf). We read this from the code and did not test it against a live account, but if you set File Type to anything except [All] for uploaded files and nothing triggers, set it back to [All] and filter by mimeType in an If node after the trigger.

Cause 6: credentials and the API

Cause 7: a file shows up "late"

Each poll only looks forward from the previous poll's time, and a file is never looked at twice. Any file whose createdTime is already older than the last poll by the time Drive's search returns it is skipped for good. Moves and Add to Drive are the clear cases (cause 1). We haven't measured how often other upload paths, such as desktop sync clients, hit this, but it fits reports like "File Created works sometimes" in t/49965. If you can't afford to miss a file, don't rely on time windows at all.

The reliable pattern: Schedule + Search + Move

Let the folder itself hold the state: anything still in the inbox folder hasn't been processed yet.

  1. Schedule Trigger, for example every 5 minutes.
  2. Google Drive node, Resource File/Folder, Operation Search, Search Method Advanced Search, Query String trashed = false, Return All on. Under Filter, set Folder to your inbox folder (and Drive if it lives in a shared drive) and What to Search to Files. The node turns the Folder filter into 'FOLDER_ID' in parents, so you get the files inside the folder.
  3. Your processing steps (download, extract, AI, Sheets row), one item per file. If a later node fails with "The first argument must be of type string or an instance of Buffer ... Received undefined", a file got lost between nodes: see the n8n Buffer "Received undefined" guide.
  4. Google Drive node, File → Move, into a Processed folder, as the last step. If a run fails before this step, the file is still in the inbox and the next run picks it up. Point failed files at an Errors folder instead, so one bad file doesn't retry forever.

It catches moved files, Add to Drive files and late files, because it doesn't care when a file was created. It also never processes a file twice, because finished files leave the folder.

Can't move files? If the files must stay where they are, add a Remove Duplicates node after the Search, Operation Remove Items Processed in Previous Executions, Keep Items Where Value Is New, Value to Dedupe On {{ $json.id }}. It remembers 10,000 IDs by default (n8n docs). The same node after a File Updated trigger stops edits and renames from processing a file twice.

"Search returns the folder, not the files in it"

That's a separate, popular question (t/55189, t/44983). With Search Method Search File/Folder Name, the node searches name contains '…', so typing the folder's name finds the folder itself. To list what's inside it, leave the name out and use Filter → Folder as in step 2. Note that this lists direct children only, not subfolders.

What we checked

Everything above about the trigger and the Search node comes from the n8n source at release 2.45.7 (Oct 30, 2026), n8n's docs, and the forum threads linked. We have not run these steps against a live Google account. If something behaves differently on your version, the code links show what to compare.

Free n8n downloads that pair with a Drive intake: the AI JSON guard (validates and repairs what an LLM extracts from each file) and the Google Sheets bulk AI runner (runs a prompt over every row of a file log, resumes after errors). Free workflow JSON, no credentials inside.

FAQ

Why does the n8n Google Drive Trigger work in test but not when active?
Test mode returns one file in the folder with no time filter, so it finds any file, even an old one. Active mode only returns files whose created (or modified) time is after the previous poll. Activate the workflow, wait for one poll, then add a brand-new file to test it.

Why doesn't the Google Drive Trigger fire when I move a file into the folder?
File Created filters on the file's createdTime, and a moved file keeps its original creation time. Use File Updated, which an n8n team member confirmed fires for files moved into the folder, or use a Schedule Trigger with a Drive Search of the folder.

Does the Google Drive Trigger watch subfolders?
No. It only matches files directly inside the watched folder, and the node says so: changes within subfolders won't trigger it.

Why does the Google Drive Trigger return only one file?
In test mode it asks Drive for one file only. When the workflow is active, every file found in a poll comes in as a separate item in one execution; if only one is processed, check for Execute Once or .first() in the nodes after it.

What is the most reliable way to process new Google Drive files in n8n?
Run a Schedule Trigger, search the folder with the Google Drive node (Filter: Folder, What to Search: Files, Return All), process each file, then move it to a Processed folder. Files left in the folder are retried on the next run, so nothing is missed or processed twice.