Defining user roles is a central part of configuring an app. Almost every app define these two roles:

  • owner: The individual who is responsible for the activity.
  • members: List of participants to be invited to activities.

There are a few specialized roles for more advanced apps:

  • reviewers: Allows you to have a review step for incoming activities.
  • admins: Administrators of an app, useful when creating private channels.
  • superusers: Used in approval workflows to limit access to certain attributes.
  • private: Controls access to the app’s source code.

In addition, there is one important role that’s always present in activities:

  • initiator: The individual who created the activity.

The initiator is a dynamic role and cannot be set in the code. You can access the initiator by using a macro. More about this below.

Default settings

The installer uses these default values (we have omitted the Slack identifiers):

  "owner": "@ymyname",
  "members": "#mychannel",

The person who installed the app will become the default owner. If you don’t set an owner, then the person who creates an activity will become the owner by default. You cannot have more than one owner; the owner must be a single individual.

If you leave out the members setting then nobody will be invited to participate, except the owner, and you will need to manually invite people to join the channel.

Member setting

Unlike the owner setting, there’s no limit to how many individual users, channels or user groups you can specify for the member setting.

Here is an example app for managing incidents, installed in the #incidents channel:

  "members": "#incidents, @escalation-team, @sarah"

Here we invite everyone from the #incidents channel, everyone in the @escalation-team usergroup, and @sarah to participate.

Reviewers setting

In some instances you may want to review and edit an incoming request before creating an activity channel and inviting team members.

Conclude lets you define one or more reviewers, who must first accept the activity before it is shared with the team. An incoming activity will be marked as pending until a reviewer has accepted (or rejected/deleted) it.

Pending activities appear in the reviewers' Conclude Home Dashboard and Activity pages, and in Conclude Inbox.

  "reviewers": "@paul, @sarah"

You can specify any number of individual users, channels and user groups, similar to the members and admins setting.

We recommend also setting alert_reviewers to send a special alert message that contains buttons that let reviewers view or accept a pending activity with a single click.

  "reviewers": "@paul, @sarah",
  "alert_reviewers": "#incoming-requests",

Admins

The admins setting is useful in Slack workspaces where regular users don’t have permission to create new channels. Conclude will then rely on the admins permissions to create an activity channel.

  "admins": "@slack-admins, @jim"

The admins setting is similar to members, where you can specify any number of individual users, channels and user groups. Admins are not invited to participate in activity, however.

Superusers

A superuser is someone who has authority to access protected attributes. The most common use case is for approvals, where only a superuser may approve a request. Like members and admins, superusers can be any number of users, channels and user groups.

The superuser setting itself does not change the behavior of the app, but improves the readability of the app, and gives you one place to define the people with special permissions.

Here we set @julie and @paul to be the superusers:

  "superusers": "@julie, @paul"

In order to limit access to the attribute that controls the decision, we will need to make it protected.

  "attributes": [
    ...
    {
      "protected": "${superusers}",
      "name": "decision",
      "type": "select",
      "label": "Decision",
      ...

The ${superusers} macro will expand to “@julie, @paul”. You may of course hard-code the superusers into the protected setting, but this creates apps that are harder to read and more difficult to maintain.

Private

The private setting restricts who can access the source code of the app. By default, any channel member can view and modify the source code of apps installed in their channels.

For example, members of the #approvals channel will have full access to the source code of an app installed in this channel. Using the example above, you can limit code access by adding a private setting:

  "private": "@julie, @paul"

Please note that the private setting must refer to individual users, and cannot contain Slack channels or user groups. To improve readability of an app, refer to the superusers setting.

  "superusers": "@julie, @paul",
  "private": "${superusers}",

When editing the private setting in the source code, the editor will automatically make sure you are included, otherwise you would accidentally lose access to the source code you’re editing.

Initiator

The initiator is a dynamic activity setting, and you can refer to it in the code by using a macro.

For example, if you want to invite the individual who submitted a bug report to the specific activity, you can do this:

  "members": "#bugs, ${initiator}"

This will automatically invite them to the activity channel, along with the members of the #bugs channel.

Supercharge your team!

Bridge the collaboration gap with Conclude apps.

Quickstart