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.

Deterministic Code
SlackJigsawStackOperationsHR & PeopleNotifications & AlertsContent GenerationData Sync
PromptCreate

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?
Both. A reply in the source thread is mirrored into the matching thread in each regional channel, so the conversation stays grouped the same way it does in English.
Can I exclude certain announcements from being translated?
Yes. Posts from bots are skipped automatically, and any message that starts with your chosen prefix (for example DNT:) is skipped too. You can change the prefix at any time.
How many languages and regional channels can I add?
As many as you need. The list of channels and their languages is configuration, so adding French or Japanese later is a small edit, not a rebuild.
Will the translated post show who wrote the original?
Yes. A small footer line credits the original author and links back to the source message, so anyone reading the translation can jump to the full context in one click.
What if one of the regional channels is down or misconfigured?
The workflow keeps going. A failure to post into one regional channel does not block the others, so the rest of your global team still gets the announcement.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
Win back no-show and cancelled appointments every morning

Every weekday morning, every appointment that fell through yesterday gets a personal text or email inviting them to rebook, plus a task for the right rep.

LeadConnector
Google Sheets
Slack
Agentic Task
Live Loop returns analytics with product-level drill-down

Pick any date range up to 120 days and see return volume, refund versus exchange mix, and the products behind every number, recalculated each time you open it.

Loop Returns
Google Sheets
Slack
App

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.