Guide · Make.com + Gmail + Google Drive

Save Gmail attachments to Google Drive automatically with Make.com

Invoices, signed contracts and client files arrive as email attachments, and someone has to download them and drop them in the right folder every time. This guide builds a Make.com scenario that does it for you: it picks out the emails you care about, creates a folder for each month, and saves every file with the date in its name.

By Flowpaja · Published

Also in: Deutsch / Español / Français

Gmail Watch emails with a Gmail filter query, a monthly Google Drive folder 2026-10 created only if missing, and Upload a File saving a file named with the date, such as 2026-10-01_inv.pdf
Watch emails filters the mail, the folder is created only once, and each file gets the date in its name.
Disclosure: everything in this guide works with plain Make.com and the apps it connects. At the end we mention our own Make templates and our Make scenario fix service on Fiverr. Module names, settings and limits were checked against Make's Gmail modules and Google Drive modules in October 2026. Menus and limits change, so check them if something looks different.

What you need

  • A Make.com account (the free plan is enough to build and test this)
  • A Gmail account and a Google Drive account, both connected to Make
  • A parent folder in Drive, for example "Supplier invoices"
  • One real email with an attachment in your inbox, to test with

Step-by-step build

1. Add the trigger: Gmail – Watch emails

Create a new scenario and add Gmail – Watch emails. Pick your Gmail connection, set Filter type to Gmail filter, choose the Inbox folder and enter a query such as:

from:[email protected] subject:invoice has:attachment

This is the same syntax as the Gmail search box. If you pick Simple filter instead, you get separate fields, including Only emails with attachments/media. Filtering in the trigger is better than filtering later: emails that don't match never become bundles, so they use no credits in the modules after the trigger. The trigger check itself still uses a credit on every scheduled run. For the first test, set the starting point to a specific email rather than "from now on", so you have data to map. Set Limit to something small, like 10 (Make allows up to 500), and click Run once.

2. Look at the output

Open the bubble on the module. The email's sender, subject, date and an attachments array should be there. Each item in the array has a file name and the file data itself. Field names can differ slightly, so use what you see in the bubble.

3. Check whether this month's folder exists: Google Drive – Search for Files/Folders

Add the search module, set Retrieve to folders and Search to Enter custom search query, then search for a folder named after the email's month, inside your parent folder:

name = '{{formatDate(1.date; "YYYY-MM")}}' and mimeType = 'application/vnd.google-apps.folder' and '<parent folder ID>' in parents and trashed = false

Replace 1.date with the date field from your trigger module and paste the real ID of your parent folder. Set the limit to 1.

4. Count the results: Flow Control – Array aggregator

When a search finds nothing, the scenario normally stops right there. An aggregator placed after the search still produces one bundle with an empty array, which lets you act on "not found". Set the source module to the search from step 3 and aggregate the folder id.

5. Add a Router with two routes

Route 1 creates the folder when it is missing. Put a filter on it: the length of the aggregated array, equal to 0. Then add Google Drive – Create a Folder, with the name {{formatDate(1.date; "YYYY-MM")}} and your parent folder as the location.

Route 2 has no filter and runs after route 1, because a Router goes through its routes in order. This is the main path. Whether the folder existed or was just created, it now exists.

6. On route 2, search for the folder again

Add a second Google Drive – Search for Files/Folders with the same query as step 3. This returns the folder ID you need, whether it was found the first time or just created.

7. Loop over the attachments: Flow Control – Iterator

Set the array to the attachments array from the trigger. Each attachment now becomes its own bundle.

8. Filter out signature junk

Click the link between the iterator and the next module and add a filter. Logos and tracking pixels arrive as attachments too. A simple rule is: file name, matches pattern (case insensitive):

\.(pdf|xlsx|docx|csv)$

Adjust the list to the file types you actually want.

9. Upload: Google Drive – Upload a File

Choose the folder by mapping the ID from the second search. For the file name, use the date plus the original name:

{{formatDate(1.date; "YYYY-MM-DD")}}_{{7.fileName}}

Map the Data field to the iterator's file data. The module numbers in your scenario will differ from the ones here, so pick the fields from the mapping panel.

10. Test, then switch it on

Run once with your test email and check Drive: the folder, the file name, and that the file opens. Then set the trigger to "from now on" and schedule the scenario, for example every 15 minutes. Check your plan's minimum interval in the current Make UI.

Common errors and fixes

Files upload but won't open, or are 0 bytes. The Data field was mapped to the whole attachments array or to a text field instead of the file data of the current iterator item. Remap it from the iterator, not the trigger.

Dozens of PNG files named image001.png. Email signatures. Add the file-type filter from step 8, or filter on file size if your suppliers send odd formats.

Two folders called 2026-10. Within one run Make handles the emails one after another, so the cause is usually elsewhere: two runs overlapping (for example a Run once while the scheduled run is still going), the searches using slightly different name formats, or Google Drive not yet returning a folder that was created a moment earlier. Avoid manual runs while the schedule is on, use exactly the same name format in every search, and if it still happens, add Tools – Sleep for a few seconds after Create a Folder.

"File not found" or a permissions error on upload. The Google connection belongs to a different account than the one that owns the folder, or the folder lives in a shared drive. Reconnect with the right account. For a shared drive, choose Google Shared Drive as the drive in the module; Make's documentation says that option only works with Google Workspace accounts.

The scenario ran but nothing was saved. Either the filter in step 8 blocked everything, or the email had no real attachment. Open the execution history and see how many bundles left the iterator.

Large files fail. Make limits file size per plan, and Google has its own limits. Check the current limits for your plan before building a scenario around big files.

FAQ

Will it save attachments from emails I already have?
Only if you set the trigger's starting point to an earlier date or pick an old email manually. With "from now on" it only handles new mail.
Can I save only PDFs?
Yes. The pattern filter in step 8 does that. Put just \.pdf$ in it.
Does it work with a shared drive?
Yes, with a Google Workspace account. Choose Google Shared Drive in the Drive modules and make sure the connected account has access to that drive. With a personal Google account, Make's documentation says this option returns an Invalid Value error.
How many credits does one email use?
Make counts usage in credits (older plans and docs say operations). Most module actions use one credit each, so the folder check adds a few credits per email and each attachment adds an upload on top. The execution history shows the exact number for your build.

Rather not wire this up yourself?

We don't sell a ready-made version of this exact scenario. If your build fails or you want a second pair of eyes, send the exported blueprint and a description of the problem to our Make scenario fix service on Fiverr. Our Make.com templates cover invoice reminders, quote follow-ups and form leads.

Stuck on an error in your own Make scenario? Make scenario fix / debugging on Fiverr, from $25: send the exported blueprint and a description of the error, no logins needed.

← All guides · All templates

Google, Gmail, Google Sheets, Google Drive, Typeform and Make are trademarks of their owners. Flowpaja is independent and not affiliated with or endorsed by them. Menus and features change; check the providers' current help.