# Google Mail

## Overview

Gmail, Google's email service, offers a comprehensive platform for communication and productivity.
With features like advanced search capabilities, powerful filters, and seamless integration with other Google Workspace tools,
Gmail is a cornerstone of modern email management.

By integrating Suger with Gmail, users can leverage automation workflows to enhance email productivity.
Tasks such as sending emails, applying labels for organization, and managing threads can be automated, improving efficiency and enabling customized email workflows tailored to specific needs.

You can connect Gmail at two levels:

- **Org-Level**: Connect once for your organization, so Suger can send automated email from a corporate mailbox that everyone's workflows share. There are **two connection methods** to choose from — a **Service account** with domain-wide delegation, or **Sign in with Google** — described below.
- **User-Level**: Each user connects their own Gmail account via OAuth 2.0, so automated emails are sent from that person's own inbox.

## Create Integration (Org-Level)

Org-level Gmail offers **two connection methods**. Both are set up from the same **Gmail** card under **Settings → Integrations**: click the **Connect** dropdown and pick the method you want.

| Method | Choose this when | Scopes granted |
|--------|------------------|----------------|
| **Service account** | You run Google Workspace and want Suger to send as a corporate address (for example `sales@company.com`) with no person signing in and no user's token to expire. Requires a Workspace admin to authorize domain-wide delegation. | **Send only** (`gmail.send`) |
| **Sign in with Google** | You want to authorize a mailbox directly, in a browser, with **no Workspace admin action required** — the fastest path, and the only one available if you are not on Google Workspace. | **Send and read** |

:::tip[Which should I pick?]
Pick **Service account** if you need a durable, admin-governed corporate sender and only ever need to *send*. Pick **Sign in with Google** if you want to be connected in a minute, cannot get a Workspace admin to authorize delegation, or need Suger to *read* mail as well as send it — the send-only scope on the service-account method is deliberate and cannot be widened after the fact.
:::

Your organization connects **one way at a time**. Once connected, the Gmail card shows **"Connected via {method}"** — for example *Connected via Sign in with Google* — so you can always tell which method is in force. To switch methods, delete the integration and connect again with the other one.

![The Gmail card in Settings → Integrations with its Connect control opened — a two-item menu offering "Sign in with Google" and "Service account"](images/gmail-connect-dropdown.png)

### Method 1 — Service account (domain-wide delegation)

This method is designed for company-wide automation where Suger sends email by impersonating a specific corporate address (for example, `sales@company.com`) without a user manually signing in.

