Home
cd ../playbooks
CommunicationsIntermediate

Gmail Workflow Automation

Automate Gmail with intelligent workflows - attachment management, email organization, auto-archiving, and Google Drive integration

10 minutes
By communitySource
#gmail#google-drive#email-automation#workflow#n8n

You manually save email attachments to Google Drive, label emails by client, archive old threads, and forward invoices to accounting. Every day, the same 20 minutes of email housekeeping that should happen automatically.

Who it's for: professionals drowning in Gmail with no automation, teams needing email-to-Drive attachment workflows, operations managers automating email-based processes, anyone who spends the first 30 minutes of their day organizing email, small businesses using Gmail as a workflow tool

Example

"Auto-save invoice attachments to Google Drive and archive the emails" → n8n workflow that monitors Gmail for invoices, extracts PDF attachments, saves to the right Drive folder by month, labels the email, and auto-archives — triggered on every new matching email

CLAUDE.md Template

New here? 3-minute setup guide → | Already set up? Copy the template below.

# Gmail Workflows

Automate Gmail with intelligent workflows for attachment management, email organization, and Google Drive integration. Based on n8n's 7,800+ workflow templates.

## Overview

This workflow helps you design and implement Gmail automation workflows that:
- Automatically save attachments to Google Drive
- Organize emails with smart labeling
- Archive processed emails
- Send notifications via Slack/Email
- Track email metrics

## Core Workflow Templates

### 1. Gmail Attachment Manager

**Purpose**: Automatically extract attachments from emails and save to Google Drive

**Workflow Steps**:
```
┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ Gmail       │───▶│ Filter by   │───▶│ Extract     │───▶│ Upload to   │
│ Trigger     │    │ Criteria    │    │ Attachments │    │ Google Drive│
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                                                                │
                         ┌─────────────┐    ┌─────────────┐    │
                         │ Send        │◀───│ Apply Label │◀───┘
                         │ Notification│    │ & Archive   │
                         └─────────────┘    └─────────────┘
```

**Configuration**:
```yaml
trigger:
  type: gmail_new_email
  filters:
    has_attachment: true
    from: ["*@company.com", "*@vendor.com"]
    subject_contains: ["invoice", "report", "contract"]

actions:
  - extract_attachments:
      file_types: [pdf, xlsx, docx, csv]
      max_size_mb: 25
  
  - upload_to_drive:
      folder_path: "/Attachments/{year}/{month}"
      naming_pattern: "{filename}_{sender}_{date}"
      create_folder_if_missing: true
  
  - organize_email:
      apply_label: "Processed/Attachments"
      mark_as_read: true
      archive: true
  
  - notify:
      channel: slack
      message: "New attachment saved: {filename} from {sender}"
```

**Best Practices**:
- Use specific sender filters to avoid processing spam
- Set file size limits to prevent storage issues
- Use date-based folder structure for easy retrieval
- Enable duplicate detection to avoid redundant uploads

---

### 2. Invoice Auto-Archiver

**Purpose**: Automatically collect and organize invoices from email

**Workflow Steps**:
```
Gmail Trigger → Detect Invoice → Extract PDF → OCR/Parse → Save to Drive → Update Spreadsheet → Archive Email
```

**Configuration**:
```yaml
trigger:
  subject_patterns:
    - "invoice"
    - "bill"
    - "statement"
    - "付款"
    - "发票"

processing:
  - detect_invoice:
      methods: [subject_keywords, attachment_name, sender_domain]
  
  - extract_data:
      fields: [invoice_number, amount, date, vendor, due_date]
      use_ocr: true
  
  - save_to_drive:
      folder: "/Finance/Invoices/{year}/{vendor}"
      naming: "{date}_{vendor}_{amount}"
  
  - update_tracker:
      spreadsheet: "Invoice Tracker"
      columns: [Date, Vendor, Amount, Invoice#, Status, File_Link]
  
  - archive:
      label: "Finance/Invoices"
      star: true
```

---

### 3. Client Communication Organizer

**Purpose**: Automatically organize client emails by project/client

