Skip to main content
Question

How do I set up bi-directional synchronization between private channels in distinct Slack workspaces?

  • 6 July 2024
  • 3 replies
  • 12 views

Hello,

We have 10 distinct Slack workspaces named A, B, C, D, E, F, G, H, I, and J. Each workspace contains a private channel named "Finance."

Our objective is to achieve the following while ensuring that employees in different workspaces do not communicate directly with each other:

  1. Centralized Message Forwarding:

    • Messages posted in the "Finance" channel of each workspace (A through J) should be automatically forwarded to the "Finance" channel in a single centralized workspace, Z.
  2. Bi-Directional Synchronization:

    • Replies made in the "Finance" channel of workspace Z should be synchronized back to the original "Finance" channel in the respective workspace (A through J).
    • Subsequent replies in the original workspaces (A through J) should again be synchronized back to the corresponding thread in workspace Z, ensuring continuous bi-directional communication.

This setup will enable centralized communication and synchronization across all "Finance" channels in different Slack workspaces, while preventing direct interaction between employees from different workspaces.

3 replies

Userlevel 7
Badge +6

Hi @Ea2601,

Welcome to the Community! 🎉

It looks like you have already reached out to our regarding this question. I’d recommend continuing the conversation with our Support Team via email since they have the correct tools to look closer at the Zap and its logs.

I appreciate your patience and understanding.

 

Hi @Ea2601,

Welcome to the Community! 🎉

It looks like you have already reached out to our regarding this question. I’d recommend continuing the conversation with our Support Team via email since they have the correct tools to look closer at the Zap and its logs.

I appreciate your patience and understanding.

 

Hi Ken,

I searched the relevant topic in the community but could not find it. Getting a detailed and example-based answer from here would be beneficial for both me and the community.

Userlevel 7
Badge +11

Hey there @Ea2601! 👋

Hmm, this is a tricky one. You’d likely need to set up Zaps for each of the private “Finance” channels across the different workspaces. And you’d need some way of referencing where the messages came from in order to copy the replies posted in Workspace Z back into the relevant channels, Zapier Tables might be good to use for this. 🤔

I’m initially thinking you could achieve this by having Zaps for Workspaces A - J with the following trigger and actions:


Zap A: Triggers when a message is posted in Workspace A and adds it to Workspace Z 

  • Trigger: New Message Posted to Private Channel (Slack) - triggers when a message is posted in workspace A.
  • Action: Create Record (Zapier Tables) - creates a record for the message storing it’s timestamp, message text and records the channel ID (which helps to identify which workspace it’s from later).
  • Action: Paths - see Add branching logic to Zaps with paths to learn more about Paths
    • Path A - new message not in thread
      • Action: Send Channel Message (Slack) - sends message to the relevant channel in Workspace Z.
      • Action: Update Record (Zapier Tables) 
    • Path B - reply to existing thread 
      • Action: Find Record (Zapier) - searches the records by the parent message timestamp (Thread Ts field) in Workspace Z to find the relevant record.
      • Action: Send Channel Message (Slack) - sends message to the relevant thread in Workspace Z.

 

You’d want to duplicate this Zap for each of the 10 workspaces and select the relevant finance channel for each workspace. Then for the central workspace (Z) you’d have a Zap that has these trigger and actions:

Zap Z: Triggers when a message is posted in Workspace Z and adds it to the relevant Workspace.

  • Trigger: New Message Posted to Private Channel (Slack) - triggers when a message is posted in workspace Z.
  • Action: Find Record (Zapier Tables) - searches for an existing record for the message using the message text.
  • Action: Only continue if… (Filter by Zapier) - only allows the Zap to continue to the next steps if the _zap_search_was_found_status field is False meaning it didn’t find an existing record. Which should confirm that it’s a message that’s not been copied to the channel from Workspaces A - J.
  • Action: Retrieve Thread Messages (Slack) - uses Thread Ts field from trigger to obtain the contents of the parent message for the thread (as well as all replies in the thread) in Workspace Z that the reply was added to.
  • Action: Find Record (Zapier Tables) - searches for the thread parent message record based on the thread parent message text that was found by the previous action. That should locate the record for the corresponding thread in the relevant Workspace (A- J).
  • Action: Send Channel Message (Slack) - sends message to the relevant thread in Workspace (A - J) taking the channel ID and timestamp value from the previous Find Record action, and uses the text from the trigger for the Message Text field.

 

Do you think that sort of approach could work for your needs here? 

Reply