Context is everything: building for cross-company collaboration in Slack
How Crossbeam upgraded their Slack app to supercharge partnerships in shared channels
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.
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.
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!