1. [Create a service account](https://docs.cloud.google.com/iam/docs/service-accounts-create) in your target GCP project for Google Mail integration.
    :::info
    - Grant the service account with the IAM role `Service Account Token Creator` under the GCP project.
    :::
2. [Enable the Gmail API](https://console.cloud.google.com/apis/api/gmail.googleapis.com/metrics) in the same Google project.
3. [Create the service account key](https://docs.cloud.google.com/iam/docs/keys-create-delete#creating), and download the associated JSON file. It is required for the following integration.
4. [Enable G-Suite Domain-wide Delegation](https://developers.google.com/workspace/guides/create-credentials#optional_set_up_domain-wide_delegation_for_a_service_account) for the service account.
    :::info
    - In the "OAuth Scopes" field, only select the scope `https://www.googleapis.com/auth/gmail.send`.
    :::
5. Specify the impersonated email address, select the appropriate scopes configured in the previous step, and store the JSON key file contents within the Suger console integration page.
    :::info
    - Enter the Impersonation Email (a user email from your company) that Suger will impersonate to send emails on behalf of the user. **It MUST be a user email, instead of a group email**, since the group email can't be impersonated.
    - Select only the scope `https://www.googleapis.com/auth/gmail.send`.
    :::

> ![Google Mail Org Integration](images/google-mail-integration.jpg)

:::warning[**Send as (Workspace user email)** is required]
The connect form asks for **Send as (Workspace user email)** and this field is **not optional** for Gmail. A service account has no mailbox of its own, so a connection without it would be accepted and then fail on every send. It must be a valid Google Workspace **user** email address — a group address cannot be impersonated — and it must be one the domain-wide delegation you authorized in step 4 actually covers.
:::

The default scope for this method is **send only** (`https://www.googleapis.com/auth/gmail.send`). Domain-wide delegation is all-or-nothing: a request asking for any scope your Workspace admin did not authorize fails entirely, so if you need Suger to read mail as well, use **Sign in with Google** instead.

### Method 2 — Sign in with Google (OAuth)

This method authorizes a mailbox directly in the browser, using the same Google OAuth application as the user-level connection. **No Workspace admin action is required**, and it grants both **send and read** scopes.

1. In the Suger Console, go to **Settings → Integrations** and find the **Gmail** card.
2. Open the **Connect** dropdown and choose **Sign in with Google**.
3. You are redirected to the Google sign-in page. Sign in with the mailbox your organization should send from — this is the account every workflow in your organization will send as, so use a shared or role mailbox rather than a personal one.
4. Review the requested access and click **Allow**.
5. Once you are redirected back to the Suger Console, click **Verify**. A **Verified** status confirms the connection is ready.

![The Integrations catalog — the Gmail card showing "Connected via Service account", the label that tells you which of the two org-level methods is in use](images/gmail-connected-via.png)

:::caution
Because this is a normal OAuth grant on a real Google account, it is tied to that account's continued existence and consent. If the mailbox owner leaves and the account is deleted, or someone revokes Suger's access from their Google account, org-wide sending stops until you reconnect. A shared/role mailbox — or the service-account method — avoids that.
:::

## Create User Integration

User-Level integration is personal and precise. It lets Suger send emails that look like they came from you, while automation handles the repetitive work.

- **OAuth 2.0 Security**: Suger never sees, asks for, or stores your Google password. The connection is a secure, token-based handshake.
- **Responsive automation**: Send automated private offer links and follow-up sequences the moment a buyer hits a milestone.
- **Thread management**: Keep your deal discussions organized without jumping between tabs.

1. In the Suger Console, go to the **User Integrations** section (under your profile settings). Locate the **Google Mail** card and click **Connect Now**.

    > ![Google Mail Connect Now](images/user-integration-connect-gmail-to-suger-1.jpg)

2. You will be redirected to the Google sign-in page. Select the account you want to use for your marketplace deals.
3. Review the request and click **Allow**. This grants Suger the permissions needed to read and send emails related to your marketplace workflows.

    > ![Google Mail User Consent](images/user-integration-connect-gmail-to-suger-2.jpg)

4. Once you are redirected back to the Suger Console, find your new integration and click **Verify**. A **Verified** status confirms Suger is ready to send on your behalf.

## Suger AI Tools

Suger AI uses a **middleware** strategy — wrapping the Gmail API directly.

**Profile & Labels**

| Tool | Description |
|------|-------------|
| `googlemail_get_profile` | Get the authenticated user's Gmail profile |
| `googlemail_list_labels` | List all Gmail labels (system and user-created) |

**Messages**

| Tool | Description |
|------|-------------|
| `googlemail_list_messages` | List messages using Gmail search syntax |
| `googlemail_get_message` | Get a message (headers by default) |
| `googlemail_get_message_body` | Get a message with fully decoded body (plain text + HTML) |
| `googlemail_send_mail` | Send an email (plain text, HTML, or threaded reply) |
| `googlemail_reply_to_message` | Reply to a message, preserving thread |
| `googlemail_modify_message_labels` | Add or remove labels on a message |
| `googlemail_batch_modify_messages` | Apply label changes to up to 1,000 messages at once |
| `googlemail_get_attachment` | Download a message attachment |
| `googlemail_trash_message` | Move a message to Trash |
| `googlemail_untrash_message` | Restore a trashed message |

**Threads**

| Tool | Description |
|------|-------------|
| `googlemail_list_threads` | List conversation threads |
| `googlemail_get_thread` | Get all messages in a thread |
| `googlemail_modify_thread_labels` | Add or remove labels on an entire thread |
| `googlemail_trash_thread` | Trash an entire thread |
| `googlemail_untrash_thread` | Restore a trashed thread |

**Drafts**

| Tool | Description |
|------|-------------|
| `googlemail_list_drafts` | List drafts |
| `googlemail_create_draft` | Save an email as a draft |
| `googlemail_get_draft` | Get a draft |
| `googlemail_update_draft` | Replace a draft's content |
| `googlemail_send_draft` | Send a previously saved draft |
| `googlemail_delete_draft` | Permanently delete a draft |

## Edit Integration

> Editing is not supported for security reasons. To change configuration, delete the integration and create a new one.

:::info
- If your OAuth token expires, or you change your Google password or rotate your GCP service account keys, delete the integration in Suger and recreate it to refresh access.
- When switching from a personal to a corporate account, delete the current integration first to ensure no stale tokens remain.
:::

## Delete Integration

The Google Mail integration can be deleted like all other integrations. Once the deletion is triggered, all integration info including the service account key and access tokens will be deleted immediately & permanently from Suger. No time window or methods to recover.

:::warning
- For a Service Account integration, also delete the service account and its key in the GCP Console to fully revoke access.
- Deleting the integration in Suger does not automatically revoke permissions granted in Google.
  To fully disable access, the user must also revoke the application's permissions in their Google account.

  Steps to revoke Google permissions:
  1. Go to Google Account → Security
  2. Open Your connections to third-party apps & services
  3. Locate the Suger application with Google Mail access
  4. Click Remove access
:::
