Automate Gmail email triage with OpenAI and Slack, using Make.com to classify incoming support emails, route them to channels, and create tasks automatically.
Introduction
Handling high volume inbound support email manually costs time and causes inconsistent routing. Agents open messages, skim for product, urgency, and required owner, then copy information into a ticketing board or ping Slack. That creates delay, missed SLAs, and repeated context-switching.
By the end of this guide you will have a production-ready Make.com workflow that watches a Gmail mailbox, extracts and normalises message data, uses OpenAI to classify intent, priority and suggested owner, then posts a structured Slack message and logs the item in Google Sheets. The automation includes fail-safes for attachments and basic audit fields.
What Youll Need
- Gmail account with API access (Workspace recommended), and a service account or OAuth credentials for Make.com. Gmail watch requires a Workspace account for push notifications in many cases.
- Make.com account with access to the Gmail, HTTP (or OpenAI) and Slack modules. A paid Make.com tier is usually required for advanced scenarios and higher operation volume.
- OpenAI API key with permitted usage for classification. Be prepared to use moderate token limits for robust results. Follow OpenAI safety guidance when classifying sensitive content.
- Slack workspace and a bot token with chat:write and blocks permissions for the target channel.
- Google Sheets (optional task log) with an editable sheet for audit and remediation.
- Basic familiarity with JSON and Slack Block Kit will help when customizing messages.
How It Works (The Logic)
When a new message arrives in Gmail, Make.com receives the trigger, fetches the full message and attachments, and normalises the content. Make.com sends the email subject and body to OpenAI with a precise prompt asking for fields: intent, priority (P1,P2,P3), suggested team/owner, and a 1-line summary. Based on OpenAI output, Make.com routes a Block Kit formatted message to Slack and appends a row to Google Sheets for auditing. If classification confidence is low or contains sensitive content, the automation flags the item for manual review.
Step-by-Step Setup
-
Create the Gmail trigger in Make.com
- Module: Gmail "Watch emails" (or "Watch messages").
- Filter: set to only monitor the support alias, e.g. support@yourdomain.com, and choose label or query "in:inbox" and "label:support" if you use labels.
- Polling or push: if available, use push notifications (watch) to reduce latency. For push you will need to configure Gmail API watch and subscription settings per Google docs.
- Gotcha: ensure the Make.com Gmail connection has the correct OAuth scopes to read messages and attachments.
-
Fetch the full message and flatten headers
- Module: Gmail "Get message" by messageId received from the watch trigger.
- Extract fields: messageId, threadId, subject, snippet, from, to, date, and the plain text body. If only HTML is available, use the HTML-to-text helper in Make.com or a small mapping to remove tags.
- Attachments: if attachments exist, use the Gmail module to download them to Make.com’s temporary storage and save the file URL for later.
- Gotcha: Multipart emails can hide the real body in text/html. Test with various client emails (Outlook, Gmail mobile) to ensure you get the expected text.
-
Preprocess text and build a classification payload
- Module: Tools > Text aggregator (or an HTTP/JSON builder) to assemble a JSON object with keys: subject, body, sender, threadAgeHours (compute difference between now and date), hasAttachment (true/false), and attachments list.
- Limit the body length: trim long emails to the first 2,500 tokens or nearest sentence boundary to control token cost and preserve context.
- Add audit metadata: rawMessageUrl, messageId, and webhook runId for traceability.
-
Call OpenAI for structured classification
- Module: OpenAI prompt (Make.com OpenAI module) or HTTP request to the OpenAI API. Use the model you have access to (gpt-4o or gpt-4 family), and set temperature to 0 for deterministic classification.
- Prompt design: include explicit instructions and output schema. Example instruction body (abbreviated): "You will receive an email subject and body. Return a JSON object with fields: intent (one of: 'billing','technical','sales','cancellation','other'), priority (P1,P2,P3 where P1=urgent), suggested_owner (team or role), confidence (0.0-1.0), summary (one sentence). If content includes sensitive personal data mark 'sensitive': true. Output only valid JSON."
- Parameters: max_tokens 300, temperature 0.0, and stop sequences if needed. For complex classification, provide 3-5 labelled examples inline in the prompt.
- Gotcha: force JSON-only output by instructing the model and validate the response JSON in the next Make.com step. Save the original prompt and response for audits.
-
Validate and parse OpenAI output
- Module: JSON > Parse JSON (or built-in helper) to convert the assistant output to usable fields.
- Check for missing fields or parse errors. If parse fails, route the email into a "manual review" Slack channel with the raw AI output attached.
- Confidence gating: if confidence < 0.6, set a review flag and route to a human queue.
-
Post a structured Slack message
- Module: Slack "Send a message (with blocks)" to the designated channel.
- Block Kit design: header with priority label, section with summary and subject, fields for intent and suggested owner, context block with sender and time, buttons for "Claim" or "Escalate" (these can trigger separate Make.com webhooks).
- Field mappings: priority -> color emoji or emoji-coded prefix, summary -> main text, suggested_owner -> mention the role or use @user only if you map roles to users in a small lookup table.
- Gotcha: Slack interactive elements require a public endpoint for actions. If you want claim buttons, expose a Make.com webhook and configure Slack action URLs to call it.
-
Append a row to Google Sheets for audit and remediation
- Module: Google Sheets "Add a row"
- Columns: received_at, message_id, from, subject, intent, priority, suggested_owner, confidence, ai_response, slack_ts, review_flag, attachment_urls.
- This provides an immutable audit trail and a place to run downstream reporting.
-
Error handling and retries
- Add a scenario branch for transient errors from OpenAI or Slack, with exponential backoff and a max retry count.
- For repeated failures, post to a private admin Slack channel with full details for manual intervention.
Real-World Business Scenario
A SaaS company we work with processes 500 support emails daily. They implemented this pipeline to classify tickets into billing, technical, and cancellations. Within two weeks they reduced manual triage time by 70 percent. Urgent P1 items now appear in a dedicated Slack channel with the suggested owner mention, reducing first response time from 3 hours to 18 minutes. The Google Sheets audit allowed the ops lead to review classifier drift weekly and add new examples to the prompt.
Common Variations
- Route high-value customers to a VIP Slack channel. Add a CRM lookup step (HubSpot or Pipedrive) in Make.com by matching the sender email.
- Instead of Google Sheets, create ClickUp tasks or Jira issues for classified items using Make.com task modules.
- Add a summarisation step to create a 3-line public reply draft, then push it to a shared mailbox for agents to approve and send.
What You Built and Next Steps
You built an advanced, production-feasible email triage pipeline using Gmail, Make.com, OpenAI, Slack and Google Sheets. It standardises incoming support emails into intent, priority and owner suggestions, publishes actionable Slack messages, and keeps an audit log for monitoring and model improvement. If you want this built and tuned for your specific mailbox, team structure and SLA targets, Olmec Dynamics builds these exact automations. See what we do at Olmec Dynamics for tailored automation work and case studies.
Notes on related posts: no related posts found in the Olmec Dynamics blog index for this exact integration when we checked.