> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userepo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gmail

> Threads, headers, and message bodies. gmail.readonly scope. Currently gated.

<Note>
  **Gmail is gated during private beta.** Same Google verification timeline as [Drive](/connectors/google-drive). Click **Request access** on the Gmail card → we'll email you when you're cleared as a Google Cloud test user → **Connect** works after that.
</Note>

## What's ingested

* Message headers (From, To, Cc, Subject, Date)
* Message bodies (text/plain preferred, text/html stripped of tags)
* Thread structure (message IDs link replies to their parent threads)
* Labels (Inbox, Sent, custom labels)

## What's NOT ingested

* Attachments (only filename + metadata)
* Drafts
* Spam and Trash folders
* Embedded images

## OAuth scopes

* `https://www.googleapis.com/auth/gmail.readonly` (restricted — requires Google verification)
* `https://www.googleapis.com/auth/userinfo.email`
* `https://www.googleapis.com/auth/userinfo.profile`

## Sync cadence

Auto-sync every 15 minutes. The Gmail connector uses an incremental cursor based on `after:YYYY/MM/DD` queries — only messages newer than the last sync are fetched.

### Per-sync cap

Each sync run caps at **200 messages** to avoid hammering the Gmail API on first connect for heavy mailboxes. If you have a 10,000-message backlog, expect \~50 sync cycles to catch up (about 12 hours at the default 15-minute schedule). To accelerate, run `fullResync` runs manually from the console.

## Access model

Gmail's access model is per-mailbox — when a user authorizes Repo against their Gmail, Repo can read everything that user can read in that mailbox. The ingested source items carry `accessPolicy: { mode: "provider_scope", accountEmail: "owner@example.com" }` so downstream retrieval can be scoped by the connecting account.

There's no "this email is visible to user X" granularity inside a mailbox — Repo treats the entire mailbox as belonging to the authorized account.

## Limitations

* Same Google verification + test-user constraints as Drive
* Sent items show up but `From` headers are the sender's address, not "me" — your prompt should be aware of this when filtering
* Vacation responder messages, calendar invites, and other auto-generated emails are ingested as regular messages (no special filtering yet)

## Where this gets cited

```
[1] Brand colors v2 — From: Sam Rivera <sam@brand.example> (3 hours ago)
    https://mail.google.com/mail/u/0/#inbox/THREAD_ID
```

Repo links directly to the Gmail thread URL so the user can verify the source. The URL works only when the user is logged into the correct Google account.