**Configuration**:
```yaml
rules:
  - name: "Client A Emails"
    condition:
      from_domain: "clienta.com"
    actions:
      - apply_label: "Clients/Client A"
      - forward_to: "team-a@company.com"
      - save_attachments: "/Clients/Client A/{subject}"

  - name: "Project X Updates"
    condition:
      subject_contains: ["Project X", "PX-"]
    actions:
      - apply_label: "Projects/Project X"
      - add_to_task: "Project X Board"
      - notify_slack: "#project-x"

  - name: "Urgent Requests"
    condition:
      subject_contains: ["URGENT", "ASAP", "紧急"]
      is_unread: true
    actions:
      - apply_label: "Priority/Urgent"
      - send_sms: "+1234567890"
      - move_to_inbox: true
```

---

### 4. Email Analytics Dashboard

**Purpose**: Track email metrics and generate reports

**Metrics to Track**:
```yaml
daily_metrics:
  - emails_received: count(inbox)
  - emails_sent: count(sent)
  - response_time_avg: avg(reply_time)
  - unread_count: count(unread)
  - attachment_count: count(has_attachment)

weekly_report:
  - top_senders: group_by(from, count)
  - busiest_hours: group_by(hour, count)
  - label_distribution: group_by(label, count)
  - response_rate: sent / received

automation:
  - schedule: "every Monday 9am"
  - output: Google Sheets
  - notify: Slack #email-metrics
```

---

## Implementation Guide

### Using n8n

```javascript
// n8n Workflow: Gmail to Google Drive
{
  "nodes": [
    {
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "parameters": {
        "pollTimes": { "item": [{ "mode": "everyMinute" }] },
        "filters": { "labelIds": ["INBOX"] }
      }
    },
    {
      "name": "Filter Attachments",
      "type": "n8n-nodes-base.if",
      "parameters": {
        "conditions": {
          "boolean": [{
            "value1": "={{ $json.hasAttachment }}",
            "value2": true
          }]
        }
      }
    },
    {
      "name": "Get Attachments",
      "type": "n8n-nodes-base.gmail",
      "parameters": {
        "operation": "getAttachments",
        "messageId": "={{ $json.id }}"
      }
    },
    {
      "name": "Upload to Drive",
      "type": "n8n-nodes-base.googleDrive",
      "parameters": {
        "operation": "upload",
        "folderId": "your-folder-id",
        "name": "={{ $json.filename }}"
      }
    }
  ]
}
```

### Using Google Apps Script

```javascript
// Gmail to Drive Automation
function processNewEmails() {
  const threads = GmailApp.search('has:attachment is:unread');
  const targetFolder = DriveApp.getFolderById('FOLDER_ID');
  
  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      const attachments = message.getAttachments();
      attachments.forEach(attachment => {
        // Save to Drive
        const file = targetFolder.createFile(attachment);
        
        // Rename with date and sender
        const newName = `${Utilities.formatDate(message.getDate(), 'GMT', 'yyyy-MM-dd')}_${message.getFrom()}_${attachment.getName()}`;
        file.setName(newName);
      });
      
      // Mark as processed
      message.markRead();
      thread.addLabel(GmailApp.getUserLabelByName('Processed'));
    });
  });
}

// Set up trigger
function setupTrigger() {
  ScriptApp.newTrigger('processNewEmails')
    .timeBased()
    .everyMinutes(5)
    .create();
}
```

---

## Common Workflow Patterns

### Pattern 1: Filter → Process → Organize → Notify

```
Email arrives
    │
    ▼
┌─────────────────┐
│ Apply Filters   │ → Skip if doesn't match
│ (sender, subject│
│  attachment)    │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Process Content │ → Extract data, attachments
│                 │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Organize        │ → Save files, apply labels
│                 │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Notify          │ → Slack, email, SMS
│                 │
└─────────────────┘
```

### Pattern 2: Batch Processing

```yaml
schedule: "daily at 6am"
steps:
  1. Collect all unprocessed emails from last 24h
  2. Group by category (invoices, reports, misc)
  3. Batch upload to respective Drive folders
  4. Generate summary report
  5. Send daily digest to stakeholders
```

### Pattern 3: Conditional Routing

```yaml
conditions:
  - if: attachment_type == "pdf" AND subject contains "invoice"
    then: route_to_finance_folder
  
  - if: from_domain in ["important-client.com"]
    then: priority_handling + immediate_notification
  
  - if: attachment_size > 10MB
    then: save_to_large_files_folder + skip_backup
  
  - default:
    then: standard_processing
```

---

## Troubleshooting

### Common Issues

