

How to Auto-Translate Slack Messages with OpenAI and Make
React to any Slack message with a flag emoji and automatically translate it to that language using OpenAI's GPT models.
Steps and UI details are based on platform versions at time of writing β check each platform for the latest interface.
Best for
Teams that frequently communicate across languages and want instant Slack translations without switching apps.
Not ideal for
Workspaces that only need one target language or translate fewer than 50 messages per month.
Sync type
real-timeUse case type
notificationReal-World Example
A 25-person remote marketing agency with team members in Spain, France, and Germany uses this to translate strategy discussions instantly. Before automation, non-English speakers would skip participating in #general or ask for manual translations hours later. Now anyone can react with their flag emoji and get real-time translations, increasing participation by 40%.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently β Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into Make
Copy the pre-built Make blueprint and paste it straight into Make. All modules, filters, and field mappings are already configured β you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Channel ID | channel | |
| Message Timestamp | message_ts | |
| Reaction Emoji | reaction | |
| Message Text | text | |
| Translation Content | choices[0].message.content | |
1 optional fieldβΈ show
| User ID | user |
Step-by-Step Setup
Scenarios > + > Slack > Watch Reactions Added
Create New Scenario
Start a fresh Make scenario to handle the emoji reaction trigger. This will be the entry point for all translation requests.
- 1Click 'Create a new scenario' from your Make dashboard
- 2Click the large '+' button in the center
- 3Search for 'Slack' in the app list
- 4Select 'Watch Reactions Added' trigger
Slack Module > Connection > Create a connection
Connect Slack Account
Authenticate Make with your Slack workspace. You'll need admin permissions to install the Make bot.
- 1Click 'Create a connection' inside the Slack module
- 2Click 'Sign in with Slack' in the popup
- 3Select your workspace from the dropdown
- 4Click 'Allow' to grant Make the required permissions
Slack Module > Settings > Advanced settings
Configure Reaction Trigger
Set the trigger to watch for flag emoji reactions specifically. This filters out non-translation reactions upfront.
- 1Leave 'Channel' blank to monitor all channels
- 2Set 'Limit' to 100
- 3Click 'Show advanced settings'
- 4In 'Reaction' field, enter 'flag-' to catch all flag emojis
Flow Control > Router
Add Router Module
Insert a router to handle different flag emojis and route to appropriate language codes. This maps visual flags to OpenAI language parameters.
- 1Click the small '+' after the Slack module
- 2Select 'Flow Control' from the category list
- 3Choose 'Router' from the options
- 4Click 'OK' to add the router
Router > Add another route > Set up a filter
Create Language Routes
Add separate routes for each flag emoji you want to support. Start with 3-4 common languages to test the workflow.
- 1Click 'Add another route' on the router
- 2Set route 1 filter: 'reaction' equals 'flag-es' (Spanish)
- 3Set route 2 filter: 'reaction' equals 'flag-fr' (French)
- 4Add route 3 filter: 'reaction' equals 'flag-de' (German)
Slack > Get a Message
Get Original Message
Add a Slack module to retrieve the full message text that was reacted to. The reaction trigger only gives you metadata, not content.
- 1Click '+' after the first router path
- 2Select 'Slack' from apps
- 3Choose 'Get a Message' action
- 4Map 'Channel' to the trigger's channel field
- 5Map 'Timestamp' to the trigger's message timestamp
π¬ New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}OpenAI > Create a Chat Completion
Add OpenAI Translation
Connect OpenAI to translate the message text. Use GPT-3.5-turbo for speed and cost efficiency on simple translations.
- 1Click '+' after the Get Message module
- 2Search for and select 'OpenAI'
- 3Choose 'Create a Chat Completion'
- 4Select GPT-3.5-turbo as the model
- 5Set max tokens to 500
OpenAI Module > Messages > Add item
Configure Translation Prompt
Set up the system prompt to handle translation consistently. A good prompt prevents hallucination and maintains formatting.
- 1In 'Messages' click 'Add item'
- 2Set 'Role' to 'system'
- 3Set 'Content' to: 'Translate the following text to Spanish. Only return the translation, no explanations.'
- 4Click 'Add item' again for user message
- 5Set second 'Role' to 'user'
- 6Map 'Content' to the message text from Get Message
Slack > Create a Message
Post Translation Reply
Send the translated text back to Slack as a thread reply. Threading keeps translations organized under the original message.
- 1Click '+' after the OpenAI module
- 2Select 'Slack' > 'Create a Message'
- 3Map 'Channel' to the original channel
- 4Map 'Thread TS' to the original message timestamp
- 5Map 'Text' to OpenAI's content output
- 6Add ':flag-es: Translation:' as a prefix
Right-click modules > Copy > Paste
Duplicate Routes for Other Languages
Copy the translation chain for French and German routes. Change only the target language in each prompt.
- 1Select all modules after route 1 (Get Message through Create Message)
- 2Press Ctrl+C then Ctrl+V to copy
- 3Connect copied modules to route 2
- 4Change OpenAI system prompt to 'Translate to French'
- 5Change Slack prefix to ':flag-fr: Translation:'
Right-click module > Error handling
Set Error Handling
Configure each module to handle failures gracefully. Translation APIs can timeout or hit rate limits during peak usage.
- 1Right-click each OpenAI module
- 2Select 'Error handling'
- 3Choose 'Break' to stop on errors
- 4Enable 'Retry' with 3 attempts
- 5Set retry interval to 30 seconds
Scenario controls > Run once
Test with Real Reactions
Run live tests using actual flag emoji reactions in your Slack. Verify translations work across different message types and lengths.
- 1Click 'Run once' in the scenario controls
- 2Go to any Slack channel and post a test message
- 3React with :flag-es: emoji
- 4Check Make's execution log for successful run
- 5Verify Spanish translation appears as a thread reply
Drop this into a Make custom function.
Copy this template{{replace(replace(12.choices[0].message.content; "Here's the translation:"; ""); "Translation:"; "")}}βΈ Show code
{{replace(replace(12.choices[0].message.content; "Here's the translation:"; ""); "Translation:"; "")}}... expand to see full code
{{replace(replace(12.choices[0].message.content; "Here's the translation:"; ""); "Translation:"; "")}}Scaling Beyond 500+ translations/day+ Records
If your volume exceeds 500+ translations/day records, apply these adjustments.
Switch to GPT-4 Turbo
GPT-4 Turbo has higher rate limits than GPT-3.5-turbo and better handles bulk translation requests without timeouts.
Add Queue Module
Insert Make's queue module before OpenAI to prevent rate limit errors during reaction spikes. Set queue size to 10 concurrent requests max.
Cache Common Phrases
Use Make's data store to cache translations of frequently used phrases like 'Good morning' or 'Thanks'. This cuts API costs by 30-40% for active channels.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Make for this if your team reacts to messages in multiple channels and wants instant translations without leaving Slack. Make's router handles multiple languages in one scenario, and the visual builder makes adding new flag emojis simple. The Slack integration catches reactions in real-time, not polling delays. Skip Make if you only need one language β a simple Slack bot would be cheaper and faster to deploy.
This workflow burns 4 operations per translation: watch reaction, get message, OpenAI completion, post reply. At 200 translations/month, that's 800 operations total. Make's free tier covers 1,000 operations, so you're covered. The $9 Core plan handles 10,000 operations (2,500 translations). Zapier's free tier only allows 100 zaps/month, forcing you to the $20 Starter plan for the same volume. Make saves you $11/month here.
Zapier's Slack trigger includes message content directly, skipping the separate 'Get Message' step Make requires. N8N offers better OpenAI rate limiting with built-in backoff and retry logic. But Make's router system beats both for handling multiple languages β Zapier needs separate zaps for each flag emoji, and N8N requires manual JavaScript switches. Make's visual routing keeps everything in one scenario.
OpenAI sometimes refuses to translate if it detects offensive content, returning an error instead of translated text. Your Slack reply will show an empty message that confuses users. Add a filter to check if OpenAI's response contains actual text before posting. Also, GPT-3.5-turbo occasionally adds explanatory text like 'This translates to:' despite prompt instructions. Strip these prefixes with a text replace operation or users will see redundant explanations.
Ideas for what to build next
- βAdd translation confidence scores β Modify the OpenAI prompt to return confidence ratings and skip posting low-confidence translations to avoid embarrassing mistakes.
- βCreate translation logs β Send all translation requests to a Google Sheet for usage tracking and to identify your team's most commonly needed language pairs.
- βBuild reverse translation β Add a second reaction system where reacting to a translation with the original flag emoji translates it back for verification.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup