Translate Slack announcements into every regional channel
Mirror every English announcement into your Spanish, Japanese, French, and German Slack channels, automatically and in the local language.
Build a code workflow that mirrors every announcement posted in our English source Slack channel into multiple regional Slack channels, with each regional post translated into that channel's local language.
Trigger: a Slack webhook event for a new message posted in the configured source channel (for example the #announcements channel). The workflow should run on every new top-level message and every threaded reply in that channel.
Configuration the workflow should expose:
- source_channel_id: the Slack channel id to watch.
- target_channels: an ordered list of objects, each with channel_id, language_code, and language_label. For example: #announcements-es / es / Spanish, #announcements-ja / ja / Japanese, #announcements-fr / fr / French, #announcements-de / de / German.
- skip_prefix: a string that, when a message text starts with it, causes the workflow to skip translation entirely. Default to "DNT:".
Steps:
1. From the Slack event payload, extract the message text, the author's Slack user id, the channel id, the message ts, the thread_ts (present when it is a threaded reply), and a flag indicating whether the sender is a bot (bot_id present or subtype is bot_message).
2. Skip the message if the sender is a bot, or if the message text starts with the configured skip_prefix. Also skip message_changed and message_deleted subtypes.
3. Fetch a permalink to the source message so the translated posts can link back to it.
4. For each entry in target_channels, run the following fan-out (in parallel where possible, with isolated error handling per entry):
a. Call the JigsawStack "Translate Text" operation with the original message text and the entry's language_code as the target language.
b. Compose the post body as the translated text followed by a small footer line in Slack mrkdwn that credits the original author and links back to the source message. Example footer: "_Posted by <@U123ABC> in <permalink|#announcements>_".
c. Call the Slack "Send a Message" operation to post into the entry's channel_id. If the source message has a thread_ts (it's a reply), the post must land in the matching thread in the target channel, not at the channel root. To do that, the workflow needs to remember a mapping from source thread_ts (the root message's ts in the source channel) to each target channel's root-message ts; when the source message is itself a top-level post, store the mapping so future replies can look it up; when it is a reply, look up the target thread root and post with thread_ts set to that value.
5. A failure to translate or post into one regional channel must not stop the other regional channels from receiving the announcement. Log per-channel failures with the channel id and a short reason.
Use the JigsawStack "Translate Text" operation and the Slack "Send a Message" operation. Treat the workflow as a deterministic fan-out: one inbound message in, N translations and N posts out, where N is the length of target_channels.
What does this prompt do?
- When someone posts in your English announcements channel, every regional channel gets the same post in the local language within seconds.
- Threaded replies follow into the matching thread in each regional channel, so conversations stay grouped where the original happened.
- Bot posts and messages that start with your chosen do-not-translate prefix are skipped, so internal pings or memes don't get mirrored.
- Each translated post credits the original author and links back to the source message, so nothing loses context.
What do I need to use this?
- A Slack workspace where you can install apps and post into the channels you want to mirror into
- A JigsawStack account for the translation step
- The list of target channels and which language each one speaks (for example Spanish, Japanese, French, German)
How can I customize it?
- Add, remove, or relabel target channels and their languages without rewriting the workflow
- Change the do-not-translate prefix, or add more skip rules like ignoring messages tagged [internal]
- Tweak the footer line that credits the original author and links back to the source message
FAQs
Will it translate threaded replies, or only top-level posts?
Can I exclude certain announcements from being translated?
How many languages and regional channels can I add?
Will the translated post show who wrote the original?
What if one of the regional channels is down or misconfigured?
Related templates
Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.
Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.
See every page's translation status at a glance, edit translations side by side with the English, and publish only what your team has actually approved.
See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.
Review Introw partner payouts line by line, approve them from one board, raise the matching bill in Xero, and post every approval to Slack.
Open one board each morning to see which Zendesk tickets are turning hostile, why, and who has been waiting longest.
Make every region read the announcement on day one.
Connect Slack and JigsawStack once, and Geni translates and mirrors every announcement into your regional channels the moment it is posted.