> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tightknit.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack Connect

> Configure Slack Connect channels to sync messages from external workspaces

export const PlanAvailability = ({feature = 'This feature', plan = 'enterprise', addon = false, plural = false, support = false, growth, momentum, enterprise, children}) => {
  const rank = {
    growth: 0,
    momentum: 1,
    enterprise: 2
  };
  const normalize = value => {
    if (value === true || value === 'included' || value === 'yes') {
      return 'included';
    }
    if (value === 'addon') {
      return 'addon';
    }
    return 'none';
  };
  const defaultStatus = p => {
    if (rank[p] < rank[plan]) {
      return 'none';
    }
    return addon ? 'addon' : 'included';
  };
  const overrides = {
    growth,
    momentum,
    enterprise
  };
  const status = p => overrides[p] === undefined ? defaultStatus(p) : normalize(overrides[p]);
  const plans = [{
    key: 'growth',
    label: 'Growth'
  }, {
    key: 'momentum',
    label: 'Momentum'
  }, {
    key: 'enterprise',
    label: 'Enterprise'
  }];
  const included = plans.filter(p => status(p.key) === 'included');
  const asAddon = plans.filter(p => status(p.key) === 'addon');
  const verb = plural ? 'are' : 'is';
  const srSentence = [feature, verb, 'available on:', included.map(p => `${p.label} plan`).join(', ') || 'no plans', asAddon.length > 0 ? `; as an add-on: ${asAddon.map(p => `${p.label} plan`).join(', ')}` : ''].join(' ');
  const statusCell = s => {
    if (s === 'included') {
      return <svg className="plan-availability-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M20 6 9 17l-5-5" />
        </svg>;
    }
    if (s === 'addon') {
      return <span className="plan-availability-addon">Add-on</span>;
    }
    return <span className="plan-availability-none">—</span>;
  };
  return <div className="plan-availability">
      <span className="plan-availability-sr">{srSentence}</span>
      <div className="plan-availability-content" aria-hidden="true">
        <div className="plan-availability-feature">{feature}</div>
        {(support || children) && <div className="plan-availability-body">
            {support && <>
                Contact <a href="mailto:support@tightknit.ai">Support</a> if you
                don't see this option or want to enable it for your community.
              </>}
            {children && <> {children}</>}
          </div>}
      </div>
      <div className="plan-availability-matrix" aria-hidden="true">
        {plans.map(p => <div className="plan-availability-plan" key={p.key}>
            <span className="plan-availability-plan-name">{p.label}</span>
            {statusCell(status(p.key))}
          </div>)}
      </div>
    </div>;
};

Slack Connect allows you to collaborate with people from other Slack workspaces in shared channels. This enables organizations to work together seamlessly across workspace boundaries.

<Info>
  Slack Connect is a feature available on Slack's **paid plans**. For more
  information, see [Slack's documentation on Slack
  Connect](https://slack.com/connect).
</Info>

## Tightknit Support for Slack Connect

Tightknit has **limited support** for Slack Connect setups. You must reach out to [Tightknit support](/support/contact) to activate Slack Connect channels for your workspace.

<PlanAvailability feature="Slack Connect support">
  On the Enterprise plan, Tightknit syncs messages and profiles from your
  **own community workspace** within Slack Connect channels. To additionally
  sync messages and profiles from **external workspaces**, the **Enterprise
  Add-On** is required.
</PlanAvailability>

<Info>
  **Common use case**: A community workspace where Tightknit is installed shares
  a Slack Connect channel with an internal support workspace. The shared
  channels are used for support so that team members from the internal workspace
  can help community members.
</Info>

By default, Tightknit ignores messages from external users other than the workspace in which it is installed. To sync messages from external workspaces, you must configure which external workspaces are allowed to be ingested by Tightknit.

## Configuration

To configure Slack Connect in Tightknit:

1. Navigate to **[Integrations > Slack](https://studio.tightknit.ai/-/integrations/slack)** in the Tightknit Admin Studio
2. Input the **workspace ID** of the external workspace whose messages you want synced
3. Once configured, Tightknit will start ingesting new messages from that external workspace, and they will appear on the community site

<Info>
  This setting does **not** apply retroactively to historical messages.
  Tightknit will only start ingesting new messages from a workspace once the
  external workspace ID is configured.
</Info>

### Finding a Workspace ID

To find a workspace ID, see [Slack's documentation on discovering your workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id). The workspace ID typically looks like `T01234567` or `T0ABC1234`.

<Tip>
  Remember, you want to find the workspace ID of the **external** workspace, not
  the workspace Tightknit is installed in.
</Tip>

## Limitations

Tightknit's Slack Connect support has the following limitations:

* **Limited support for external user attribution**: Post and comment authors will display the external user's name, but all author links will point to the Tightknit bot user instead of the external user's profile
* **@user mentions**: Mentions of external users are not displayed. Instead, they will show as `🔒[private user]`


## Related topics

- [Single & Multi-Channel Guests](/slack/guests.md)
- [Studio](/studio/overview.md)
- [Slack Sync Guide](/slack/sync-guide.md)
- [Working With File Attachments](/slack/working-with-file-attachments.md)
- [Troubleshooting](/support/troubleshooting.md)
