Skip to Content
SourcesGmailOverview

Gmail

Source - Vendo reads Gmail contact data through Google OAuth. The current source connector imports Google People contacts, not mailbox message bodies.

Gmail is also available as a destination/action connector for AI-created email drafts.

What Vendo Reads

The pipeline source connector uses the Google People API and imports two contact streams.

StreamEndpointDescription
Contacts/people/me/connectionsSaved contacts from the connected Google account
Other Contacts/otherContactsAuto-saved contacts created by Gmail from email interactions

Both streams are snapshot imports and are merged by Google People API resource_name.

Contact Fields

The contact schema can include personally identifiable information. Vendo stores the fields returned by the People API into the Gmail source tables.

Field groupExamples
Identityresource_name, display_name, given_name, family_name, nickname
Emailprimary_email, emails
Phoneprimary_phone, phones
Work contextorganization, job_title, department
Profile contextaddresses, birthday, notes, photo_url, memberships, user_defined
Sync metadatasource_type, update_time, job_id, insert_time

What Vendo Does Not Import As A Source

DataStatus
Email message historyListed in the app source options as Email History, but marked coming soon
Email body contentNot imported by the current pipeline Gmail source connector
AttachmentsNot imported by the current pipeline Gmail source connector
Sent-mail historyNot imported by the current pipeline Gmail source connector

OAuth Scopes

Gmail has two OAuth paths in the product.

Source Connector Scopes

The pipeline source connector registers these Google People API scopes:

ScopePurpose
https://www.googleapis.com/auth/contacts.readonlyRead saved contacts
https://www.googleapis.com/auth/contacts.other.readonlyRead other contacts created from email interactions

App Connection Permission Scopes

The web app requests scopes based on the permissions selected in the App Connections flow.

PermissionScopes
Read Gmail contexthttps://www.googleapis.com/auth/gmail.modify, https://www.googleapis.com/auth/gmail.settings.basic, https://www.googleapis.com/auth/contacts.readonly, https://www.googleapis.com/auth/userinfo.email, openid
Draft and send emailshttps://www.googleapis.com/auth/gmail.compose, https://www.googleapis.com/auth/gmail.send, https://www.googleapis.com/auth/gmail.labels, https://www.googleapis.com/auth/userinfo.email, openid

If the app falls back to the static Gmail scope set, it may request the union of Gmail compose, send, modify, labels, send-as settings, contacts, Google profile/email, and OpenID scopes.

Table Names

Gmail source tables follow the source-table prefix pattern for the connection.

Table patternContents
gmail_<source_short_id>_contactsSaved contacts
gmail_<source_short_id>_other_contactsOther contacts

Semantic mapping treats both tables as user data. The preferred user identifier is primary_email, with resource_name as a fallback.

Setup

  1. Navigate to App Connections > Add App Connection
  2. Select Gmail
  3. Review the Google OAuth consent screen and requested scopes
  4. Authorize the Gmail account Vendo should use
  5. Select the contact streams to import
  6. Save the source and run the first sync

Verify Setup

  1. Confirm the Gmail source status is Active
  2. Run a manual sync
  3. Query the contact tables in your Vendo dataset
  4. Confirm primary_email, names, phone, and organization fields match expected contacts

Troubleshooting

SymptomWhat to check
OAuth consent shows unexpected scopesCompare the selected app permissions with the scope table above
No contacts importConfirm the connected Google account has People API contacts and the OAuth token is active
Other Contacts is emptySome Google accounts do not have auto-saved other contacts
Email messages are missingThe source email-history stream is not enabled yet
Last updated on