> ## 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.

# Tightknit Enterprise Slack App

> Install the Tightknit Enterprise Slack app to enable Slack admin operations

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>;
};

<PlanAvailability feature="Tightknit Enterprise Slack app" addon />

The Tightknit Enterprise Slack app enables Tightknit to perform approved Slack admin operations on behalf of your community. It is a separate app from the main Tightknit Slack app and stores the organization-level permission used for these operations.

Tightknit currently uses the Enterprise app to invite new members to your Slack workspace from Studio or the Admin API.

<Warning>
  Your Slack workspace must belong to a [Slack Enterprise Grid
  organization](https://slack.com/resources/why-use-slack/slack-enterprise-grid).
  The Tightknit Enterprise app is not available to workspaces on other Slack
  plans.
</Warning>

## Before you begin

You need:

* The Tightknit Enterprise Add-on plan. Contact [Tightknit support](/support/contact) to enable the add-on for your community.
* A [Slack Enterprise Grid](https://slack.com/enterprise) org
* A Slack Org Owner or Org Admin to install the Tightknit Enterprise app
* A Slack workspace or org admin or owner to register their account in Tightknit

## Install the Tightknit Enterprise Slack app

<Steps>
  <Step title="Open Slack settings in Studio">
    Go to **[Integrations > Slack](https://studio.tightknit.ai/-/integrations/slack)** and find **Slack Admin Operations**.
  </Step>

  <Step title="Install the Tightknit Enterprise Slack app">
    Select **[Install Tightknit Enterprise
    app](https://slackapp-enterprise.tightknit.ai/slack/install)**. On Slack's
    consent screen, select your **organization**, not an individual workspace.

    Under **Request workspaces to grant this app access to**, select your
    community's workspace. Slack labels this step as optional, but Tightknit
    cannot perform admin actions in the workspace without it.

    Only a Slack Org Owner or Org Admin can complete this installation.

    <Frame caption="Granting the Tightknit Enterprise app access to a Slack workspace">
      <img src="https://assets.tightknit.ai/images/Enterprise-slack-app-install.png" alt="Slack consent screen with an organization selected and a workspace entered under Request workspaces to grant this app access to" />
    </Frame>
  </Step>

  <Step title="Register your Slack admin account">
    Return to Studio and refresh the page. Under **Registered admin**, select your
    account and confirm the registration.

    You can register only your own account. It must be a Slack workspace or org
    admin or owner.
  </Step>

  <Step title="Configure invitation defaults (optional)">
    Choose **Default invite channels** or add an **Invitation message** if you want
    invitations to inherit them. Each invitation must use at least one channel,
    either from these defaults or from the invitation itself.

    Private channels can be used only when the registered Slack admin is a member
    of them.
  </Step>
</Steps>

## Use Slack admin operations

After installing the Enterprise app and registering an admin, Tightknit can perform the following Slack admin operation.

### Invite a member to Slack

In Studio, open **Members**, select **Create Member**, and choose **Invite user to the Slack workspace**. You can override the default invite channels and message before creating the member.

API clients can also invite a member by using the `invite_to_slack` option when creating a member through the Admin API.

## Troubleshooting

### The Slack Admin Operations section is missing

Confirm that your Slack workspace belongs to an Enterprise Grid organization and that your Studio role can manage Slack admin operations.

### The Tightknit Enterprise app is installed, but setup is incomplete

The app may be installed on the organization without access to your community's workspace. Install the app again and select the workspace under **Request workspaces to grant this app access to**.

If your Slack organization requires app approval, check **Integrations > Requests** in the Slack organization console.

### Your account cannot be registered

Confirm that you are registering your own account and that it is a Slack workspace or org admin or owner. If the authorization was revoked, install the Tightknit Enterprise app again before registering.


## Related topics

- [Launch Your Community Site](/guides/launch-your-site.md)
- [Slack Connect](/slack/slack-connect.md)
- [Security at Tightknit](/security/overview.md)
- [Add member](/api-reference/members/add-member.md)
- [Slack SSO with Auth0](/guides/slack-sso-external-idp.md)
