Skip to main content
Rowboat automatically syncs your Gmail threads to make your email history searchable and accessible to your AI assistant.

Overview

The Gmail integration:
  • Syncs email threads from the last 30 days
  • Saves thread conversations as markdown files
  • Downloads and stores email attachments
  • Uses incremental sync to only fetch new messages
  • Runs automatically every 5 minutes

Prerequisites

Gmail integration requires Google OAuth setup. You’ll need to create a Google Cloud project and enable the Gmail API.

Google OAuth Setup

Follow these steps to connect Gmail to Rowboat.
1

Open Google Cloud Console

Go to Google Cloud Console and make sure you’re logged into the Google account you want to use.
2

Create a New Project

Go to Create Project
  • Click Create Project
  • Give it a name (e.g. Rowboat Integration)
  • Click Create
Once created, select the new project in the top project dropdown.
3

Enable Gmail API

4

Configure OAuth Consent Screen

Go to OAuth Consent ScreenApp Information:
  • App name: Rowboat
  • User support email: Your email
Audience:
  • Choose External
Contact Information:
  • Add your email address
Click Save and Continue through the remaining steps.
You do NOT need to publish the app — keeping it in Testing mode is fine.
5

Add Test Users

If your app is in Testing mode, you must add users manually.Go to Test UsersUnder Test Users:
  • Click Add Users
  • Add the email address you plan to connect with Rowboat
Save changes.
6

Create OAuth Client ID

Go to CredentialsClick Create Credentials → OAuth Client IDApplication Type:
  • Select: Universal Windows Platform (UWP)
  • Name: Rowboat Desktop
  • Store ID: test
  • Click Create
7

Copy the Client ID

After creation, Google will show:
  • Client ID
  • Client Secret
Copy the Client ID and paste it into Rowboat where prompted.

How It Works

Sync Configuration

The Gmail sync runs automatically with these settings:

Thread Storage Format

Each Gmail thread is saved as a markdown file:

Incremental Sync

Rowboat uses Gmail’s History API for efficient syncing:
  1. First Sync: Fetches all threads from the last 30 days
  2. Subsequent Syncs: Only fetches new messages using history ID
  3. State Tracking: Saves history ID to sync_state.json
If the history ID expires (404 error), Rowboat will automatically fall back to a full sync.

Attachment Handling

Attachments are automatically downloaded and stored:
  • Location: ~/rowboat/gmail_sync/attachments/
  • Naming: {messageId}_{filename}
  • Deduplication: Skips if already downloaded

Trigger Manual Sync

You can trigger an immediate sync programmatically:

Troubleshooting

401 Unauthorized Error

If you see authentication errors, Rowboat will automatically clear the OAuth cache:
You’ll need to reconnect your Google account.

Rate Limiting

Gmail API has rate limits. Rowboat handles this by:
  • Syncing every 5 minutes (not more frequently)
  • Using incremental sync to minimize API calls
  • Caching message data locally

Missing Emails

Only emails from the last 30 days are synced. To change this, modify LOOKBACK_DAYS in the configuration.

Files Synced

Privacy & Security

  • Read-Only Access: Uses gmail.readonly scope
  • Local Storage: All data stored locally on your machine
  • No Cloud Sync: Emails never sent to external servers
  • OAuth Tokens: Securely managed by Google’s OAuth flow