"Couldn't Preview File" When Uploading to Google Drive

I have created a scenario that automated the uploading of a PDF (of 391KB - pretty small) to a folder in Google Drive.

With the EXACT SAME input sometimes it works flawlessly and other times it doesn’t saying (when opening the file in the Drive UI): “Couldn’t preview file. You may be offline or with limited connectivity. Try downloading instead.”

I have successfully gotten these results with the following methods:

  • Makes native Google Drive Upload module.
  • HTTP Create File + HTTP PATCH File request (multipart upload).
  • HTTP POST + PUT request (resumable upload)

I have tested with and without using the “toBinary()” function also.

There’s also no way to see if the file is dodgy in the backend so no way of building in a testing, deleting and reuploading sequence into the flow.

I’m baffled as I’ve exhausted all methods (it seems), the file size is pretty small and no one else seems to have this issue.

Can anyone help? is this just a Google Drive or Make limitation?

Hey SAMEROCK!

I’ve seen this exact issue before with Google Drive uploads through Make.com. It’s frustrating because it’s intermittent and hard to debug. Here are some solutions that have worked:

Most Common Causes & Fixes:

1. Add a Delay After Upload (Most Effective) Google Drive sometimes needs a moment to process the file after upload. Add a Sleep module (2-5 seconds) after your upload, then verify the file:

Upload → Sleep (3 seconds) → Google Drive Get a File → Check file size

2. MIME Type Issues Make sure you’re explicitly setting the correct MIME type:

  • In the Upload module, set MIME Type to: application/pdf
  • Even if it seems automatic, explicitly setting it helps

3. Binary Data Handling Try this exact sequence for your PDF data:

{{toBinary(base64(your_pdf_data))}}

If your data is already binary, try:

{{your_pdf_data}}

Without any conversion functions at all.

4. Use “Convert to Google Docs Format” = NO In the Google Drive Upload module, make sure “Convert to Google Docs format” is set to NO. This can corrupt PDFs.

5. Add File Verification Step Build this into your scenario:

Upload File → Sleep (3 sec) → Google Drive: Get a File → Router
  → Route 1 (if file.size > 0): Success
  → Route 2 (if file.size = 0 or null): Delete & Retry Upload

6. Check Your PDF Source Where is the PDF coming from? If it’s from:

  • Another module output: Make sure it’s fully processed before upload
  • Webhook: Ensure the webhook fully receives the file before proceeding
  • HTTP module: Add error handling to verify complete download

7. Use Multipart Upload with Specific Headers If using HTTP method, ensure headers include:

Content-Type: multipart/related; boundary=foo_bar_baz

Blueprint Structure That Works:

[Source] → [Optional: Data Transformation] → Sleep (2 sec) → Google Drive Upload (MIME type explicit) → Sleep (2 sec) → Google Drive Get File → Filter (check size > 0) → Continue or Retry

Debug Method: Add a Google Sheets logging module after upload that records:

  • Upload timestamp
  • File ID
  • File size returned by Drive
  • Success/failure

Run it 20 times and see if there’s a pattern (time of day, specific file characteristics, etc.).

One More Thing: Try using the Google Drive > Create a File from Text module if your PDF is base64 encoded. Sometimes it handles binary data better than the regular Upload module.

Which method are you currently using, and where is the PDF coming from in your scenario? That might help narrow down the exact cause.

Sam @ Flow Digital

I have isolated the issue, it was the fact that I was using Makes native iterator module to iterate attachments. I thought it couldn’t be and believed these flow control modules were 100% reliable and they’re not.

As soon as I took it out by using the Gmail iterate attachments or just passing the Array through (even if messy) I got a 100% file render rate.

FYI:

  • All the uploads are “Successes” and the file size is the same.
  • Hardcoding the MIME type, introducing a sleep module, testing with or without the “toBinary” function didn’t make a difference.

Appreciate the help and hope this helps someone in the future!