Gmail
Read Gmail messages, threads, labels and mailbox history; manage labels; create and update drafts for a person to review. Nexra never sends email from Gmail.
Route incoming mail into CRM, support and finance flows, label it automatically and prepare reply drafts for human review.
Source actions
12
Destination actions
6
Data types
10
Validation status
Implemented · fixture tested.
Implementation is checked against provider-shaped fixtures for every action, authentication failures, rate limits, pagination and duplicate safety. Provider sandbox and authorised account validation are recorded separately when credential-backed runs are completed.
What you can map
drafts
- Create draftDestinationNot retried automaticallyApproval before production
Creates a draft (new message or reply in a thread) for a person to review and send. Nexra never sends it.
drafts.create - Get draftSource
One draft with recipients, subject and body.
drafts.get - List draftsSource
Drafts in the mailbox with their message and thread IDs.
drafts.list - Update draftDestinationProvider duplicate protectionApproval before production
Replaces a draft's recipients, subject and body. The draft is not sent.
drafts.update
filters
- List mail filtersSource
The mailbox's filter rules (criteria and actions). Read-only.
filters.list
history
- List mailbox changesSourceIncremental
Messages added or deleted and labels added or removed since a history ID, for incremental sync.
history.list
labels
- Create labelDestinationProvider duplicate protectionApproval before production
Creates a user label; nest labels with a slash, for example Clients/Acme.
labels.create - Get labelSource
One label with its message and thread counts.
labels.get - List labelsSource
System and user labels in the mailbox.
labels.list - Update labelDestinationProvider duplicate protectionApproval before production
Renames a user label or changes its visibility and colour.
labels.update
message labels
- Change message labelsDestinationProvider duplicate protectionApproval before production
Adds or removes labels on a message, for example to mark it read, star it or archive it.
message_labels.update
messages
- Get messageSource
One message with headers, labels, decoded text and HTML bodies and attachment metadata.
messages.get - List messagesSourceIncremental
Message and thread IDs by label, received time, unread state, attachment or inbox category.
messages.list
profile
- Get mailbox profileSource
The authorised address, message and thread counts and current history ID.
profile.get
send as
- List send-as addressesSource
Addresses and aliases the mailbox can send as, with display names and signatures.
send_as.list
thread labels
- Change thread labelsDestinationProvider duplicate protectionApproval before production
Adds or removes labels on every message in a conversation.
thread_labels.update
threads
- Get threadSource
A conversation with every message's headers, labels and bodies.
threads.get - List threadsSourceIncremental
Conversation IDs and snippets by label, received time, unread state or category.
threads.list
Authentication
Google OAuth client and refresh token
Plans and access
Personal Google accounts and all Google Workspace editions. Requires a customer-owned Google Cloud OAuth client. Gmail read and modify scopes are restricted: apps for external users need Google verification and a security assessment.
Test environment
Use a test Google account and an OAuth client in testing mode.
Rate limits
6,000 quota units per user per minute and 1,200,000 per project per minute (messages.list 5 units, messages.get 20, threads.get 40); HTTP 429 or 403 rate-limit reasons with backoff.
Pagination
nextPageToken cursors.
Provider events
Gmail push notifications through Cloud Pub/Sub (users.watch). Nexra event triggers are not yet available; flows run on demand or on a schedule.
Before you build a flow
- Sending is intentionally not implemented: messages.send and drafts.send are excluded, and drafts are left for a person to review and send. The gmail.compose scope technically allows sending, but Nexra never calls a send endpoint.
- Deleting, trashing and marking messages or threads as spam are not implemented; label changes refuse the TRASH and SPAM labels.
- Free-text Gmail search (sender, subject, words) is not exposed because Gmail takes the search in the URL query string; filters are limited to label, received time, unread, attachment and inbox category.
- Message list results contain only IDs; use messages.get or threads.get for headers and bodies. Bodies are truncated at 100,000 characters and attachments are returned as metadata only.
- messages.list incremental reads filter by received time; to detect label changes and deletions use history.list with the last historyId. Gmail returns HTTP 404 when the history ID is too old, which requires a full read.
- Draft creation has no idempotency key; uncertain creates are not repeated automatically. Draft updates replace the whole draft.
- Label names are unique per mailbox; creating an existing name is rejected (HTTP 409).
- Mail settings (filters, forwarding, vacation responder, send-as) are read-only.
Developer reference
- Create the Google credentials described above with the narrowest permissions your flows need.
- In Nexra, open Connect, then Connections, then New connection, choose Gmail, enter its settings and credentials, and tick only the write actions you need. Connection guide
- Test the connection, then use its actions as flow sources and destinations. Flow guide
Machine-readable detail: GET /api/public/connect/connectors/gmail and the Connections API.