Context is everything: building for cross-company collaboration in Slack

How Crossbeam upgraded their Slack app to supercharge partnerships in shared channels

May 25 · 4 min read

At Crossbeam, we make things for people that work in sales and partnerships — just the kind of person that is an ideal user of Slack Connect. Our users often join one another’s Slack channels to help work out deals, explore partnerships, and get context on target accounts, so we knew our Slack app had to be ready to deliver.

When channels are shared between organizations in Slack Connect, a Slack app can no longer assume that all of its users work for the same company. Which meant that was extra important our existing app displayed the right data for the right users in the right circumstances.

In other words, we needed to consider an entirely new context for our app.

Trust is our business

Crossbeam is a partner ecosystem platform — we act as a data escrow service that finds overlapping customers and prospects with your partners while keeping data private and secure.

Those “private” and “secure” parts are everything. One of our core values is “trust is our business” — our users need to be crystal clear that the data they are sharing with partners in Slack Connect are seen by the intended recipients.

Our users leverage Crossbeam for Slack to share overlapping customers with a partner to see if integration is worth making, or sharing a list of opportunities that overlap with their partner’s customers so they can give a warm introduction into a new account.

Our Slack app will share overlaps and send notifications when new overlaps occur with the use of the /crossbeam command.

However, with Slack Connect, we have to tweak our outputs to be aware of these new possibilities. If your Slack application involves important data, you’ll likely have to do the same. Here’s what we learned to account for:

1 — Always check what kind of channel the user is in

There are now seven types of Slack environments:

During development, we needed to make sure that, when sharing Crossbeam data, our application took into account who is in each channel. As an example, if I am exchanging leads with a partner in a direct message, our application can comfortably share. However, if I run the /crossbeam command in a public Slack Connect channel, the amount of data our app will share is limited.

In our Notion, we were sure to write copy for every possible channel set up.
Our message when users attempt to use Crossbeam for Slack in a Slack Connect channel when only one org has our application installed.

2 — Check what kind of user is running the commands

The channel is the “where” and now we must check for the “who”. Mainly is the user running the /crossbeam command:

  • Normal Slack user
  • Multi-channel guest
  • Single-channel guest

The types of Crossbeam data a user could see depending on their user type. For example, we blocked channel guests from seeing the output of /crossbeam.

3 — Choose “ephemeral” vs “public” states

After /crossbeam is triggered, we first share the results ephemerally (only visible to the user). If the channel members also have Crossbeam installed with the proper permissions, the user is then given the option to post publicly (posted to the channel or DM for members to see and search).

That ephemeral state is important. It gives the user a chance to confirm the output of the command before sharing. And in select cases, they won’t be allowed to share. For example, if the channel contains a multi-channel guest, Crossbeam’s Slack app will not allow public posting from the /crossbeam command.

The “only visible to you” denotes the “ephemeral” state.

Each output requires separate design states and copy. Using Slack’s provided Block Kit our team was able to make multiple versions of the /crossbeam output as well as the proper warnings letting the user know why they cannot share Crossbeam data

4- Don’t skimp on testing

And lastly, before you get too far into the code, have the right test environment. You’ll need at least:

  • Three Slack Orgs, with one in the Enterprise Grid
  • Each with multi- and single-channel guests
  • Each with shared Slack Connect channels

And it helps to have several developers and designers hopping in using different test accounts. However many outputs you have for your app, test using all users with all channel types.


The end result was Crossbeam For Slack, one of the launch partners of Slack Connect!

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store