Language becomes manual work, even when you have the right people.
There is no preferred language stored anywhere, so agents guess from a name or a country code. Templates drift, because the Spanish version was updated in March and the French one was not, and now the two say different things about the same policy.
Messages land with the wrong team and get forwarded around, which the customer experiences as repeating themselves. And there is no clean reporting, because the language of a conversation was never captured in a field.
When nothing is stored, there is also no fallback rule, so an unknown language produces either a mixed-language reply or a long silence.
Treat language like a data point. Store it on the record, keep one template set per language under each message moment, and route on the field. Never on what the agent assumes.
Three parts, and none of them is a translation project.
Decide where language comes from, keep the template sets in step, and route predictably. The hard part is the fallback, which is what stops work getting stuck.
Decide where language comes from, and what happens when it is missing
Pick one main source and define the fallback in order: the contact's preferred language when you have it, otherwise the language already on the case, otherwise your default marked as unconfirmed.
One rule matters more than the order: do not let it flip back and forth. If it is unknown, route once to somewhere that can confirm it, then stop asking.
Group templates by moment, not by language
Think in message moments and translate each one: first reply, ask for detail, update, resolution, closing, stop confirmation. Six moments covers most service orgs.
Hold one meaning per moment and one version per language beneath it. When the policy wording changes in one language, the others are visibly out of date rather than silently wrong.
Route on the field, and always have somewhere for unknown
Queues by language is the version most orgs should build: Support English, Support Spanish, Support French, and Support Language Triage. Salesforce assigns on the language field, and anything unknown goes to triage.
If you already route by skills, add language as a skill instead. Either way, define the fallback first. The fallback is the whole design.
The reply confirms the language you guessed.
The first inbound message is the best evidence of what someone actually speaks, and it is worth writing to the field.
Four, and the third one is the one people skip.
Because language is a field, it is finally a column.
Group any case report by language and the gaps appear: which queue is slow, which language is missing a template, how much work triage is really absorbing.
Where ValueText fits.
ValueText is where the template sets live and the send action that Flow calls. Folders map to message moments, and access levels keep each team to the sets it owns. Every inbound message writes back to the case with its language stamped, which is what makes the reporting possible. The fields, the queues, the routing and the reports are standard Salesforce and stay if you leave.
Professional edition or above · Works with queue routing or Omni-Channel skills · WhatsApp needs one approved template per language“It's pretty user-friendly, has a good cost, and many features (live-chats, workflows, dynamic templates, dashboards, etc). We expending this solution to multiple countries now.”
Michail BerdinskiySalesforce Lead · AppExchange