Gmail Integration

Read and send through Gmail

Connect Gmail to detect reply threading on AI follow-ups, surface inbound replies as engagement signals, and optionally dispatch follow-ups directly from your mailbox instead of through Resend.

What this connection unlocks

Three capabilities on top of your Google connection

Reply threading

When a contact replies to an AI follow-up, FastFollow ties the reply back to the original thread and surfaces it as an engagement signal.

Native send (optional)

Instead of Resend, you can dispatch approved follow-ups directly through Gmail so they land in your Sent folder with full thread continuity.

Push notifications

Pub/Sub-driven watch keeps inbox state fresh in real time. No polling required.

Setup walkthrough

~10 minutes if Google Calendar is already connected

1

Enable APIs in Google Cloud

In the same Google Cloud project you use for Calendar, enable the Gmail API and the Cloud Pub/Sub API (the latter powers push notifications).

  • Enable: Gmail API
  • Enable: Cloud Pub/Sub API
  • No Pub/Sub topic creation required — FastFollow provisions one automatically
2

Add Gmail scopes to your OAuth consent screen

Extend the existing consent screen used for Google Calendar with two additional scopes.

  • https://www.googleapis.com/auth/gmail.readonly — read messages for reply threading
  • https://www.googleapis.com/auth/gmail.send — dispatch follow-ups via Gmail (optional)
  • Sensitive scope verification is required for production OAuth apps with >100 users
3

Authorize from FastFollow

In FastFollow, go to Integrations → Gmail → Connect. The first authorization will request the additional Gmail scopes on top of your existing Google session.

  • You can authorize Gmail without authorizing Calendar (and vice versa)
  • Each user connects their own mailbox
  • For Workspace orgs, admins can pre-authorize via domain-wide delegation (see Google Calendar guide)
4

Pick your sending path

In Settings → Email Delivery, choose how outbound follow-ups dispatch.

  • Resend (default) — best deliverability with verified domain, full bounce handling
  • Gmail — sends from your mailbox, lands in Sent folder, uses Gmail per-day quotas
  • Per-user override available so reps can opt into Gmail send while admins prefer Resend

Troubleshooting

The most common Gmail integration errors

access_denied (gmail scopes)

Google blocks the consent screen with a verification warning.

Fix: gmail.readonly and gmail.send are sensitive scopes. For External + Production apps, you must complete Google’s OAuth verification. Use Internal user type for Workspace orgs to skip verification.

watch_failed (Pub/Sub)

Push notifications never arrive; logs show "permission denied on topic".

Fix: The Gmail watch endpoint requires gmail-api-push@system.gserviceaccount.com to have Publisher rights on the auto-provisioned topic. If your org has organization policies restricting service-account grants, an admin must allow this binding.

rate_limit (250 quota units/user/second)

Bulk thread fetch returns 429.

Fix: Gmail enforces per-user quota units. FastFollow batches requests and respects Retry-After headers, but very deep historical backfills can throttle. Reduce the backfill window in Integration settings.

invalid_grant

Sending fails after the user changes their Google password.

Fix: Refresh tokens are revoked on password change. Have the user reconnect Gmail from FastFollow → Integrations → Gmail.