| Issue | Solution |
|-------|----------|
| Attachments not detected | Check MIME type filters, increase trigger frequency |
| Duplicate files | Enable deduplication by hash or filename |
| Rate limits | Reduce trigger frequency, use batch processing |
| Permission errors | Re-authorize OAuth credentials |
| Large files failing | Set size limits, use chunked upload |

---

## Security Considerations

1. **OAuth Scopes**: Request minimal permissions
   - `gmail.readonly` for reading
   - `gmail.modify` for labels/archive
   - `drive.file` for Drive access

2. **Data Privacy**: 
   - Don't log email content
   - Use secure storage for credentials
   - Implement retention policies

3. **Access Control**:
   - Limit who can modify workflows
   - Audit automation activities
   - Use separate service accounts

---

## Output Example

**Daily Email Report**:
```markdown
# Email Activity Report - 2026-01-30

## Summary
- Emails Received: 47
- Emails Sent: 23
- Attachments Processed: 12
- Average Response Time: 2.3 hours

## Attachment Processing
| File | Sender | Saved To | Time |
|------|--------|----------|------|
| Invoice_Jan.pdf | vendor@co.com | /Finance/Invoices | 09:15 |
| Report_Q4.xlsx | team@company.com | /Reports/Q4 | 10:30 |
| Contract_v2.docx | legal@client.com | /Contracts | 14:22 |

## Labels Applied
- Finance/Invoices: 5 emails
- Projects/Active: 12 emails
- Clients/Priority: 8 emails

## Pending Actions
- 3 emails require manual review
- 2 large attachments need approval
```

---

*Gmail Workflows Workflow - Part of Claude Code*

Get new playbooks like this one

One email a week with new Claude Code workflows. Free, like everything here.

No spam. Unsubscribe anytime.

README.md

What This Does

Automate Gmail with intelligent workflows for attachment management, email organization, and Google Drive integration. Based on n8n's 7,800+ workflow templates.


Quick Start

Step 1: Create a Project Folder

mkdir -p ~/Documents/GmailWorkflows

Step 2: Download the Template

Click Download above, then:

mv ~/Downloads/CLAUDE.md ~/Documents/GmailWorkflows/

Step 3: Start Working

cd ~/Documents/GmailWorkflows
claude

Examples

Daily Email Report:

# Email Activity Report - 2026-01-30

$Related Playbooks

Communications

Intercom Automation

Automate Intercom customer messaging, support workflows, user engagement, and product tours

10 minutes
Advanced
Communications

Meeting Notes Structurer

Transform raw meeting notes and transcripts into structured documentation with action items and decisions.

10 minutes
Intermediate
Communications

Minto Pyramid: Structure Any Draft or Idea

Apply Barbara Minto's Pyramid Principle to any draft — extracts your one-sentence answer, diagnoses MECE argument gaps, and delivers a visual restructuring plan as a color-coded HTML artifact.

5 minutes
Intermediate
Communications

Microsoft Teams Integration

Automate Microsoft Teams messaging, meetings, channels, and workflow integrations

10 minutes
Advanced
Communications

Customer Communication Templates

Create a library of customer communication templates for onboarding, support, renewals, and lifecycle touchpoints.

10 minutes
Beginner
Communications

Email Drafting & Response

Draft professional emails and responses with the right tone, structure, and strategy for any situation.

5 minutes
Beginner
Communications

Executive Communication Ghostwriter

Draft executive communications — internal memos, LinkedIn posts, conference remarks — in the leader's authentic voice.

10 minutes
Intermediate
Communications

High-Stakes Communication Drafter

Draft sensitive communications — layoffs, crises, policy changes — with the right tone, structure, and anticipated reactions.

5 minutes
Intermediate
Communications

Rapid Presentation Builder

Go from key points to a complete slide deck with content, speaker notes, and Q&A prep in minutes instead of hours.

5 minutes
Beginner
Communications

Press Release & Media Statement Drafter

Draft professional press releases, media statements, and PR responses following standard formats and AP style.

5 minutes
Beginner
Communications

Proposal & Pitch Document Creator

Generate persuasive proposals and pitch documents tailored to prospect needs with pricing options and objection handling.

10 minutes
Intermediate
Communications

RFP & Contract Response Generator

Accelerate RFP and government contract responses with structured answers, compliance matrices, and win themes.

15 minutes
Intermediate

Browse all Communications playbooks →