Multilingual Inbound Email Auto-Reply
Detects the language of inbound customer email with Microsoft Translator, translates the body to English for the agent, and sends an automatic acknowledgement reply translated back into the sender's original language. Keeps a bilingual record so agents can respond in English while customers read their own language.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow removes the language barrier from a shared inbox using Microsoft Translator V3 and Office 365 Outlook. When a new email arrives, the flow detects the sender's language, translates the message into the agent/pivot language (English) for an internal bilingual record, and replies to the sender with an acknowledgement localized back into their own language — all automatically, in 100+ languages. Why it matters: International inboxes either sit untriaged until a bilingual agent is free, or customers get a clumsy reply in the wrong language. Doing detect → translate-in → reply-out in one governed flow gives instant, on-brand acknowledgement while the agent works entirely in English. As-built note: The Translator connection is Microsoft Translator V3 (shared_microsofttranslatorv), whose Translate action requires a source language and has no Detect operation. Language detection is therefore done with a single built-in HTTP call to the Azure AI Translator /detect endpoint (a documented connector-gap fallback). All translation itself stays connector-first.
Use Case
Sales or support teams that receive email in many languages want an immediate, correctly-localized "we received your message" reply, plus an English rendering of the content routed to the agent queue for the real response. The flow ships Off; going live needs only connection authorization and environment-variable configuration.
Flow Architecture
When a New Email Arrives
Office 365 Outlook — OnNewEmailV3 (polling, 3-min)Fires on new mail in the monitored folder (env var, default Inbox).
Initialize config
Initialize VariableSet pivot language (default en), auto-reply subject marker (loop guard), agent-queue email, English acknowledgement template, and the Azure AI Translator endpoint.
Check Genuine Inbound Email
Condition (If)Process only non-empty mail whose subject does not already start with the marker (skips the flow's own auto-replies).
Detect Email Language
Built-in HTTP — POST /detectCall Azure AI Translator /detect (the V3 connector has no Detect op) to return the source language code.
Check If Not Already English
Condition (If)Branch on whether the detected language differs from the pivot language.
Translate + reply (non-English branch)
Microsoft Translator — Translate (x2) + Office 365 Outlook — ReplyToV3 + SendEmailV2Translate the body to English (textType=html), translate the English ack back into the sender's language, reply on the same thread, and email the agent queue a bilingual record.
Forward English Email To Agent (English branch)
Office 365 Outlook — SendEmailV2When the email is already English, forward it to the agent queue as-is (no reply needed).
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_PivotLanguage | String | en | Agent/pivot language all mail is translated into (reused). |
| flowlibs_AutoReplyMarker | String | [Auto-Reply] | Subject prefix stamped on replies; loop guard. |
| flowlibs_AgentQueueEmail | String | support@yourcompany.com | Mailbox that receives the bilingual record. |
| flowlibs_AckTemplateEnglish | String | Thank you for reaching out to our support team… | Base English acknowledgement, localized before sending (reused). |
| flowlibs_MonitoredMailFolder | String | Inbox | Outlook folder the trigger watches. |
| flowlibs_TranslatorTextEndpoint | String | https://api.cognitive.microsofttranslator.com | Azure AI Translator base URL for the detect call (reused). |
| flowlibs_TranslatorTextKey | String | <configure> | Translator resource key for the detect HTTP header (reused). |
| flowlibs_TranslatorTextRegion | String | <configure> | Translator resource region for the detect HTTP header (reused). |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Office 365 Outlook | shared_office365 | OnNewEmailV3 ReplyToV3 SendEmailV2 |
| Microsoft Translator | shared_microsofttranslatorv | Translate |
| HTTP | http | POST /detect?api-version=3.0 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Skip internal mail
- Extend the genuine-inbound guard to also bypass translation when the sender domain is internal.
- HTML vs. plain
- The body translation uses textType=html to preserve formatting; the acknowledgement uses plain. Adjust per channel.
- Multiple agent queues
- Route to different queues by detected language or sender domain by adding a Switch before Send Bilingual Record To Agent.
- Persistent bilingual record
- Add a Dataverse CreateRecord to log original/translation/detected-language for reporting (the current record is the agent email).
- Trim quoted threads
- Strip the quoted reply chain before translating to save characters and improve quality.
- Faster polling
- Lower the trigger recurrence below 3 minutes for near-real-time acknowledgement.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Detected language code
Read the source language code from the /detect response.
EXPR.02English translation (for the agent)
The customer message translated into the agent/pivot language.
EXPR.03Localized acknowledgement (for the sender)
The English ack template translated back into the sender's language.
EXPR.04Genuine-inbound guard
Process only non-empty mail that does not already carry the auto-reply marker.
EXPR.05Non-English test
Branch when the detected language differs from the pivot language.
EXPR.06Detect call URI
Build the Azure AI Translator /detect endpoint URL.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.